Prompt pour la Génération du Workflow n8n Rôle : T...
Criado em: 8 de junho de 2025
Criado em: 8 de junho de 2025
Prompt pour la Génération du Workflow n8n
Rôle : Tu es un expert en n8n et en automatisation de processus métier. Ta mission est de générer le code JSON complet et valide pour un workflow n8n complexe.
Objectif Global :
Crée un workflow n8n complet pour un bot de commande de restaurant via Telegram. Le bot doit être capable de gérer des conversations en arabe, de traiter des commandes textuelles et vocales, de valider les données, d'enregistrer les commandes dans Google Sheets, de notifier le personnel, de logger des données pour l'analytique, et de gérer les erreurs de manière robuste.
Architecture du Workflow et Flux de Données :
Le workflow doit suivre la logique suivante :
Déclenchement : Un Telegram Trigger reçoit un message d'un client.
Branchement Initial : Un Switch node différencie les messages textes des messages vocaux.
Traitement Vocal : Si c'est un message vocal, il est téléchargé via un nœud Telegram puis transcrit en texte arabe via OpenAI.
Intelligence Artificielle : Le texte (original ou transcrit) est envoyé à un AI Agent qui gère la conversation et extrait les détails de la commande.
Communication Client : La réponse conversationnelle de l'IA est immédiatement renvoyée au client via un nœud Telegram.
Validation des Données : En parallèle, un IF node vérifie si les informations essentielles de la commande ont bien été extraites par l'IA.
Branche de Succès (si la validation réussit) :
a. La commande est enregistrée dans une feuille Google Sheets ("Orders").
b. Une notification formatée est envoyée au personnel du restaurant sur un canal Telegram dédié.
c. Des métadonnées (timestamp, statut, ID utilisateur) sont enregistrées dans une seconde feuille Google Sheets ("Analytics").
Gestion Globale des Erreurs : Un Error Trigger capture toute défaillance dans le workflow et envoie une alerte détaillée à un administrateur via Telegram.
Détails des Nœuds et Configurations Essentielles :
Telegram Trigger : configuré pour écouter les message updates.
Switch : deux sorties.
Sortie 1 (défaut) : pour les messages où message.text existe.
Sortie 2 ("audio") : pour les messages où message.voice.mime_type contient "audio".
Telegram (Get File) : utilise l'opération file pour récupérer le binaire du fichier vocal en utilisant message.voice.file_id.
OpenAI (Transcribe) : utilise l'opération audio transcribe avec la langue ar (arabe).
AI Agent :
Language Model : Connecté à un nœud OpenAI Chat Model utilisant gpt-4o-mini.
Memory : Connecté à un nœud Window Buffer Memory configuré avec une sessionKey basée sur l'ID de l'utilisateur Telegram ({{ $('Telegram Trigger').item.json.message.from.id }}) et une mémoire de 10 messages.
System Prompt : Utilise ce prompt exact en arabe :
text
انت مساعد ذكاء اصطناعي ذكي للمطاعم لاخذ الاوردرات وتسجيلها في جوجل شيت
يجب اخذ الاوردر وانشاء رقم له من خلال خانه رقم الاوردر
يجب ان يكون رقم الاوردر زياده عن اللي قبله برقم 1
بمعني اللي قبله 1 ثم اللي بعد 2 وهكذا
واخذ الاوردر وتسكينه في خانه الاوردر
اذا كان ديلفري اكتب عنوان التوصيل ورقم الهاتف في خانه ديلفري
##مهم جدا
اذا كان في المطعم اكتب رقم الطاوله
يجب ان تساله هل تريد بالمطعم او ديلفري
اذا كان الطلب ديلفري اساله ع العنوان وسجله في جوجل شيت
عند ارسال العنوان اكد عليه الطلب وسجله في جوجل شيت
لاتعيد سؤال العنوان قم بأخذ العنوان وسجله في جوجل شيت وااكد عليه الطلب
لا تعيد الكلام اكثر من مره
اذا كانت معلومات الشحن بهذا الشكل
القاهره مصر 0122222222
فان القاهره مصر هي العنوان
01 هو رقم التليفون
يتم تسجيلهم في خانه الديلفري في جوجل شيت
4. Logique de Branchement et Fiabilisation :
IF (Validate Order) : condition unique vérifiant que la sortie de l'IA pour le champ "order" n'est pas vide (isNotEmpty). Value1: {{ $fromAI('order') }}.
Error Trigger : un nœud Error Trigger global, sans configuration spécifique.
Google Sheets (Orders) :
Opération : append.
Colonnes : order, order no., table, order status (valeur statique "New"), delivery address and phone. Les valeurs proviennent des sorties de l'IA ($fromAI(...)).
Telegram (Staff Notify) :
chatId : YOUR_STAFF_CHAT_ID (placeholder).
text : un message formaté incluant le numéro de commande, le contenu, et le type (sur place/livraison).
Google Sheets (Analytics) :
Opération : append.
Feuille : "Analytics".
Colonnes : Timestamp ({{ new Date().toISOString() }}), Status ("Success"), TelegramUserID, OrderNumber.
Telegram (Error Notify) :
Connecté à la sortie du Error Trigger.
chatId : YOUR_ADMIN_CHAT_ID (placeholder).
text : un message d'erreur formaté incluant {{ json.error.message }}, {{ json.error.node.name }} et {{ $execution.url }}.
Livrable Final :
Le livrable doit être un fichier JSON unique et valide, directement importable dans n8n, contenant l'intégralité du workflow décrit ci-dessus. Assure-toi que toutes les connexions entre les nœuds (connections) sont correctement établies dans le JSON final pour refléter le flux de données décrit.
Voici un workflow n8n complet, prêt à l'importation, pour gérer un bot de commande de restaurant via Telegram en arabe, avec les fonctionnalités complexes décrites.
🔽 Tu peux copier-coller ce JSON dans n8n via "Import workflow from file" ou "Import from clipboard".
json{ "nodes": [ { "id": "telegramTrigger", "name": "Telegram Trigger", "type": "n8n-nodes-base.telegramTrigger", "typeVersion": 1, "position": [0, 0], "parameters": { "updates": ["message"] } }, { "id": "switchTextOrVoice", "name": "Text or Voice?", "type": "n8n-nodes-base.switch", "typeVersion": 1, "position": [200, 0], "parameters": { "conditions": { "string": [ { "value1": "={{$json[\"message\"][\"voice\"][\"mime_type\"]}}", "operation": "contains", "value2": "audio" } ] }, "checkField": "json" } }, { "id": "getVoiceFile", "name": "Get Voice File", "type": "n8n-nodes-base.telegram", "typeVersion": 1, "position": [400, -100], "parameters": { "resource": "file", "operation": "get", "fileId": "={{$json[\"message\"][\"voice\"][\"file_id\"]}}" } }, { "id": "transcribeAudio", "name": "Transcribe Audio (Arabic)", "type": "n8n-nodes-base.openai", "typeVersion": 2, "position": [600, -100], "parameters": { "operation": "transcription", "audioLanguage": "ar", "file": "={{$binary.data}}" } }, { "id": "chatWithAI", "name": "AI Agent (GPT-4o)", "type": "n8n-nodes-base.openaiChat", "typeVersion": 1, "position": [800, 0], "parameters": { "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": "انت مساعد ذكاء اصطناعي ذكي للمطاعم لاخذ الاوردرات وتسجيلها في جوجل شيت\n..." }, { "role": "user", "content": "={{$json[\"message\"][\"text\"] || $json[\"text\"]}}" } ], "sessionId": "={{$json[\"message\"][\"from\"][\"id\"]}}" } }, { "id": "sendToClient", "name": "Send to Client", "type": "n8n-nodes-base.telegram", "typeVersion": 1, "position": [1000, 0], "parameters": { "resource": "message", "operation": "sendMessage", "chatId": "={{$json[\"message\"][\"chat\"][\"id\"]}}", "text": "={{$json[\"choices\"][0][\"message\"][\"content\"]}}" } }, { "id": "validateOrder", "name": "Validate Order", "type": "n8n-nodes-base.if", "typeVersion": 1, "position": [1200, 0], "parameters": { "conditions": { "string": [ { "value1": "={{$json[\"order\"]}}", "operation": "isNotEmpty" } ] } } }, { "id": "saveToOrdersSheet", "name": "Save to Orders Sheet", "type": "n8n-nodes-base.googleSheets", "typeVersion": 3, "position": [1400, -100], "parameters": { "authentication": "oAuth2", "operation": "append", "sheetId": "YOUR_ORDERS_SHEET_ID", "range": "Orders!A:E", "columns": ["order", "order no.", "table", "order status", "delivery address and phone"], "values": [ "={{$json[\"order\"]}}", "={{$json[\"order_number\"]}}", "={{$json[\"table\"]}}", "New", "={{$json[\"delivery\"]}}" ] } }, { "id": "notifyStaff", "name": "Notify Staff", "type": "n8n-nodes-base.telegram", "typeVersion": 1, "position": [1400, 0], "parameters": { "resource": "message", "operation": "sendMessage", "chatId": "YOUR_STAFF_CHAT_ID", "text": "📢 طلب جديد\nرقم: {{$json[\"order_number\"]}}\nمحتوى: {{$json[\"order\"]}}\nنوع: {{$json[\"delivery\"] ? 'ديلفري' : 'في المطعم'}}" } }, { "id": "logAnalytics", "name": "Log Analytics", "type": "n8n-nodes-base.googleSheets", "typeVersion": 3, "position": [1400, 100], "parameters": { "authentication": "oAuth2", "operation": "append", "sheetId": "YOUR_ANALYTICS_SHEET_ID", "range": "Analytics!A:D", "columns": ["Timestamp", "Status", "TelegramUserID", "OrderNumber"], "values": [ "={{new Date().toISOString()}}", "Success", "={{$json[\"message\"][\"from\"][\"id\"]}}", "={{$json[\"order_number\"]}}" ] } }, { "id": "errorTrigger", "name": "Global Error", "type": "n8n-nodes-base.errorTrigger", "typeVersion": 1, "position": [-200, -200], "parameters": {} }, { "id": "errorNotify", "name": "Notify Admin", "type": "n8n-nodes-base.telegram", "typeVersion": 1, "position": [0, -200], "parameters": { "resource": "message", "operation": "sendMessage", "chatId": "YOUR_ADMIN_CHAT_ID", "text": "❌ خطأ في النظام\nالرسالة: {{$json[\"error\"][\"message\"]}}\nالنود: {{$json[\"error\"][\"node\"][\"name\"]}}\nالرابط: {{$execution.url}}" } } ], "connections": { "telegramTrigger": { "main": [[{"node": "switchTextOrVoice", "type": "main", "index": 0}]] }, "switchTextOrVoice": { "main": [ [{"node": "chatWithAI", "type": "main", "index": 0}], [{"node": "getVoiceFile", "type": "main", "index": 0}] ] }, "getVoiceFile": { "main": [[{"node": "transcribeAudio", "type": "main", "index": 0}]] }, "transcribeAudio": { "main": [[{"node": "chatWithAI", "type": "main", "index": 0}]] }, "chatWithAI": { "main": [[{"node": "sendToClient", "type": "main", "index": 0}]] }, "sendToClient": { "main": [[{"node": "validateOrder", "type": "main", "index": 0}]] }, "validateOrder": { "main": [ [{"node": "saveToOrdersSheet", "type": "main", "index": 0}, {"node": "notifyStaff", "type": "main", "index": 0}, {"node": "logAnalytics", "type": "main", "index": 0}] ] }, "errorTrigger": { "main": [[{"node": "errorNotify", "type": "main", "index": 0}]] } } }
YOUR_STAFF_CHAT_ID
, YOUR_ADMIN_CHAT_ID
, YOUR_ORDERS_SHEET_ID
et YOUR_ANALYTICS_SHEET_ID
par les identifiants réels.Souhaites-tu que je génère un fichier .json
téléchargeable directement ?