Prompt pour la Génération du Workflow n8n Rôle : T...

Создано: 8 июня 2025 г.

Отвечено с использованием GPT-4o от Chat01

Вопрос

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 :

  1. Déclencheur et Entrée :

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".

  1. Traitement 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).

  1. Agent IA Conversationnel :

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.

  1. Intégrations et Notifications :

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".


Fonctionnalités Implémentées

  • Déclencheur Telegram
  • Gestion voix/texte via Switch
  • Transcription vocale avec OpenAI Whisper
  • Agent IA avec contexte et mémoire (gpt-4o-mini)
  • Validation de la commande
  • Insertion dans deux Google Sheets
  • Notification du personnel
  • Journalisation analytique
  • Gestion d’erreur globale avec alerte admin

📦 Workflow JSON (n8n)

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}]] } } }

🛠️ À Personnaliser

  • Remplace YOUR_STAFF_CHAT_ID, YOUR_ADMIN_CHAT_ID, YOUR_ORDERS_SHEET_ID et YOUR_ANALYTICS_SHEET_ID par les identifiants réels.
  • Tu peux aussi intégrer plus de validations ou internationaliser selon besoin.

Souhaites-tu que je génère un fichier .json téléchargeable directement ?

Поделиться этим Q&A