{
"method": "POST",
"path": "assistant-client",
"responseMode": "responseNode",
"options": {}
}
{{ $json.body.message }} : Le message du client
{{ $json.body.user_id }} : L'identifiant du client (optionnel)
{
"mode": "rules",
"rules": [
{
"name": "FAQ",
"conditions": [
{
"leftValue": "={{ $json.body.message.toLowerCase() }}",
"operator": "contains",
"rightValue": "comment|pourquoi|qu'est-ce|expliquer|info"
}
]
},
{
"name": "Ticket Support",
"conditions": [
{
"leftValue": "={{ $json.body.message.toLowerCase() }}",
"operator": "contains",
"rightValue": "problème|bug|erreur|aide|support|urgent"
}
]
},
{
"name": "Commande",
"conditions": [
{
"leftValue": "={{ $json.body.message.toLowerCase() }}",
"operator": "contains",
"rightValue": "commande|livraison|tracking|statut|numéro"
}
]
}
],
"fallback": "FAQ"
}
Le Switch Node analyse le message avec des règles basées sur des mots-clés. Selon les termes détectés, il route vers le bon agent. Si aucune règle ne correspond, il utilise l'agent FAQ par défaut.
Au lieu d'un Switch simple, utilisez un node OpenAI avec ce prompt :
"Analyse ce message client et réponds uniquement par : FAQ, TICKET, ou COMMANDE. Message: {{ $json.body.message }}"
Puis utilisez un Switch sur la réponse de l'IA pour router intelligemment !
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "Tu es un assistant FAQ. Réponds aux questions sur nos produits et services. Sois concis et précis."
},
{
"role": "user",
"content": "={{ $json.body.message }}"
}
],
"temperature": 0.7
}
// Node 1: Set - Prépare les données du ticket
{
"ticket_id": "={{ 'TICKET-' + Date.now() }}",
"user_id": "={{ $json.body.user_id || 'anonymous' }}",
"message": "={{ $json.body.message }}",
"status": "open",
"priority": "normal",
"created_at": "={{ new Date().toISOString() }}"
}
// Node 2: HTTP Request - Envoie au système de ticketing
{
"method": "POST",
"url": "https://votre-api.com/tickets",
"body": {
"ticket": "={{ $json }}"
},
"authentication": "headerAuth",
"headerAuth": {
"name": "Authorization",
"value": "Bearer YOUR_API_KEY"
}
}
// Node 3: Set - Formate la réponse
{
"response": "Ticket créé avec succès ! Numéro : {{ $json.ticket_id }}. Notre équipe vous contactera sous 24h."
}
// Node 1: Code - Extrait le numéro de commande
const message = $input.item.json.body.message;
const orderMatch = message.match(/\d{6,}/); // Cherche 6+ chiffres
return {
order_number: orderMatch ? orderMatch[0] : null
};
// Node 2: IF - Vérifie si numéro trouvé
// Si oui, continue vers HTTP Request
// Si non, retourne erreur
// Node 3: HTTP Request - Appelle l'API de commandes
{
"method": "GET",
"url": "https://votre-api.com/orders/={{ $json.order_number }}",
"authentication": "headerAuth"
}
// Node 4: Set - Formate la réponse
{
"response": "Commande {{ $json.order_number }}: Statut {{ $json.status }}. Livraison estimée : {{ $json.delivery_date }}"
}
1. Ajoutez un node Error Trigger : Créez une branche qui capture toutes les erreurs et retourne un message générique au client.
2. Insérez un node Set après l'orchestrateur : Loggez quelle branche a été choisie avec timestamp. Utile pour analyser l'usage.
3. Créez des nodes "Set" de test : Avant de connecter les vraies APIs, simulez les réponses avec des données statiques pour tester le flux.
4. Ajoutez un node "Append to Sheet" : Enregistrez chaque interaction dans Google Sheets pour analyser les cas non gérés et améliorer vos règles de routage.
5. Variables d'environnement : Utilisez des credentials N8N pour toutes vos clés API. Jamais de clés en dur dans les nodes !
6. Rate limiting : Ajoutez un node "Wait" si vous appelez des APIs externes pour éviter de dépasser les quotas.
7. Validation des entrées : Ajoutez un node "IF" juste après le Webhook pour vérifier que les données reçues sont valides.
// Créez un node "Set" pour tester sans API
{
"test_scenarios": [
{
"body": {
"message": "Comment fonctionne votre service ?",
"user_id": "test123"
}
},
{
"body": {
"message": "J'ai un problème urgent avec mon compte",
"user_id": "test456"
}
},
{
"body": {
"message": "Où est ma commande 123456 ?",
"user_id": "test789"
}
}
]
}
// Puis connectez ce node au Switch pour tester les 3 branches