HelpCenter & Base de Connaissances
Un système de support client complet avec gestion des tickets, routage par département, champs personnalisés et une Base de Connaissances intégrée : le tout dans un seul add-on Larapen.
Gestion des Tickets
Créez, suivez et résolvez les tickets de support avec des workflows de statut, des niveaux de priorité et un routage par département.
Support Invité & Authentifié
Permettez aux invités et aux utilisateurs authentifiés de soumettre des tickets. Les tickets invités utilisent le nom et l’email pour l’identification.
Base de Connaissances
Organisez les articles en collections avec recherche, votes d’utilité, temps de lecture et articles connexes.
Champs Personnalisés
Définissez des champs de formulaire dynamiques (texte, sélection, case à cocher, fichier, etc.) qui apparaissent sur le formulaire de création de ticket.
Assistant IA
Suggestions de réponses, résumés et traductions alimentés par l’IA via le SDK Laravel AI.
Export PDF
Téléchargez n’importe quelle conversation de ticket sous forme de document PDF formaté pour l’archivage ou le partage.
Cas d’utilisation
Bureau de Support Produit
Vous vendez des logiciels ou des produits numériques et avez besoin d’un système de support structuré.
- Créez des départements pour chaque ligne de produits (par ex. « Support Plugin », « Support Thème »).
- Ajoutez des champs personnalisés pour collecter la version du produit, l’URL ou la clé de licence lors de la création du ticket.
- Activez l’accès invité pour que les clients puissent soumettre des tickets sans s’inscrire.
- Utilisez l’assistant IA pour rédiger des réponses et accélérer les temps de réponse.
HelpDesk IT Interne
Votre entreprise a besoin d’un système de tickets interne pour les demandes de support informatique.
- Désactivez l’accès invité : seuls les employés authentifiés peuvent soumettre des tickets.
- Créez des départements : « Matériel », « Logiciel », « Réseau », « Accès & Permissions ».
- Utilisez les niveaux de priorité (Bas, Moyen, Élevé, Urgent) pour le suivi SLA.
- Construisez une Base de Connaissances avec des FAQ et des guides de dépannage pour réduire le volume de tickets.
Portail de Documentation en Libre-Service
Vous souhaitez un centre d’aide public avec des articles consultables organisés par sujet.
- Créez des collections KB pour les sujets principaux (Démarrage, Référence API, Facturation, etc.).
- Utilisez des collections imbriquées pour les sous-catégories.
- Activez les votes d’utilité pour que les utilisateurs puissent noter les articles.
- Liez le formulaire « Soumettre un Ticket » depuis les pages d’articles pour les problèmes non couverts par la documentation.
Prérequis
- Larapen CMS v1.0.0 ou ultérieur
- PHP 8.3+
- MySQL 8.0+
barryvdh/laravel-dompdf(pour l’export PDF)laravel/ai(pour les fonctionnalités de l’assistant IA ; optionnel mais recommandé)
.env (par ex. ANTHROPIC_API_KEY ou OPENAI_API_KEY).
Le reste de l’add-on fonctionne sans configuration IA.
Installation
Étape 1 : Placer l’Add-on
Copiez ou créez un lien symbolique du dossier helpcenter dans le répertoire "extensions/addons" de votre Larapen :
Étape 2 : Activer l’Add-on
Allez dans Admin → Add-ons → Add-ons Installés et activez HelpCenter & Base de Connaissances.
Étape 3 : Exécuter les Migrations
Cela crée 6 tables : helpcenter_departments, helpcenter_tickets,
helpcenter_replies, helpcenter_custom_fields,
helpcenter_custom_field_values, helpcenter_kb_collections,
et helpcenter_kb_articles.
Étape 4 : Définir les Permissions
L’add-on enregistre 21 permissions (voir Permissions). Assignez-les aux rôles administrateurs via Admin → Utilisateurs → Rôles & Permissions.
Étape 5 : Créer des Départements
Naviguez vers Admin → HelpCenter → Départements et créez au moins un département (par ex. « Support Général »). Les départements sont obligatoires : un ticket ne peut pas être soumis sans département.
Étape 6 : Configurer (Optionnel)
Vérifiez les paramètres dans Admin → HelpCenter → Paramètres. Voir Configuration pour toutes les options disponibles.
Configuration
Les paramètres sont gérés dans Admin → HelpCenter → Paramètres
(stockés dans la table settings, groupe helpcenter).
Les valeurs par défaut du fichier de configuration sont dans config/helpcenter.php.
Paramètres des Tickets
| Paramètre | Description | Par défaut |
|---|---|---|
helpcenter_guest_access |
Autoriser les utilisateurs non authentifiés à créer des tickets. | true |
helpcenter_items_per_page |
Nombre de tickets par page dans les listes. | 15 |
helpcenter_auto_close_days |
Fermer automatiquement les tickets résolus après N jours d’inactivité. Mettre à 0 pour désactiver. | 0 |
helpcenter_allow_customer_close |
Autoriser les clients à fermer leurs propres tickets depuis le portail front-end. | true |
helpcenter_allow_priority_selection |
Afficher le sélecteur de priorité sur le formulaire de création de ticket. | false |
helpcenter_allow_attachments |
Autoriser les pièces jointes sur les tickets et les réponses. | true |
helpcenter_max_attachment_size |
Taille maximale des pièces jointes en Ko. | 5120 (5 Mo) |
helpcenter_replies_order |
Ordre d’affichage des réponses : oldest_first ou newest_first. |
oldest_first |
helpcenter_response_time |
Temps de réponse attendu affiché aux clients. | 48 |
helpcenter_response_time_unit |
Unité du temps de réponse : minutes, hours, days, weeks. |
hours |
Paramètres de Notification
| Paramètre | Description | Par défaut |
|---|---|---|
helpcenter_notify_admin_on_new_ticket |
Envoyer une notification par email à tous les administrateurs lorsqu’un nouveau ticket est créé. | true |
helpcenter_notify_author_on_new_ticket |
Envoyer un email de confirmation à l’auteur du ticket après la soumission. | true |
helpcenter_notify_author_on_new_reply |
Notifier l’auteur du ticket lorsqu’un administrateur publie une réponse (les notes internes sont exclues). | true |
Paramètres de la Base de Connaissances
| Paramètre | Description | Par défaut |
|---|---|---|
kb_guest_access |
Autoriser les utilisateurs non authentifiés à parcourir la Base de Connaissances. | true |
kb_require_auth |
Exiger l’authentification pour accéder à la Base de Connaissances. | false |
kb_items_per_page |
Nombre d’articles par page. | 12 |
kb_show_search |
Afficher la barre de recherche sur la page d’index de la KB. | true |
kb_show_reading_time |
Afficher le temps de lecture estimé sur les articles (calculé à ~200 mots/min). | true |
kb_show_helpful_votes |
Afficher le vote « Cet article était-il utile ? » oui/non sur les articles. | true |
kb_show_related_articles |
Afficher les articles connexes de la même collection en bas des pages d’articles. | true |
Types de Pièces Jointes Autorisés
Les types de fichiers suivants sont acceptés pour les pièces jointes (configurés dans config/helpcenter.php) :
Admin : Tableau de Bord
Le Tableau de Bord (HelpCenter → Tableau de Bord) fournit une vue combinée de tous les tickets avec des statistiques.
Cartes de Statistiques
Compteurs agrégés affichés en haut :
- Total : tous les tickets dans le système
- Ouvert : tickets avec le statut
open - En Cours : tickets en cours de traitement
- En Attente : nombre combiné de
waiting_customeretwaiting_agent - Résolu : tickets marqués comme résolus
- Fermé : tickets définitivement fermés
Tableau des Tickets
Sous les cartes de statistiques, un tableau paginé et filtrable de tous les tickets affichant la référence, le sujet, le département, le badge de statut, le badge de priorité, le nom du demandeur et la date de dernière activité. Les filtres incluent le statut, la priorité, le département et la recherche en texte libre (recherche dans la référence, le sujet, le nom de l’invité et l’email de l’invité).
Admin : Tickets
Listes de Tickets Filtrées
La barre latérale fournit des vues de tickets pré-filtrées, chacune n’affichant que les tickets d’un groupe de statut spécifique :
| Lien de la Barre Latérale | Statuts Inclus |
|---|---|
| Ouvert | open |
| En Cours | in_progress, waiting_customer, waiting_agent |
| Résolu | resolved |
| Fermé | closed |
Chaque liste prend en charge des filtres supplémentaires pour la priorité, le département et la recherche.
Page de Détail du Ticket
La page de détail du ticket (HelpCenter → Tickets → {reference}) affiche :
- En-tête du ticket : numéro de référence, sujet, badge de statut, badge de priorité, département, informations du demandeur, date de création
- Contrôles Statut/Priorité/Département : sélecteurs déroulants en ligne pour changer le statut, la priorité ou le département (alimentés par AJAX, retournent des réponses JSON)
- Fil de conversation : toutes les réponses par ordre chronologique (configurable via
helpcenter_replies_order). Chaque réponse affiche le nom de l’auteur, le badge admin/client, l’horodatage, le texte du corps et les pièces jointes - Notes internes : notes réservées aux administrateurs, visibles uniquement par le personnel, stylées différemment des réponses clients
- Valeurs des champs personnalisés : les valeurs soumises pour tous les champs personnalisés du ticket
- Tickets récents : panneau latéral affichant jusqu’à 10 tickets récents du même client
- Achats Envato : si l’add-on Envato est actif et que le ticket a un utilisateur lié, affiche les achats Envato vérifiés de l’utilisateur
Répondre aux Tickets
Le formulaire de réponse en bas de la page de détail du ticket prend en charge :
- Corps de la réponse : zone de texte riche pour la réponse
- Bascule note interne : marque la réponse comme note interne uniquement (non envoyée au client, non visible sur le front-end)
- Pièces jointes : joindre des fichiers à la réponse
- Action de réponse : après l’envoi, choisir de : rester sur le ticket, aller à la liste des tickets, ou passer au ticket suivant
- Modifier/Supprimer les réponses : les administrateurs peuvent modifier le corps de n’importe quelle réponse ou supprimer des réponses entièrement (alimenté par AJAX)
Mises à Jour Automatiques du Statut lors de la Réponse
Lorsqu’une réponse est publiée sur un ticket ouvert :
- Réponse admin → le statut change automatiquement en
in_progress - Réponse client → le statut change automatiquement en
open - Les tickets fermés/résolus ne sont pas mis à jour automatiquement
Fusion & Export PDF
Fusion de Tickets
L’administrateur peut fusionner un ticket source dans un ticket cible via POST admin/helpcenter/tickets/{ticket}/merge.
Cette opération :
- Déplace toutes les réponses de la source vers le ticket cible
- Déplace les pièces jointes au niveau du ticket (relation morph) vers la cible
- Supprime les valeurs des champs personnalisés de la source (non transférables)
- Supprime l’enregistrement du ticket source
L’opération entière s’exécute à l’intérieur d’une transaction de base de données.
Export PDF
Cliquez sur le bouton Télécharger PDF sur n’importe quelle page de détail de ticket pour générer un PDF formaté contenant
l’en-tête du ticket, toutes les réponses et les métadonnées. Utilise barryvdh/laravel-dompdf.
Admin : Départements
Les départements organisent les tickets en groupes logiques (par ex. « Ventes », « Support Technique », « Facturation »). Gérés via HelpCenter → Départements.
Champs de Département
| Champ | Description |
|---|---|
| Nom (traduisible) | Nom d’affichage montré aux clients dans le sélecteur de département. |
| Slug (traduisible) | Identifiant adapté aux URL. |
| Description (traduisible) | Description optionnelle pour référence administrative. |
| Email de contact optionnel pour le département. | |
| Est Actif | Seuls les départements actifs apparaissent dans le formulaire de création de ticket. |
| Position | Ordre de tri dans les menus déroulants et les listes. |
La page de liste des départements affiche le nombre de tickets par département. Opérations CRUD standard : créer, modifier, supprimer.
Admin : Champs Personnalisés
Les champs personnalisés étendent le formulaire de création de ticket avec une collecte de données supplémentaire. Gérés via HelpCenter → Champs Personnalisés.
Types de Champs Supportés
| Type | Description | A des Options ? |
|---|---|---|
text |
Saisie de texte sur une seule ligne (max 255 caractères) | Non |
textarea |
Saisie de texte multi-lignes (max 5000 caractères) | Non |
select |
Sélection déroulante avec options prédéfinies | Oui |
checkbox |
Cases à cocher multiples (valeurs stockées en JSON) | Oui |
radio |
Boutons radio avec options prédéfinies | Oui |
number |
Saisie numérique | Non |
email |
Saisie d’adresse email avec validation de format | Non |
date |
Sélecteur de date | Non |
file |
Téléversement de fichier (stocké via MediaService) | Non |
Propriétés des Champs Personnalisés
| Champ | Description |
|---|---|
| Libellé (traduisible) | Libellé d’affichage montré à l’utilisateur. |
| Nom | Identifiant interne (utilisé comme nom de champ de formulaire). |
| Type | Un des 9 types supportés ci-dessus. |
| Options | Tableau de valeurs valides (uniquement pour les types select, checkbox, radio). |
| Texte indicatif (traduisible) | Texte indicatif pour la saisie. |
| Est Requis | Si le champ est obligatoire lors de la création du ticket. |
| Est Actif | Seuls les champs actifs sont affichés sur le formulaire. |
| Position | Ordre de tri sur le formulaire. |
Validation Dynamique
La méthode CustomFieldService::buildValidationRules() génère automatiquement les règles de validation Laravel
à partir des définitions de champs personnalisés actifs. Les règles sont adaptées au type (par ex. le type email ajoute la validation email,
select/radio valident par rapport aux options définies, file valide les limites de taille).
Admin : Base de Connaissances
Collections KB
Les collections regroupent les articles en catégories. Gérées via HelpCenter → Collections KB.
- Imbricable : les collections supportent une hiérarchie parent/enfant (via
parent_id). - Traduisible : le nom, le slug et la description supportent plusieurs langues.
- Icône : classe d’icône Bootstrap optionnelle (par ex.
bi-book) affichée sur le front-end. - Actif/Inactif : seules les collections actives sont affichées sur le front-end.
- Position : contrôle l’ordre de tri.
Articles KB
Les articles sont des documents à contenu riche au sein des collections. Gérés via HelpCenter → Articles KB.
Champs des Articles
| Champ | Description |
|---|---|
| Titre (traduisible) | Titre de l’article affiché dans les listes et comme en-tête de page. |
| Slug (traduisible) | Identifiant adapté aux URL, traduisible pour chaque langue. |
| Contenu (traduisible) | Corps complet de l’article (contenu HTML). |
| Extrait (traduisible) | Résumé court affiché dans les listes d’articles. |
| Titre Méta / Description Méta (traduisible) | Remplacements des métadonnées SEO. |
| Collection | À quelle collection KB cet article appartient. |
| Statut | draft, published ou archived. |
| Visibilité | public (visible par tous) ou auth_only (connexion requise). |
| Position | Ordre de tri au sein de la collection. |
Propriétés Calculées
- Temps de lecture : calculé à partir du nombre de mots à ~200 mots par minute.
- Pourcentage d’utilité : ratio des votes positifs sur le total des votes (null si aucun vote).
- Compteur de vues : incrémenté chaque fois que l’article est consulté sur le front-end.
Liste des Articles
La liste d’articles admin est paginée et filtrable par statut, collection et terme de recherche. Colonnes : titre, collection, badge de statut, visibilité, compteur de vues, position.
Paramètres KB
Une page de paramètres séparée à HelpCenter → Paramètres KB contrôle les options d’affichage de la Base de Connaissances (voir Configuration : Paramètres de la Base de Connaissances).
Admin : Paramètres
La page des paramètres (HelpCenter → Paramètres) est organisée en sections :
Configuration des Tickets
- Bascule d’accès invité
- Éléments par page
- Jours de fermeture automatique
- Bascule d’autorisation de fermeture par le client
- Bascule d’autorisation de sélection de priorité
- Bascule d’autorisation des pièces jointes + taille maximale
- Ordre des réponses (plus anciennes d’abord / plus récentes d’abord)
- Bascule CAPTCHA (s’intègre avec le CaptchaService du noyau)
- Temps de réponse et unité
Configuration des Notifications
- Notifier les administrateurs lors d’un nouveau ticket
- Envoyer une confirmation à l’auteur du ticket
- Notifier l’auteur lors d’une nouvelle réponse
Configuration de la Base de Connaissances
- Accès invité / authentification requise
- Éléments par page
- Afficher la recherche / temps de lecture / votes d’utilité / articles connexes
Admin : Assistant IA
L’assistant IA est disponible sur la page de détail du ticket et fournit des actions IA contextuelles alimentées par le SDK Laravel AI.
Actions Disponibles
| Action | Description |
|---|---|
suggest_reply |
Générer une réponse professionnelle à un seul message client. |
suggest_reply_conversation |
Générer une réponse basée sur l’historique complet de la conversation du ticket. Le message actuel
est marqué avec [CURRENT MESSAGE] pour que l’IA se concentre dessus. |
suggest_reply_articles |
Générer une réponse référençant des articles pertinents de la Base de Connaissances. Jusqu’à 5 articles sont recherchés par correspondance de mots-clés et nombre de vues. |
summarize |
Résumer les points clés d’un message client. |
translate_english |
Traduire le message en anglais. |
translate_french |
Traduire le message en français. |
make_shorter |
Condenser un message tout en préservant son sens. |
custom_prompt |
Traiter le texte avec une instruction personnalisée fournie par l’administrateur. |
Configuration de l’Agent
Le TicketAiAssistantAgent est configuré avec :
Temperature(0.7): équilibre entre créativité et précisionMaxTokens(4096): permet des réponses détaillées- Le modèle IA est lu depuis
setting('ai_default_model')ou retombe sur le modèle par défaut du fournisseur
admin/helpcenter/ai-assistant/generate
Corps de la Requête
action |
Requis | Une des actions listées ci-dessus |
text |
Requis | Le texte du message à traiter |
ticket_id |
Optionnel | Requis pour suggest_reply_conversation |
options |
Optionnel | Tableau avec : avoidMarkdown, avoidEmDash, customPrompt |
Réponse (JSON)
Front-end : Portail des Tickets
Routes
| Méthode | URL | Nom de Route | Auth ? | Description |
|---|---|---|---|---|
| GET | /{locale}/help/tickets/new |
helpcenter.create.localized |
Invité* | Formulaire de création de ticket |
| POST | /{locale}/help/tickets |
helpcenter.store.localized |
Invité* | Soumettre un nouveau ticket |
| GET | /{locale}/help/tickets/confirmation/{reference} |
helpcenter.confirmation.localized |
Invité* | Page de confirmation du ticket |
| GET | /{locale}/help/tickets |
helpcenter.tickets.localized |
Oui | Liste de mes tickets |
| GET | /{locale}/help/tickets/{reference} |
helpcenter.show.localized |
Oui | Voir le détail du ticket & la conversation |
| POST | /{locale}/help/tickets/{reference}/reply |
helpcenter.reply.localized |
Oui | Publier une réponse client |
| POST | /{locale}/help/tickets/{reference}/close |
helpcenter.close.localized |
Oui | Fermer un ticket |
* L’accès invité dépend du paramètre helpcenter_guest_access.
Des variantes non localisées (sans {locale}) sont également enregistrées.
Formulaire de Création de Ticket
Le formulaire de création comprend :
- Sujet : champ texte requis (max 255 caractères)
- Département : menu déroulant requis des départements actifs
- Message : zone de texte requise (max 10 000 caractères)
- Priorité : menu déroulant optionnel (affiché uniquement si
helpcenter_allow_priority_selectionest activé) - Champs invité : champs nom et email (affichés uniquement pour les utilisateurs non authentifiés)
- Champs personnalisés : tous les champs personnalisés actifs sont rendus dynamiquement
- Pièces jointes : téléversement de fichiers (jusqu’à 5 fichiers, si les pièces jointes sont activées)
- CAPTCHA : affiché si activé via
helpcenter_captcha_enabled
Numéros de Référence des Tickets
Chaque ticket reçoit un numéro de référence unique au format HD-00001, généré automatiquement par le
TicketObserver lors de la création. Les références sont séquentielles et complétées par des zéros sur 5 chiffres.
Vue Client du Ticket
La page de détail du ticket côté front-end affiche :
- En-tête du ticket (référence, sujet, statut, priorité, département)
- Fil de conversation : les notes internes sont filtrées (non visibles pour les clients)
- Formulaire de réponse pour publier des messages supplémentaires
- Bouton de fermeture (si
helpcenter_allow_customer_closeest activé et le ticket n’est pas déjà fermé) - Valeurs des champs personnalisés
Contrôle d’Accès
- Les utilisateurs authentifiés ne peuvent voir que leurs propres tickets (correspondance
user_id) - Les administrateurs peuvent voir tous les tickets
- Les tickets fermés ne peuvent pas recevoir de nouvelles réponses
Front-end : Base de Connaissances
Routes
| Méthode | URL | Nom de Route | Description |
|---|---|---|---|
| GET | /{locale}/help |
kb.index.localized |
Accueil KB : collections, articles populaires & récents, recherche |
| GET | /{locale}/help/{slug} |
kb.collection.localized |
Page de collection : articles de la collection + collections enfants |
| GET | /{locale}/help/article/{slug} |
kb.show.localized |
Page d’article : contenu complet + articles connexes + vote |
| POST | /{locale}/help/vote/{id} |
kb.vote.localized |
Voter pour un article comme utile/non utile (AJAX) |
Des variantes non localisées (sans {locale}) sont également enregistrées.
Page d’Index KB
- Barre de recherche : recherche en texte intégral dans les titres d’articles, le contenu et les extraits (si
kb_show_searchest activé) - Grille de collections : collections de niveau racine avec le nombre d’articles
- Articles populaires : top 5 des articles par nombre de vues
- Articles récents : 5 articles les plus récemment publiés
Page de Collection
- Nom de la collection, description et icône
- Liste paginée des articles publiés dans la collection
- Collections enfants (le cas échéant)
Page d’Article
- Contenu complet de l’article avec estimation du temps de lecture
- Votes d’utilité (boutons « Cet article était-il utile ? » oui/non, alimentés par AJAX)
- Articles connexes de la même collection
- Métadonnées SEO (titre méta / description méta depuis les champs de l’article ou générés automatiquement)
Visibilité & Accès
- Les articles Publics sont visibles par tous
- Les articles Auth Uniquement sont visibles uniquement par les utilisateurs authentifiés
- Si
kb_require_authest activé, l’ensemble de la KB nécessite une authentification
Intégration de l’Add-on Envato
Lorsque l’add-on Intégration Envato Market est actif, le HelpCenter s’intègre avec celui-ci pour le contrôle d’accès basé sur les achats.
Restriction par Département
Lorsque envato_helpcenter_require_purchase est activé :
- Le formulaire de création de ticket filtre la liste des départements pour n’afficher que ceux auxquels l’utilisateur a accès par achat.
- L’accès est déterminé par
EnvatoPurchaseValidator::getAccessibleEntityIds()en utilisanthelpcenter_departmentcomme type lié. - Les départements sans éléments Envato liés restent sans restriction.
Restriction par Collection KB
Lorsque envato_kb_restrict_by_purchase est activé :
- Les pages d’articles vérifient si la collection de l’article a des éléments Envato liés.
- Les non-acheteurs voient une page « Achat Requis » avec la liste des éléments requis.
- Les utilisateurs non authentifiés sont redirigés vers la page de connexion.
Contexte du Détail du Ticket
La page de détail du ticket côté admin affiche les achats Envato vérifiés du client dans un panneau latéral (si l’utilisateur a un compte lié), donnant aux agents un contexte immédiat sur les produits que le client possède.
Notifications
L’add-on envoie trois types de notifications par email :
| Notification | Destinataire | Déclencheur | Paramètre |
|---|---|---|---|
NewTicketAdminNotification |
Tous les administrateurs | Nouveau ticket créé | helpcenter_notify_admin_on_new_ticket |
TicketConfirmationNotification |
Auteur du ticket | Nouveau ticket créé | helpcenter_notify_author_on_new_ticket |
NewReplyNotification |
Auteur du ticket | Un administrateur publie une réponse (pas les notes internes) | helpcenter_notify_author_on_new_reply |
Notification::route('mail', $email) (routage de notification à la demande).
Mise à Jour
Étape 1 : Remplacer les Fichiers
Remplacez le répertoire de l’add-on par la nouvelle version.
Étape 2 : Exécuter les Migrations
Étape 3 : Vider les Caches
Étape 4 : Vérifier
Visitez HelpCenter → Tableau de Bord et confirmez que la liste des tickets se charge correctement. Vérifiez la page front-end de la Base de Connaissances pour confirmer que les articles sont affichés.
Dépannage
Le formulaire de création de ticket n’affiche aucun département
- Assurez-vous qu’au moins un département existe et est marqué comme actif.
- Si l’add-on Envato est actif avec
envato_helpcenter_require_purchaseactivé, l’utilisateur doit avoir un achat vérifié pour un produit lié à ce département.
Les utilisateurs invités ne peuvent pas soumettre de tickets
- Vérifiez que
helpcenter_guest_accessest défini àtruedans les paramètres. - Le paramètre est par défaut à
truemais peut avoir été désactivé dans le panneau d’administration.
Les champs personnalisés n’apparaissent pas sur le formulaire de ticket
- Assurez-vous que le champ personnalisé est marqué comme actif.
- Vérifiez que le type du champ est défini correctement.
- Pour les champs select/checkbox/radio, assurez-vous que le tableau options est rempli.
Les notifications ne sont pas envoyées
- Vérifiez que le paramètre de notification correspondant est activé (par ex.
helpcenter_notify_admin_on_new_ticket). - Vérifiez que votre configuration mail dans
.env(SMTP, Mailgun, etc.) est correcte. - Vérifiez la table
failed_jobspour les échecs de notifications en file d’attente. - Pour les tickets invités, assurez-vous que l’adresse email de l’invité est valide.
L’Assistant IA retourne des erreurs
- Assurez-vous qu’au moins une clé API de fournisseur IA est configurée dans
.env(par ex.ANTHROPIC_API_KEY,OPENAI_API_KEY). - Vérifiez
config/ai.phppour la configuration du fournisseur par défaut. - Vérifiez que le package
laravel/aiest installé (composer show laravel/ai). - Vérifiez les journaux du serveur pour les messages d’erreur détaillés du fournisseur IA.
Les articles KB ne s’affichent pas sur le front-end
- Assurez-vous que les articles ont le statut défini à
publishedet que published_at est dans le passé. - Vérifiez la visibilité : les articles
auth_onlysont cachés pour les invités. - Si
kb_require_authest activé, les utilisateurs non authentifiés sont redirigés vers la connexion. - Assurez-vous que la collection de l’article est marquée comme active.
L’export PDF échoue
- Assurez-vous que le package
barryvdh/laravel-dompdfest installé. - Vérifiez que le répertoire
storage/appest accessible en écriture par le serveur web. - Si le contenu du ticket contient des images externes, assurez-vous que
isRemoteEnabledest à true (c’est le cas par défaut).
La fusion de tickets échoue
- Vous ne pouvez pas fusionner un ticket avec lui-même : la source et la cible doivent être des tickets différents.
- Assurez-vous d’avoir la permission
helpcenter.tickets.edit. - Vérifiez les journaux du serveur pour les erreurs de transaction de base de données.
Les votes d’utilité ne fonctionnent pas
- Assurez-vous que
kb_show_helpful_votesest activé dans les paramètres KB. - Le point de terminaison de vote (
POST /help/vote/{id}) retourne du JSON : vérifiez que le JavaScript gère correctement l’appel AJAX. - Vérifiez la console du navigateur pour les erreurs réseau.
La restriction d’accès par achat Envato ne fonctionne pas
- Assurez-vous que l’add-on Intégration Envato Market est installé et actif.
- Activez
envato_helpcenter_require_purchasedans les paramètres Envato. - Liez au moins un élément Envato au département ou à la collection KB que vous souhaitez restreindre. Les entités sans éléments liés sont toujours sans restriction.