KI-Sprachanruf-Roboter - OpenAI GPT-4o + ElevenLabs + Twilio-Integration

Fortgeschritten

Dies ist ein Support Chatbot, AI Chatbot-Bereich Automatisierungsworkflow mit 10 Nodes. Hauptsächlich werden If, OpenAi, Webhook, ElevenLabs, HttpRequest und andere Nodes verwendet. Mehrsprachiger Sprach-Anrufbot mit GPT-4o, ElevenLabs und Twilio erstellen

Voraussetzungen
  • OpenAI API Key
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "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": "Spracheingabe prüfen",
      "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 Antwort",
      "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": "Audio in Speicher hochladen",
      "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-Antwort",
      "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": "Erstbegrüßung",
      "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": "Konversation protokollieren",
      "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": "Terminprüfung",
      "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": "Terminanfrage speichern",
      "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
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Support-Chatbot, KI-Chatbot

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes10
Kategorie2
Node-Typen7
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor

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

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34