Aller au contenu principal

Omnicanal et Canaux

PulseChat peut agir comme une bo\u00eete de r\u00e9ception omnicanale pour les plateformes de messagerie externes comme WhatsApp, Telegram, Email, SMS, Slack, Viber, etc. Cette page explique comment les canaux fonctionnent, comment les configurer et comment le personnel interagit avec eux.


1. Concepts

  • Canal -- une connexion configur\u00e9e vers un service externe (ex. un num\u00e9ro WhatsApp Business, un bot Telegram, une bo\u00eete mail IMAP).
  • Conversation de canal -- un fil avec un contact externe (ex. un chat WhatsApp avec un client).
  • Contact externe -- enregistrement unifi\u00e9 repr\u00e9sentant la partie externe (t\u00e9l\u00e9phone, email, etc.), mapp\u00e9 aux clients/contacts/leads CRM lorsque possible.

Tables principales (cr\u00e9\u00e9es dans 122_version_122.php) :

  • pc_channels -- configurations des canaux (type, nom, config chiffr\u00e9e).
  • pc_external_contacts -- identit\u00e9s de contacts externes de haut niveau.
  • pc_contact_identities -- identifiants sp\u00e9cifiques (t\u00e9l\u00e9phone, email, PSID, chat_id, etc.).
  • pc_automation_rules -- r\u00e8gles de routage et d'automatisation.

2. Activer l'Omnicanal

  1. En tant qu'administrateur, allez dans les Param\u00e8tres PulseChat.
  2. Activez :
    • Activer les Canaux Omnicanaux
      • Option : pulsechat_channels_enabled
  3. Sauvegardez.
  4. Dans l'interface de chat, un onglet Canaux appara\u00eetra dans la barre lat\u00e9rale.

3. Configurer les Canaux

Dans l'interface de chat :

  1. Cliquez sur l'onglet Canaux.
  2. Cliquez sur l'ic\u00f4ne d'engrenage dans la barre de filtres des Canaux (Param\u00e8tres des Canaux).
  3. Cela ouvre le modal Param\u00e8tres des Canaux, o\u00f9 vous pouvez :
    • Cr\u00e9er de nouveaux canaux.
    • Modifier les canaux existants.
    • Tester et sauvegarder la configuration.

