Auteur(s): Louis Ouellet
Les systèmes de ticketing sont des outils précieux pour gérer les tâches, les problèmes ou les demandes d'assistance de manière organisée et efficace. Que vous gériez un service d'assistance ou que vous ayez simplement besoin d'un moyen pour suivre les problèmes internes, un système de ticketing fournit une méthode centralisée pour gérer la communication et résoudre les problèmes rapidement. Dans ce tutoriel, nous vous guiderons à travers la construction d'un système de ticketing simple en utilisant DokuWiki et le plugin Bureaucracy. Cette approche vous permet d'exploiter les capacités de gestion de contenu flexibles de DokuWiki tout en offrant un moyen facile aux utilisateurs de créer et de suivre les tickets.
À la fin de ce guide, vous disposerez d'un système de ticketing fonctionnel avec des pages pour créer, visualiser et gérer les tickets. Commençons !
Pour créer ce système de ticketing, nous utilisons les plugins suivants :
Il est important de mettre en place des Listes de Contrôle d'Accès (ACL) appropriées pour sécuriser le système de ticketing. Vous souhaitez que le formulaire de création de ticket soit accessible aux utilisateurs qui doivent soumettre des tickets. En même temps, les autres pages, comme les détails des tickets ou les modèles de gestion, ne doivent être accessibles qu'aux utilisateurs autorisés qui géreront les tickets.
Pour cela, nous allons :
bureaucracy
dans le Gestionnaire de Configuration.tickets
en utilisant le Gestionnaire ACL.Cette configuration garantira que les tickets peuvent être créés par les utilisateurs tout en empêchant l'accès non autorisé aux fonctionnalités de gestion des tickets.
Le système de ticketing est organisé en différentes pages et modèles qui remplissent des rôles spécifiques. Voici la structure du système :
tickets/ ├── start.txt (Ceci sert d'index principal) ├── labels.txt (Contient les libellés pour notre formulaire) ├── mail.txt (Contient le modèle d'email pour les tickets) ├── ticket.txt (Contient le modèle de page pour chaque ticket) └── new.txt (Contient le formulaire pour créer de nouveaux tickets)
Chaque fichier a un objectif spécifique, et nous les passerons en revue chacun en détail.
Le fichier start.txt est le point d'entrée de notre système de ticketing. Il fournit une liste des tickets classés par statut :
~~NOCACHE~~ ~~NOTOC~~ ====== Tickets ====== <block centeralign> <inline button>[[new|Nouveau Ticket]]</inline> <inline button>[[ticket|Modèle]]</inline> <inline button>[[mail|Email]]</inline> <inline button>[[labels|Libellés]]</inline> </block> ===== Ticket(s) le Plus Ancien ===== {{topic>.?ticket Ticket -priority -closed -solved -archived&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header&limit=5}} ===== Ticket(s) Critique(s) ===== {{topic>.?ticket Ticket -priority -closed -solved -archived +critical&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header}} ===== Ticket(s) Ouvert(s) ===== {{topic>.?ticket Ticket -priority -closed -solved -archived&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header}} ===== Ticket(s) Résolu(s) ===== {{topic>.?solved -priority -archived&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header}} ===== Ticket(s) Fermé(s) ===== {{topic>.?closed -priority -archived&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header}} ===== Ticket(s) Archivé(s) ===== {{topic>.?archived -priority&table&nodesc&sort&date&user&nolinkbacks&tags&noimage&header}}
Cette page agit comme le tableau de bord principal, permettant aux utilisateurs de voir les tickets organisés par statut, tels que Ouvert, Critique, Résolu, etc.
Le fichier labels.txt contient les étiquettes pour les champs du formulaire de notre système de ticketing, facilitant la gestion et la localisation du système :
====== Étiquettes ====== * contact = "Informations de contact" * issue = "Problème" * files = "Télécharger des images" * create = "Créez votre ticket" * full_name = "Nom complet" * email = "E-mail" * phone = "Téléphone" * priority = "Priorité" * subject = "Sujet" * description = "Description" * attachments = "Télécharger le(s) fichier(s)" * open = "Ouvrir le ticket"
Ces étiquettes sont utilisées dans tout le système pour assurer une cohérence dans l'interface utilisateur.
Le fichier new.txt contient le formulaire que les utilisateurs utiliseront pour créer un nouveau ticket :
====== Ouvrir un ticket ====== <form> Labels .:labels Action template .:tickets:ticket .:tickets:@@ticketid@@:index - Action mail mail@domain.com @@email@@ Usemailtemplate .:mail Subject "Ticket - @@ticketid@@ - @@priority@@ - @@subject@@" Thanks "Merci, Nous avons bien reçu votre ticket. Notre équipe de support examinera le problème et vous contactera dès que possible." Fieldset "Informations de contact" Textbox full_name Textbox email Textbox phone Fieldset "Problème" Select priority "Basse|Normale|Haute|Critique" Textbox subject Textarea description Yesno attachments Fieldset "Télécharger des images" attachments File file1 ..: ! File file2 ..: ! File file3 ..: ! File file4 ..: ! File file5 ..: ! Fieldset "Créez votre ticket" Hiddenautoinc ticketid Hidden created "=%Y-%m-%d %H:%M" Submit open </form>
Ce formulaire recueille des informations essentielles de l'utilisateur, telles que Nom complet, E-mail, Priorité et une description détaillée du problème.
Le fichier ticket.txt est utilisé pour générer une nouvelle page de ticket lorsqu'un utilisateur soumet le formulaire :
~~NOTOC~~ ====== @@ticketid@@ - @@subject@@ ====== {{tag>Ticket @@priority@@ %Y %B}} ---- <block float-right> {{tag-button>closed:error|Marquer comme fermé}} {{tag-button>solved:success|Marquer comme résolu}} {{tag-button>archived|Archiver}} </block> ===== Informations sur le ticket ===== | <barcode type="UPCA" scale="4" size="64px" value="@@ticketid@@" /> |||| ^ ID | @@ticketid@@ ^ Créé | @@created@@ | ^ Priorité | @@priority|@@ || ===== Informations de contact ===== ^ Nom | @@full_name|@@ | ^ E-mail | [[@@email|@@]] | ^ Numéro de téléphone | @@phone|@@ | ===== Galerie ===== {{gallery>.}} ===== Problème ===== <block box> @@description|@@ </block> ~~DISCUSSION|Notes~~
Ce modèle structure les informations pour chaque page de ticket individuel, facilitant le suivi et la gestion de chaque problème.
Le fichier mail.txt est utilisé pour générer un courriel de ticket lorsqu'un utilisateur soumet le formulaire :
====== Courriel ====== <code html> <style> main.site-main { box-sizing: border-box; color: rgb(101, 101, 101); display: block; font-family: Montserrat, sans-serif; font-size: 16px; line-height: 24px; overflow-wrap: break-word; text-align: left; text-size-adjust: 100%; unicode-bidi: isolate; } main.site-main .center { text-align: center; } main.site-main .header { margin-bottom: 64px; } main.site-main img { max-height: 256px; max-width: 256px; } main.site-main h1, main.site-main h2 { box-sizing: border-box; color: rgb(48, 48, 48); display: block; font-family: Montserrat, sans-serif; margin: 0 0 20px 0; padding: 0; text-align: left; overflow-wrap: break-word; unicode-bidi: isolate; } main.site-main h1 { font-size: 32px; line-height: 38.4px; } main.site-main h2 { font-size: 24px; line-height: 31.2px; } main.site-main hr { background-color: rgb(245, 245, 245); height: 5px; margin: 8px 0 20px; box-sizing: border-box; border: none; } main.site-main .level1, main.site-main .level2, main.site-main .table { box-sizing: border-box; color: rgb(101, 101, 101); font-family: Montserrat, sans-serif; font-size: 16px; line-height: 24px; display: block; margin: 0; padding: 0; overflow-wrap: break-word; text-align: left; text-size-adjust: 100%; unicode-bidi: isolate; } main.site-main .table { overflow-x: auto; margin-bottom: 20px; } main.site-main table { width: 100%; background-color: rgb(245, 245, 245); border-collapse: separate; box-sizing: border-box; font-family: Montserrat, sans-serif; font-size: 16px; line-height: 24px; } main.site-main table th, main.site-main table td { padding: 10px; border-bottom: 1px solid rgb(229, 229, 229); box-sizing: border-box; text-align: left; } main.site-main table th { font-weight: 700; background-color: rgb(229, 229, 229); } </style> <main class="site-main group" role="main"> <div class="center header"> <img src="https://laswitchtech.com/_media/logo.png" alt="logo"> <h1 class="center">LaswitchTech</h1> </div> <h1>Ticket - @@ticketid@@ - @@priority@@ - @@subject@@</h1> <div class="level1"><hr></div> <h2>Ticket Information</h2> <div class="level2"> <div class="table sectionedit1"> <table class="inline"> <tbody> <tr class="row0"> <th class="col0"> ID </th><td class="col1"> @@ticketid@@ </td><th class="col2"> Created </th><td class="col3"> @@created@@ </td> </tr> <tr class="row1"> <th class="col0"> Priority </th><td class="col1" colspan="2"> @@priority@@ </td><td class="col3"></td> </tr> </tbody> </table> </div> </div> <h2>Contact Information</h2> <div class="level2"> <div class="table sectionedit6"> <table class="inline"> <tbody> <tr class="row0"> <th class="col0"> Name </th><td class="col1"> @@full_name@@ </td> </tr> <tr class="row1"> <th class="col0"> Email </th><td class="col1"> @@email@@ </td> </tr> <tr class="row2"> <th class="col0"> Phone Number </th><td class="col1"> @@phone|@@ </td> </tr> </tbody> </table> </div> </div> <h2>Issue</h2> <div class="level2"> <div class="table sectionedit10"> <table class="inline"> <tbody> <tr class="row0"> <th class="col0"> Subject </th><td class="col1"> @@subject@@ </td> </tr> <tr class="row1"> <td class="col1" colspan="2"> @@description@@ </td> </tr> </tbody> </table> </div> </div> </main> </code> <code text> LaswitchTech Ticket - @@ticketid@@ - @@priority@@ ------------------------------------------------------------ Informations sur le ticket ------------------------------------------------------------ ID: @@ticketid@@ Créé: @@created@@ Priorité: @@priority@@ ------------------------------------------------------------ Informations de contact ------------------------------------------------------------ Nom: @@full_name@@ E-mail: @@email@@ Numéro de téléphone: @@phone|@@ ------------------------------------------------------------ Problème ------------------------------------------------------------ Sujet: @@subject@@ Description: @@description@@ </code>
Ce modèle structure les informations pour chaque ticket, notifiant les utilisateurs.
En suivant ce guide, vous avez mis en place un système de ticketing de base en utilisant DokuWiki et le plugin Bureaucracy. Ce système vous aidera à garder une trace des demandes, problèmes et tâches de manière organisée, facilitant la communication et la résolution. La flexibilité de DokuWiki en fait un excellent choix pour la mise en place rapide de tels outils internes.
N'hésitez pas à personnaliser les étiquettes, modèles et paramètres pour répondre à vos besoins spécifiques. La puissance de ce système de ticketing réside dans sa simplicité et son adaptabilité, ce qui en fait un choix parfait pour les petites équipes et projets.