Robot d'appel vocal IA - Intégration OpenAI GPT-4o + ElevenLabs + Twilio

Intermédiaire

Ceci est unSupport Chatbot, AI Chatbotworkflow d'automatisation du domainecontenant 10 nœuds.Utilise principalement des nœuds comme If, OpenAi, Webhook, ElevenLabs, HttpRequest. Utiliser GPT-4o, ElevenLabs et Twilio pour créer un bot d'appel vocal multilingue

Prérequis
  • Clé API OpenAI
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "ai-voice-calling-bot",
  "meta": {
    "instanceId": "12345abcde67890fghij",
    "templateCredsSetupCompleted": true
  },
  "name": "AI Voice Calling Bot - OpenAI GPT-4o + ElevenLabs + Twilio Integration",
  "tags": [
    {
      "id": "ai-voice-bot",
      "name": "AI Voice Bot",
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  ],
  "nodes": [
    {
      "id": "webhook-start",
      "name": "Twilio Voice Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        240,
        300
      ],
      "webhookId": "voice-webhook-start",
      "parameters": {
        "path": "voice-webhook",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "check-speech-input",
      "name": "Vérifier la saisie vocale",
      "type": "n8n-nodes-base.if",
      "position": [
        460,
        300
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "={{ $json.SpeechResult }}",
            "operation": "exists",
            "caseSensitive": true
          }
        }
      },
      "typeVersion": 1
    },
    {
      "id": "openai-gpt",
      "name": "OpenAI GPT-4o Response",
      "type": "n8n-nodes-base.openAi",
      "position": [
        680,
        200
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {
          "maxTokens": 150,
          "temperature": 0.7
        },
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a helpful AI assistant for a service business. You can help customers:\n1. Schedule appointments (collect name, phone, preferred date/time, service type)\n2. Order pizza (collect size, toppings, address, phone)\n3. Book other services (collect relevant details)\n\nAlways be polite, concise, and gather necessary information step by step. Keep responses under 100 words for voice calls. End with a clear question or next step."
            },
            {
              "role": "user",
              "content": "={{ $json.SpeechResult || 'Hello, how can I help you today?' }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "openai-creds",
          "name": "OpenAI API"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "elevenlabs-tts",
      "name": "ElevenLabs Text-to-Speech",
      "type": "n8n-nodes-base.elevenLabs",
      "position": [
        900,
        200
      ],
      "parameters": {
        "text": "={{ $json.choices[0].message.content }}",
        "model_id": "eleven_monolingual_v1",
        "voice_id": "21m00Tcm4TlvDq8ikWAM",
        "voice_settings": {
          "style": 0,
          "stability": 0.75,
          "similarity_boost": 0.75,
          "use_speaker_boost": true
        }
      },
      "credentials": {
        "elevenLabsApi": {
          "id": "elevenlabs-creds",
          "name": "ElevenLabs API"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "upload-audio",
      "name": "Téléverser l'audio vers le stockage",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1120,
        200
      ],
      "parameters": {
        "operation": "upload",
        "additionalFields": {
          "fileName": "response.mp3",
          "contentType": "audio/mpeg"
        },
        "binaryPropertyName": "data"
      },
      "typeVersion": 3
    },
    {
      "id": "twilio-response",
      "name": "Twilio TwiML Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1340,
        200
      ],
      "parameters": {
        "twiml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>\n  <Play>{{ $json.audio_url }}</Play>\n  <Gather input=\"speech\" timeout=\"10\" speechTimeout=\"auto\" action=\"{{ $node.webhook.getWebhookUrl() }}\" method=\"POST\">\n    <Say voice=\"alice\">Please speak after the tone.</Say>\n  </Gather>\n  <Say voice=\"alice\">I didn't hear anything. Goodbye!</Say>\n  <Hangup/>\n</Response>"
      },
      "typeVersion": 1
    },
    {
      "id": "initial-greeting",
      "name": "Salutation initiale",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        680,
        400
      ],
      "parameters": {
        "twiml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>\n  <Say voice=\"alice\">Hello! I'm your AI assistant. I can help you schedule appointments, order pizza, or book services. How can I help you today?</Say>\n  <Gather input=\"speech\" timeout=\"10\" speechTimeout=\"auto\" action=\"{{ $node['Twilio Voice Webhook'].getWebhookUrl() }}\" method=\"POST\">\n    <Say voice=\"alice\">Please speak after the tone.</Say>\n  </Gather>\n  <Say voice=\"alice\">I didn't hear anything. Please call back. Goodbye!</Say>\n  <Hangup/>\n</Response>"
      },
      "typeVersion": 1
    },
    {
      "id": "log-conversation",
      "name": "Journaliser la conversation",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        900,
        400
      ],
      "parameters": {
        "columns": {
          "value": {
            "call_sid": "={{ $json.CallSid }}",
            "caller_id": "={{ $json.From }}",
            "timestamp": "={{ $now }}",
            "ai_response": "={{ $json.choices[0].message.content }}",
            "speech_input": "={{ $json.SpeechResult }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": "Call_Logs",
        "documentId": "your-google-sheet-id"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "google-sheets-creds",
          "name": "Google Sheets"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "check-appointment",
      "name": "Vérifier un rendez-vous",
      "type": "n8n-nodes-base.if",
      "position": [
        1120,
        400
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "={{ $json.choices[0].message.content.toLowerCase() }}",
            "operation": "contains",
            "rightValue": "appointment",
            "caseSensitive": false
          }
        }
      },
      "typeVersion": 1
    },
    {
      "id": "save-appointment",
      "name": "Enregistrer la demande de rendez-vous",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        500
      ],
      "parameters": {
        "columns": {
          "value": {
            "status": "pending",
            "call_sid": "={{ $json.CallSid }}",
            "caller_id": "={{ $json.From }}",
            "timestamp": "={{ $now }}",
            "request_details": "={{ $json.SpeechResult }}"
          },
          "mappingMode": "defineBelow"
        },
        "operation": "append",
        "sheetName": "Appointments",
        "documentId": "your-appointments-sheet-id"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "google-sheets-creds",
          "name": "Google Sheets"
        }
      },
      "typeVersion": 3
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1",
  "connections": {
    "log-conversation": {
      "main": [
        [
          {
            "node": "check-appointment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check-speech-input": {
      "main": [
        [
          {
            "node": "openai-gpt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "initial-greeting",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "webhook-start": {
      "main": [
        [
          {
            "node": "check-speech-input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check-appointment": {
      "main": [
        [
          {
            "node": "save-appointment",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "openai-gpt": {
      "main": [
        [
          {
            "node": "elevenlabs-tts",
            "type": "main",
            "index": 0
          },
          {
            "node": "log-conversation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "upload-audio": {
      "main": [
        [
          {
            "node": "twilio-response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "elevenlabs-tts": {
      "main": [
        [
          {
            "node": "upload-audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Chatbot de support, Chatbot IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Suite automatisée pour le SEO avancé, les métriques essentielles des pages et l'automatisation des chatbots
Relecture et surveillance des performances SEO avec un conseiller GPT-4, PageSpeed Insights et des rappels Slack
If
Set
Cron
+
If
Set
Cron
22 NœudsCandra Reza
Étude de marché
Bot de réponses aux questions fréquentes pour les compagnies aériennes
Utiliser GPT-4 et la classification des problèmes pour automatiser le support client des compagnies aériennes
If
Code
Merge
+
If
Code
Merge
27 NœudsOneclick AI Squad
Chatbot de support
Traitement automatisé du support client avec un assistant AI WhatsApp, Google Docs et Gemini
Traitement automatisé du support client via l'assistant WhatsApp AI, Google Docs et Gemini
If
Code
Webhook
+
If
Code
Webhook
14 NœudsJamot
Chatbot de support
Robot d'état DHL multi-canaux
Bot automatisé de suivi de colis DHL pour les formulaires Web et les demandes par e-mail
If
Code
Gmail
+
If
Code
Gmail
15 NœudsYusuke Yamamoto
Chatbot de support
Réservations de voyage conversationnelles : Automatisation des réservations de vols et d'hôtels avec l'IA
Réservation de voyage conversationnelle : Automatisation des réservations de vols et d'hôtels avec GPT-3.5
Code
Open Ai
Switch
+
Code
Open Ai
Switch
21 NœudsOneclick AI Squad
Chatbot de support
Système de traitement de commandes alimentaires piloté par l'IA, intégrant Facebook Messenger, Google Sheets et Google Calendar
Système de traitement de commandes alimentaires piloté par l'IA, intégrant Facebook Messenger, Google Sheets et Google Calendar
If
Code
Webhook
+
If
Code
Webhook
26 NœudsHans Wilhelm Radam
Nurturing de leads
Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds10
Catégorie2
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur

Several years of Experience in AI, LLMs, Robotics, Electronics. I create N8N templates which are open-source and free!!

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34