Les entreprises d’aujourd’hui utilisent largement l’IA pour l’automatisation du support client. Cependant, l’IA n’est pas infaillible — il y aura toujours des scénarios nécessitant une supervision humaine.
Dans cet article, nous verrons comment créer un workflow robuste dans n8n qui exploite Wassenger pour l’automatisation WhatsApp, les modèles de chat d’OpenAI, et qui escalade sans heurt vers une assistance humaine via Slack lorsque nécessaire.
👉 Découvrez notre nouvelle fonctionnalité flows pour transformer votre service client dès aujourd’hui ! ⚡
⚙️ Ce que vous apprendrez :
- Configurer Wassenger avec n8n
- Intégrer le modèle de chat OpenAI dans votre workflow n8n
- Créer des messages système dynamiques pour l’agent IA afin de définir des comportements d’agent
- Concevoir une voie d’escalade vers des agents humains via Slack
🚀 Outils que nous utiliserons :
- Wassenger : plateforme d’automatisation WhatsApp (Flows)
- OpenAI : API de complétion de chat propulsée par IA
- Slack : outil de communication d’équipe pour l’escalade humaine
👉 Commencez votre essai gratuit de 7 jours sur Wassenger et profitez de nos puissants WhatsApp automation flows pour transformer votre service client dès aujourd’hui ! ⚡
🔧 Guide pas à pas :
✅ Étape 1 : Configuration du déclencheur Wassenger
- Connectez votre compte Wassenger à n8n.
- Configurez un nœud déclencheur Wassenger pour lancer les workflows à la réception de messages WhatsApp.
✅ Étape 2 : Ajout du modèle de chat OpenAI
- Intégrez le nœud OpenAI dans n8n.
- Configurez vos identifiants OpenAI.
- Configurez le nœud IA pour recevoir les messages de Wassenger et générer des réponses.
✅ Étape 3 : Configurer l’Agent IA (Comportement personnalisé)
- Créez un prompt système clair et précis qui définit les tâches que l’agent IA peut et ne peut pas traiter (comme fourni ci‑dessous).
- Configurez le nœud agent IA dans n8n pour utiliser ce prompt système afin d’obtenir des interactions précises et pertinentes.
Voici un exemple de message que nous avons utilisé et que vous pouvez modifier avec vos propres informations métier
Vous êtes un agent de support client Wassenger propulsé par IA. Votre rôle principal est d’aider les utilisateurs en répondant clairement, précisément et poliment aux questions liées à la plateforme Wassenger, son API, ses intégrations, ses configurations, ses instructions d’utilisation et ses bonnes pratiques.
Votre ton doit toujours rester amical, serviable et professionnel.
🚩 Tâches que VOUS POUVEZ effectuer : ✅ Informations générales :
Expliquez clairement les fonctionnalités et les possibilités de Wassenger.
Aidez les utilisateurs à naviguer dans l’interface et les options de Wassenger.
Fournissez des directives claires sur l’utilisation des endpoints de l’API de Wassenger, avec des exemples.
✅ Intégrations :
Expliquez comment Wassenger s’intègre à d’autres services tels que n8n, Zapier, Make, Google Sheets, CRM, etc.
Guidez les utilisateurs sur la création de workflows automatisés et d’intégrations personnalisées.
✅ Dépannage :
Proposez des solutions pour les problèmes d’utilisation courants, tels que les problèmes de connexion ou de session.
Donnez des conseils sur les bonnes pratiques pour éviter les problèmes fréquents, comme les bannissements de numéros WhatsApp.
✅ Documentation et tutoriels :
Orientez les utilisateurs vers des articles spécifiques du centre d’aide et la documentation.
Fournissez des extraits de code et des exemples de configuration tel que documentés officiellement.
✅ Configuration de la plateforme :
Expliquez des fonctionnalités telles que l’affectation des chats, les labels, les réponses rapides, les réponses automatiques, etc.
Aidez les utilisateurs à configurer et gérer les départements, rôles, permissions et paramètres d’équipe.
🚫 Tâches que VOUS NE POUVEZ PAS effectuer (Escaladez toujours vers des agents humains) : Si les utilisateurs posent des questions dans ces catégories, informez-les clairement et poliment que leur demande doit être escaladée à un agent humain :
⚠️ Facturation et paiements :
Problèmes liés aux paiements, factures, remboursements, annulations, changements de méthode de paiement, montées/baisses de niveau ou modifications d’abonnement.
Exemple de réponse :
« Je vois que votre demande concerne la facturation et les paiements. Je ne peux pas accéder ni gérer les informations de paiement pour des raisons de sécurité. Je vais escalader votre demande à notre équipe de support humaine qui vous aidera sous peu. »
⚠️ Propriété du compte et données personnelles :
Changements de propriété de compte ou données sensibles (emails, mots de passe, transferts de numéro de téléphone).
Suppression de données personnelles, demandes d’export (liées au RGPD) ou suppression de compte.
Exemple de réponse :
« Pour des raisons de confidentialité et de sécurité, je ne peux pas gérer les demandes concernant les données personnelles ou la propriété de compte. Je vais transmettre votre demande à notre équipe de support qui vous aidera davantage. »
⚠️ Juridique & conformité :
Questions liées au RGPD et à la conformité ou demandes concernant la confidentialité des données.
Demandes relatives aux conditions d’utilisation, contrats légaux, NDA ou documentation de conformité.
Exemple de réponse :
« Votre question relative au juridique ou à la conformité nécessite une attention spécialisée. Je vais escalader votre demande à notre équipe conformité afin qu’elle vous assiste au mieux. »
⚠️ Problèmes techniques avancés (au-delà des connaissances documentées) :
Problèmes système complexes, erreurs API récurrentes non expliquées par les étapes de dépannage standard.
Exemple de réponse :
« Votre problème semble nécessiter une enquête technique approfondie. Je vais l’escalader à notre équipe technique afin qu’elle puisse examiner et vous assister en détail. »
⚠️ Problèmes urgents et critiques pour l’activité :
Problèmes identifiés par les utilisateurs comme critiques pour leurs opérations métier.
Exemple de réponse :
« Étant donné l’urgence et l’importance de votre problème, je vais transmettre votre demande immédiatement à notre équipe de support dédiée qui vous contactera sous peu. »
🎯 Procédure générale d’escalade : Expliquez clairement pourquoi vous ne pouvez pas aider.
Assurez poliment l’utilisateur que sa demande sera traitée rapidement par un humain.
Escaladez immédiatement la demande de l’utilisateur vers l’équipe ou la file d’attente de support Wassenger appropriée.
- Lors de l’escalade du message, prenez les informations depuis le contenu de {{ $('Wassenger Trigger').item.json.data.body }}
✅ Étape 4 : Ajout d’une mémoire simple
- Ajoutez le nœud “Simple Memory” pour stocker et récupérer le contexte de conversation, afin d’assurer des interactions cohérentes.
✅ Étape 5 : Escalade humaine via le workflow d’outil personnalisé
- Si l’IA n’est pas certaine de la demande d’un utilisateur, nous déclenchons un sous‑workflow.
- Configurez un nœud de logique conditionnelle pour déterminer si les détails de l’utilisateur (comme l’email) sont fournis.
✅ Étape 6 : Intégration Slack pour l’assistance humaine
- Utilisez un nœud Slack pour notifier les équipes de support humain avec les informations critiques (requête de l’utilisateur, coordonnées).
- Invitez l’utilisateur à fournir son adresse e‑mail si elle n’a pas déjà été fournie.
👉 Commencez votre essai gratuit de 7 jours sur Wassenger et profitez de nos puissants WhatsApp automation flows pour transformer votre service client dès aujourd’hui ! ⚡
📐 Explication détaillée du sous‑workflow
Expliquez clairement le fonctionnement de votre sous‑workflow, y compris :
- Vérifier si une adresse e‑mail est fournie.
- Envoyer des invites aux utilisateurs si l’e‑mail est manquant.
- Alerter clairement et de manière informative les agents humains dans Slack.
- Confirmer les messages d’escalade et les notifications utilisateur.
📷 Workflow (JSON inclus)
{
"name": "Ask a human for help when the AI doesn't know the answer",
"nodes": [
{
"parameters": {
"content": "### Main workflow: AI agent using custom tool",
"height": 486.5625,
"width": 927.5,
"color": 7
},
"id": "48f18cda-7baf-4c63-9c48-b27236ec009d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [0, 0],
"typeVersion": 1
},
{
"parameters": {
"content": "**This tool calls the sub-workflow below**",
"height": 179,
"width": 297,
"color": 5
},
"id": "8102f76d-9d93-4754-9eb2-73a87f24204e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [560, 240],
"typeVersion": 1
},
{
"parameters": {
"content": "**Set your credentials**",
"height": 213.44323866265472,
"width": 150,
"color": 2
},
"id": "1e3fbc3a-c7fc-4046-8b31-bc1e2880b522",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [200, 220],
"typeVersion": 1
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"id": "6a39707e-db29-4590-b1c8-ca2e18c7c61b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [240, 300],
"typeVersion": 1.2,
"credentials": {
"openAiApi": {
"id": "id_number",
"name": "OpenAi account 13"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Wassenger Trigger') }}",
"contextWindowLength": 20
},
"id": "c63f495c-ec2a-4ccc-92db-89f2649fad26",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [420, 300],
"typeVersion": 1.3
},
{
"parameters": {
"name": "dont_know_tool",
"description": "Use this tool if you don't know the answer to the user's question, or if you're not very confident about your answer.",
"workflowId": {
"__rl": true,
"value": "CotpNRS12t1hzys2",
"mode": "list",
"cachedResultName": "My Sub-Workflow 1"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"id": "4ef494b9-439b-4857-9a90-96e9a542af86",
"name": "Not sure?",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [620, 260],
"typeVersion": 2
},
{
"parameters": {
"promptType": "define",
"text": "={{ $('Wassenger Trigger') }}",
"options": {
"systemMessage": "=You are an AI-powered Wassenger Customer Support Agent.Your primary role is to assist users by clearly, precisely, and politely answering questions related to the Wassenger platform, its API, integrations, configurations, usage instructions, and best practices.\n\nYour tone must always be friendly, helpful, and professional.\n\n🚩 Tasks you CAN perform:\n✅ General Information:\n\nExplain Wassenger features and functionalities clearly.\n\nAssist users navigating through the Wassenger interface and options.\n\nProvide clear guidance on how to use Wassenger’s API endpoints, with examples.\n\n✅ Integrations:\n\nExplain how Wassenger integrates with other services such as n8n, Zapier, Make, Google Sheets, CRMs, etc.\n\nGuide users on creating automated workflows and custom integrations.\n\n✅ Troubleshooting:\n\nProvide solutions for common usage issues, such as connection or session problems.\n\nGuide on best practices for avoiding common issues, such as WhatsApp number bans.\n\n✅ Documentation and Tutorials:\n\nDirect users to specific help-center articles and documentation.\n\nProvide code snippets and configuration examples as documented officially.\n\n✅ Platform Configuration:\n\nExplain features such as chat assignment, labels, quick replies, automatic responses, etc.\n\nHelp users set up and manage departments, roles, permissions, and team settings.\n\n🚫 Tasks you CANNOT perform(Always escalate to human agents):\nIf users ask questions in these categories, kindly inform them clearly and politely that their request needs to be escalated to a human agent:\n\n⚠️ Billing and Payments:\n\nIssues with payments, invoices, refunds, cancellations, payment method changes, upgrades, downgrades, or subscription modifications.\n\nExample reply:\n\n\"I see your query relates to billing and payments.I'm unable to access or handle payment information for security reasons.I'll escalate your request to our human support team who will assist you shortly.\"\n\n⚠️ Account Ownership and Personal Data:\n\nChanges to account ownership or sensitive data(emails, passwords, phone number transfers).\n\nPersonal data removal, export requests(GDPR-related), or account deletion.\n\nExample reply:\n\n\"For privacy and security reasons, I can't manage personal data or account ownership requests.Let me forward your request to our support team who will help you further.\"\n\n⚠️ Legal & Compliance:\n\nGDPR and compliance-related questions or data privacy queries.\n\nRequests related to terms of service, legal contracts, NDAs, or compliance documentation.\n\nExample reply:\n\n\"Your question about legal or compliance topics requires specialized attention.I will escalate your request to our compliance team to assist you better.\"\n\n⚠️ Advanced Technical Issues(that exceed documented knowledge):\n\nComplex system issues, recurring API errors unexplained by standard troubleshooting steps.\n\nExample reply:\n\n\"Your issue seems to require an in-depth technical investigation.I'll escalate this to our technical team so they can thoroughly review and assist you.\"\n\n⚠️ Urgent and Business-critical Issues:\n\nIssues that are identified by users as critical to their business operations.\n\nExample reply:\n\n\"Given the urgency and importance of your issue, I will forward your query immediately to our dedicated support team who will reach out to you shortly.\"\n\n🎯 General Escalation Procedure:\nClearly state why you cannot assist.\n\nPolitely assure the user that their query will be addressed promptly by a human.\n\nImmediately escalate the user's issue to the appropriate Wassenger team or support queue.\n\n- When scalating the message take the info from {{ $('Wassenger Trigger').item.json.data.body }} content\n\n"
}
},
"id": "0cf88611-4e6f-4b7e-b7f2-0d121b6a12b0",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [300, 60],
"typeVersion": 1.8
},
{
"parameters": {
"device": "device_id",
"events": ["message:in:new"],
"sampleEvent": "inbound-text"
},
"type": "n8n-nodes-wassenger.wassengerTrigger",
"typeVersion": 1,
"position": [80, 60],
"id": "b35532e3-7e3b-443b-bb37-9e06dba415c7",
"name": "Wassenger Trigger",
"webhookId": "3ab2aa49-81f1-40b8-942d-151861217f5b",
"credentials": {
"wassengerApiKey": {
"id": "api_key",
"name": "Wassenger Key account 9"
}
}
},
{
"parameters": {
"content": "### Sub-workflow: Custom tool\nThe agent above can call this workflow.It checks if the user has supplied an email address.If they haven't it prompts them to provide one.If they have, it messages a customer support channel for help.",
"height": 775.3931210698682,
"width": 1118.3459011229047,
"color": 7
},
"id": "b40a664b-0b76-4201-9b52-b35d7608063a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [0, 500],
"typeVersion": 1
},
{
"parameters": {
"content": "**Set your credentials and Slack details**",
"height": 250.57252651663197,
"width": 178.0499248677781,
"color": 2
},
"id": "d6901508-7d25-4a79-a569-94dd1a0ca064",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [520, 700],
"typeVersion": 1
},
{
"parameters": {
"content": "## Next steps\n\nLearn more about [Advanced AI in n8n](https://docs.n8n.io/advanced-ai/)",
"height": 145
},
"id": "bcf8c374-c209-40ab-b5cc-5b73fbc27eaa",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [820, 1060],
"typeVersion": 1
},
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "chatInput"
}
]
}
},
"id": "be94ed3b-5f7c-4693-a1c2-152a8128d576",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [100, 900],
"typeVersion": 1.1
},
{
"parameters": {
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e6dce436-5e85-4722-a7e4-0ceb940a5477",
"operator": {
"type": "string",
"operation": "regex"
},
"leftValue": "={{ $('When Executed by Another Workflow').item.json.chatInput }}",
"rightValue": "=/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gi"
}
]
},
"options": {}
},
"id": "f5f4bf5f-0553-4077-9009-35358352bd07",
"name": "Check if user has provided email",
"type": "n8n-nodes-base.if",
"position": [280, 900],
"typeVersion": 2.2
},
{
"parameters": {
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "#general"
},
"text": "={{ \"A user had a question the bot couldn't answer.Here's their message: \" + $('When Executed by Another Workflow').first().json.chatInput }}",
"otherOptions": {}
},
"id": "933b12ce-69c0-4a2d-87a7-b13ca1c21a9d",
"name": "Message Slack for help",
"type": "n8n-nodes-base.slack",
"position": [560, 780],
"webhookId": "c54bea4c-bdb6-4f42-9f82-525857df5a9a",
"typeVersion": 2.3
},
{
"parameters": {
"jsCode": "const response = {\"response\": \"Thank you for getting in touch.I've messaged a human to help.\"}\nreturn response;"
},
"id": "2e1e9918-584f-4787-b723-5d1756461811",
"name": "Confirm that we've messaged a human",
"type": "n8n-nodes-base.code",
"position": [780, 780],
"typeVersion": 2
},
{
"parameters": {
"jsCode": "const response = {\"response\":\"I'm sorry I don't know the answer.Please repeat your question and include your email address so I can request help.\"};\nreturn response;"
},
"id": "b1cc9ce5-5c68-4476-a6a2-471ea6e75455",
"name": "Prompt the user to provide an email",
"type": "n8n-nodes-base.code",
"position": [560, 1020],
"typeVersion": 2
},
{
"parameters": {
"phone": "={{ $('Wassenger Trigger').item.json.data.fromNumber }}",
"message": "={{ $json.output }}",
"options": {}
},
"type": "n8n-nodes-wassenger.wassenger",
"typeVersion": 1,
"position": [660, 60],
"id": "483fb22a-1259-4b99-b0b0-909efb61a624",
"name": "Wassenger",
"credentials": {
"wassengerApiKey": {
"id": "9du3UAbFSzEaTSQE",
"name": "WhatsApp API key"
}
}
}
],
"pinData": {},
"connections": {
"Not sure?": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Wassenger Trigger": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Check if user has provided email",
"type": "main",
"index": 0
}
]
]
},
"Check if user has provided email": {
"main": [
[
{
"node": "Message Slack for help",
"type": "main",
"index": 0
}
],
[
{
"node": "Prompt the user to provide an email",
"type": "main",
"index": 0
}
]
]
},
"Message Slack for help": {
"main": [
[
{
"node": "Confirm that we've messaged a human",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Wassenger",
"type": "main",
"index": 0
}
]
]
}
}
}
🚨 Bonnes pratiques
- Définissez clairement les limites de l’IA et les règles d’escalade.
- Fournissez toujours un retour aux utilisateurs pendant les escalades.
- Mettez régulièrement à jour les prompts de l’IA pour améliorer la précision.
- Surveillez de près les escalades humaines pour ajuster les workflows IA selon les besoins.
💡 Conclusion
En intégrant les capacités de l’IA et de l’humain, vous assurez une automatisation efficace, robuste et conviviale. Cette combinaison puissante de Wassenger, n8n, OpenAI et Slack crée une solution de service client automatisée mais soutenue par des humains, adaptable et fiable.
📚 Lectures complémentaires & ressources
Essayez de créer vos workflows assistés par IA et partagez vos expériences et vos idées avec la communauté ! Si vous avez des questions ou des suggestions, commentez ci‑dessous — nous sommes là pour nous entraider.
👉 Commencez votre essai gratuit de 7 jours sur Wassenger et profitez de nos puissants WhatsApp automation flows pour transformer votre service client dès aujourd’hui ! ⚡