Chaque type de canal a ses propres champs de configuration et exigences, impl\u00e9ment\u00e9s via des classes d'adaptateurs dans libraries/channels/ :

  • WhatsappAdapter.php
  • TelegramAdapter.php
  • EmailAdapter.php
  • (et d'autres comme SMS, Slack, Viber, etc.)

L'interface d'administration des canaux est pilot\u00e9e par :

  • controllers/Pulsechat_Channels.php
  • assets/js/pulsechat-channels.js
remarque

De nombreux fournisseurs de canaux n\u00e9cessitent des webhooks (ex. Telegram, WhatsApp Cloud API) et/ou une interrogation p\u00e9riodique (ex. Email via IMAP). Assurez-vous de configurer l'URL du webhook de votre fournisseur ou les identifiants IMAP comme indiqu\u00e9 dans l'interface Param\u00e8tres des Canaux.


4. Types de Canaux Support\u00e9s

La migration de base (122_version_122.php) d\u00e9clare ces types :

  • whatsapp
  • telegram
  • messenger
  • instagram
  • email
  • sms
  • slack
  • viber

Diff\u00e9rents adaptateurs peuvent \u00eatre pr\u00e9sents ou ajout\u00e9s au fil du temps. V\u00e9rifiez libraries/channels/ pour les adaptateurs disponibles dans votre version.


5. Flux Entrant (Haut Niveau)

  1. Un message externe arrive :

    • Via webhook (ex. WhatsApp/Telegram via modules/pulsechat/webhook.php ou controllers/webhooks/ChannelWebhook.php).
    • Via interrogation (ex. Email IMAP via pulsechat_cron_email_poll).
  2. ChannelManager :

    • libraries/channels/ChannelManager.php re\u00e7oit la charge entrante.
    • Valide les limites de d\u00e9bit, d\u00e9code le message et normalise les m\u00e9tadonn\u00e9es.
  3. Correspondance de contact :

    • libraries/ContactMatcher.php tente de mapper l'identifiant entrant (\u00e9l\u00e9phone, email, PSID, etc.) \u00e0 un :
      • Contact externe existant (pc_external_contacts),
      • Contact / client CRM (tblcontacts / tblclients),
      • Lead (tblleads),
      • ou cr\u00e9e un nouvel enregistrement de contact externe.
  4. Routage de conversation :

    • pc_conversations contient les conversations omnicanales (type channel).
    • Les r\u00e8gles d'automatisation (pc_automation_rules) peuvent \u00eatre appliqu\u00e9es pour :
      • Auto-assigner au personnel / \u00e9quipe.
      • D\u00e9finir le statut, la priorit\u00e9, les tags.
      • D\u00e9clencher des actions (r\u00e9ponse automatique, cr\u00e9ation de ticket, r\u00e9ponse IA, etc.).
  5. Cr\u00e9ation du message :

    • Une ligne de message est ins\u00e9r\u00e9e dans pc_messages avec :
      • channel_id, channel_type, channel_conversation_id externe.
      • Direction (inbound), statut, \u00e9tat de livraison.
  6. Mise \u00e0 jour de l'interface :

    • La liste des conversations de canal est rafra\u00eechie dans pulsechat-channels.js.
    • L'agent actif voit la nouvelle conversation et peut r\u00e9pondre depuis PulseChat.

6. Flux Sortant (Haut Niveau)

Lorsqu'un agent r\u00e9pond dans une conversation de canal :

  1. pulsechat-channels.js appelle :

    • config.channelSendMessageUrl via admin/pulsechat/channel_api/send_channel_message
  2. Pulsechat_Channels::send_channel_message() :

    • Valide les permissions.
    • Persiste le message dans pc_messages en tant que outbound.
  3. ChannelManager :

    • Utilise l'adaptateur appropri\u00e9 (WhatsappAdapter, TelegramAdapter, EmailAdapter, etc.) pour envoyer le message \u00e0 la plateforme externe.
    • Met \u00e0 jour delivery_status (queued, sent, delivered, read, failed) et les messages d'erreur le cas \u00e9ch\u00e9ant.
  4. Retour dans l'interface :

    • Le message appara\u00eet dans la conversation avec un indicateur de statut.
    • Les erreurs (ex. token invalide, probl\u00e8mes r\u00e9seau) sont affich\u00e9es dans l'interface, souvent avec des indications (ex. \u00ab mettez \u00e0 jour votre token WhatsApp dans les param\u00e8tres du canal \u00bb).

7. Notes Sp\u00e9cifiques par Canal

7.1 WhatsApp

  • Adaptateur : libraries/channels/WhatsappAdapter.php
  • N\u00e9cessite :
    • Token d'Acc\u00e8s Permanent de Meta (token Utilisateur Syst\u00e8me avec permission whatsapp_business_messaging).
    • ID du num\u00e9ro de t\u00e9l\u00e9phone et d\u00e9tails du compte WhatsApp Business.
  • Interface :
    • Le formulaire de configuration du canal affiche des champs comme token d'acc\u00e8s, ID du t\u00e9l\u00e9phone, token de v\u00e9rification du webhook, etc.
    • Les erreurs de WhatsApp (ex. \u00ab La session a expir\u00e9 \u00bb) sont captur\u00e9es et affich\u00e9es \u00e0 l'agent avec des indications de rem\u00e9diation.

7.2 Telegram

  • Adaptateur : libraries/channels/TelegramAdapter.php
  • N\u00e9cessite :
    • Token du bot de BotFather.
  • Utilise des webhooks :
    • Vous devez configurer Telegram avec l'URL du webhook affich\u00e9e dans les Param\u00e8tres des Canaux.
    • La v\u00e9rification de signature est g\u00e9r\u00e9e dans l'adaptateur.

7.3 Email

  • Adaptateur : libraries/channels/EmailAdapter.php
  • Utilise l'interrogation IMAP et SMTP :
    • IMAP : r\u00e9cup\u00e9ration du courrier entrant depuis une bo\u00eete.
    • SMTP : envoi de r\u00e9ponses (ou recours au SMTP par d\u00e9faut de Perfex si non configur\u00e9).
  • Interrogation :
    • Impl\u00e9ment\u00e9e via pulsechat_cron_email_poll() dans pulsechat.php.
    • Accroch\u00e9e au after_cron_run de Perfex.
  • TLS/OAuth :
    • L'adaptateur email supporte les connexions bas\u00e9es sur OAuth ou mot de passe d'application selon le fournisseur et la configuration.

8. R\u00e8gles d'Automatisation

En mode omnicanal, vous pouvez d\u00e9finir des R\u00e8gles d'Automatisation pour le routage et les actions.

  • Stock\u00e9es dans pc_automation_rules.
  • Configurables via l'interface omnicanale (section R\u00e8gles d'Automatisation).
  • Les actions peuvent inclure :
    • Assigner au personnel / \u00e9quipe.
    • D\u00e9finir le statut / la priorit\u00e9.
    • Ajouter des tags.
    • Envoyer des r\u00e9ponses pr\u00e9d\u00e9finies.
    • Cr\u00e9er des tickets.
    • D\u00e9clencher une R\u00e9ponse IA (s'int\u00e8gre avec l'assistant IA pour des r\u00e9ponses enti\u00e8rement automatiques).

Ces r\u00e8gles vous permettent de construire des flux de travail avanc\u00e9s comme :

  • \u00ab Si le message vient de WhatsApp au num\u00e9ro \u2018Ventes\u2019, assigner \u00e0 l'\u00e9quipe Ventes et tagger comme whatsapp-lead. \u00bb
  • \u00ab Si le canal est Email et le sujet contient \u2018support\u2019, cr\u00e9er automatiquement un ticket et marquer la conversation comme pending. \u00bb

9. Interface de l'Onglet Canaux

Dans l'onglet Canaux, les agents voient :

  • Une barre de filtres :

    • Filtre de statut (Ouvert, En attente, R\u00e9solu, Ferm\u00e9).
    • Filtre de priorit\u00e9 (Basse, Normale, Haute, Urgente).
    • Filtre de type de canal (WhatsApp, Telegram, Email, etc.).
    • Bouton Param\u00e8tres des Canaux (engrenage).
  • Une liste de conversations de canal :

    • Chaque ligne affiche :
      • Nom du contact externe.
      • Ic\u00f4ne / type de canal.
      • Aper\u00e7u du dernier message.
      • Statut, priorit\u00e9, nombre de non lus.
  • En s\u00e9lectionnant une conversation :

    • Elle s'ouvre dans le panneau central du chat.
    • Le panneau de d\u00e9tails affiche le contexte CRM du contact (client/contact/lead li\u00e9 si trouv\u00e9).

10. Meilleures Pratiques

  • Toujours tester un canal apr\u00e8s l'avoir configur\u00e9 :

    • Utilisez un t\u00e9l\u00e9phone/email de test.
    • V\u00e9rifiez que les messages entrants et sortants fonctionnent et que les statuts se mettent \u00e0 jour.
  • Utilisez les R\u00e8gles d'Automatisation pour :

    • Assigner automatiquement les nouvelles conversations \u00e0 la bonne \u00e9quipe.
    • Tagger et prioriser par canal et contenu.
  • Gardez les identifiants \u00e0 jour :

    • Les tokens et mots de passe d'application expirent souvent.
    • Lorsque vous voyez des \u00e9checs d'envoi r\u00e9p\u00e9t\u00e9s, v\u00e9rifiez les Param\u00e8tres des Canaux et les tableaux de bord du fournisseur.
  • Pour les canaux email :

    • Assurez-vous que le cron de Perfex est configur\u00e9 et s'ex\u00e9cute r\u00e9guli\u00e8rement, sinon les emails entrants ne seront pas r\u00e9cup\u00e9r\u00e9s.

Si un canal sp\u00e9cifique pose probl\u00e8me, consultez D\u00e9pannage et FAQ pour des v\u00e9rifications cibl\u00e9es.