Demo - Agente de voz de WhatsApp

Avanzado

Este es unMiscellaneous, AI Chatbot, Multimodal AIflujo de automatización del dominio deautomatización que contiene 18 nodos.Utiliza principalmente nodos como Webhook, GmailTool, RespondToWebhook, GoogleCalendarTool, McpTrigger. Usar Twilio, VAPI, Google Calendar y OpenAI para crear un asistente de voz para WhatsApp

Requisitos previos
  • Punto final de HTTP Webhook (n8n generará automáticamente)
  • Cuenta de Google y credenciales de API de Gmail
  • Clave de API de OpenAI
  • URL y Clave de API de Supabase
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "hSC68gkBlh2XuLpG",
  "meta": {
    "instanceId": "b8a5093b5456db9e25d3dfee5ac3b3b01627b82a51b5b4c92c46527b44088cc7"
  },
  "name": "Demo- Whatsapp Voice Agent",
  "tags": [],
  "nodes": [
    {
      "id": "43b9c5a5-4d0b-4713-a9c5-ea00e24cc320",
      "name": "Supabase Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "position": [
        1216,
        -32
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "options": {},
        "tableName": {
          "__rl": true,
          "mode": "list",
          "value": "documents",
          "cachedResultName": "documents"
        },
        "toolDescription": "Retrieve this tool to get pricing Informatio or any other General Inquiry."
      },
      "credentials": {
        "supabaseApi": {
          "id": "Q4GZ3W6mxCehoH23",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "07c67c64-9390-472d-807c-3c0c4a0405a7",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        1216,
        112
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "15ee6172-40e2-439b-bfce-a64850fdf4d1",
      "name": "Crear Evento en Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -240,
        32
      ],
      "parameters": {
        "end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
        "start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "nabin.busines@gmail.com",
          "cachedResultName": "nabin.busines@gmail.com"
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ctueqxNJZ9Heg0WW",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "e5a95d98-88ee-4557-84f7-ee3a4bf56ad1",
      "name": "Obtener Eventos del Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -96,
        32
      ],
      "parameters": {
        "options": {},
        "timeMax": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', ``, 'string') }}",
        "timeMin": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', ``, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "nabin.busines@gmail.com",
          "cachedResultName": "nabin.busines@gmail.com"
        },
        "operation": "getAll"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ctueqxNJZ9Heg0WW",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "f22f3c2d-1e22-45d8-9cfd-8895733b862b",
      "name": "Actualizar Evento del Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        48,
        48
      ],
      "parameters": {
        "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "nabin.busines@gmail.com",
          "cachedResultName": "nabin.busines@gmail.com"
        },
        "operation": "update",
        "updateFields": {}
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ctueqxNJZ9Heg0WW",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d56e75ab-7086-45cb-bf2c-dca53cfbbe8d",
      "name": "Eliminar Evento del Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        176,
        80
      ],
      "parameters": {
        "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
        "options": {},
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "nabin.busines@gmail.com",
          "cachedResultName": "nabin.busines@gmail.com"
        },
        "operation": "delete"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ctueqxNJZ9Heg0WW",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d8c9f9d7-1fb2-4293-b411-1d72afd03c63",
      "name": "Enviar Notificación por Correo",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        720,
        352
      ],
      "webhookId": "028d9f35-e95f-48db-98cd-d5fbe5e5ddef",
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {},
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "n8VNOucmPCeP3LOO",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "45496f90-c8a7-40a5-bbe3-2f0b183828e4",
      "name": "Servidor MCP – Calendario",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -240,
        -240
      ],
      "webhookId": "1902a1d2-f8a8-4601-b20c-90e824fe478d",
      "parameters": {
        "path": "1902a1d2-f8a8-4601-b20c-90e824fe478d"
      },
      "typeVersion": 2
    },
    {
      "id": "9ebb9d32-59ea-4f52-ba5a-f6a57356ac8d",
      "name": "Servidor MCP – Gmail",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        576,
        160
      ],
      "webhookId": "41a2ab5f-1a7d-440b-a1e3-1b2308dee744",
      "parameters": {
        "path": "41a2ab5f-1a7d-440b-a1e3-1b2308dee744"
      },
      "typeVersion": 2
    },
    {
      "id": "566c8afb-cb1b-4216-a543-5b26cb5182e8",
      "name": "Servidor MCP – Base de Conocimiento",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        1152,
        -240
      ],
      "webhookId": "3643c062-c554-43d8-84d1-692b886b780f",
      "parameters": {
        "path": "3643c062-c554-43d8-84d1-692b886b780f"
      },
      "typeVersion": 2
    },
    {
      "id": "61ded9b5-737a-42bf-956e-60614c87fbe2",
      "name": "Webhook Entrante (VAPI)",
      "type": "n8n-nodes-base.webhook",
      "position": [
        480,
        -112
      ],
      "webhookId": "81e240fc-d3fb-4ccd-b91a-0aacbf2d8f2a",
      "parameters": {
        "path": "81e240fc-d3fb-4ccd-b91a-0aacbf2d8f2a",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "fe90d72c-fef0-4646-8d07-f90851015ed0",
      "name": "Responder a Webhook (VAPI)",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        816,
        -112
      ],
      "parameters": {
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "application/xml"
              }
            ]
          }
        },
        "respondWith": "text",
        "responseBody": "=<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>\n   <Dial>\n      <Sip>sip:15795503867@sip.vapi.ai</Sip>\n   </Dial>\n</Response>\n"
      },
      "typeVersion": 1.4
    },
    {
      "id": "2000941e-5340-4f44-91a2-4068a172f316",
      "name": "Nota Adhesiva 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -432
      ],
      "parameters": {
        "color": 4,
        "width": 592,
        "height": 768,
        "content": "📅 Calendar MCP\nHandles Calendar actions:\n- Create\n- Fetch\n- Update\n- Delete\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e2af4a5c-aaac-4458-a26e-fda5db9c4fa5",
      "name": "Nota Adhesiva 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        64
      ],
      "parameters": {
        "color": 5,
        "width": 496,
        "height": 448,
        "content": "📧 Gmail MCP\nSends confirmation/reminder emails\nbased on voice commands.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "68569b1b-a853-47f2-90b3-284594f44c53",
      "name": "Nota Adhesiva 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -384
      ],
      "parameters": {
        "color": 6,
        "width": 400,
        "height": 656,
        "content": "📚 Knowledge Base MCP\nOpenAI generates embeddings from content.\nSupabase Vector Store saves/retrieves data\nfor knowledge base queries.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "36ab17f2-52f8-401b-af07-419cc50ccb4e",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -592
      ],
      "parameters": {
        "color": 2,
        "width": 640,
        "height": 624,
        "content": "## Entry Point – Incoming Webhook (VAPI)\n\nThis is the starting point of the workflow.  \n- A WhatsApp message or voice input is received via Twilio.  \n- Twilio routes the audio stream to VAPI through the TwiML app.  \n- VAPI processes the voice command and decides which MCP Server (Calendar, Gmail, Knowledge Base) should handle the request.  \n- The request is then passed into this webhook in n8n for execution.  \n\n### Flow:\nWhatsApp → Twilio (TwiML app) → VAPI → n8n Incoming Webhook  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "22d6f683-025c-4023-9151-c5ef3f9b0dc8",
      "name": "Nota Adhesiva 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -304
      ],
      "parameters": {
        "color": 3,
        "width": 272,
        "height": 336,
        "content": "This webhook is triggered by VAPI when a WhatsApp voice command is received via Twilio. \nVAPI interprets the user’s request and forwards it here. \nFrom this point, the workflow decides which MCP server (Calendar, Gmail, Knowledge Base) should process the action.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "74243893-60e4-4289-a9d5-8c9f363b897d",
      "name": "Nota Adhesiva 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -304
      ],
      "parameters": {
        "color": 3,
        "width": 272,
        "height": 336,
        "content": "This node sends the processed response back to VAPI. \nIt ensures that the result of the MCP server execution (e.g., calendar update, email confirmation, knowledge base query) \nis returned to the user via WhatsApp.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "09fcb8e2-ec67-4f88-a908-d558030605fe",
  "connections": {
    "07c67c64-9390-472d-807c-3c0c4a0405a7": {
      "ai_embedding": [
        [
          {
            "node": "43b9c5a5-4d0b-4713-a9c5-ea00e24cc320",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "15ee6172-40e2-439b-bfce-a64850fdf4d1": {
      "ai_tool": [
        [
          {
            "node": "45496f90-c8a7-40a5-bbe3-2f0b183828e4",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "d56e75ab-7086-45cb-bf2c-dca53cfbbe8d": {
      "ai_tool": [
        [
          {
            "node": "45496f90-c8a7-40a5-bbe3-2f0b183828e4",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "e5a95d98-88ee-4557-84f7-ee3a4bf56ad1": {
      "ai_tool": [
        [
          {
            "node": "45496f90-c8a7-40a5-bbe3-2f0b183828e4",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "43b9c5a5-4d0b-4713-a9c5-ea00e24cc320": {
      "ai_tool": [
        [
          {
            "node": "566c8afb-cb1b-4216-a543-5b26cb5182e8",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "f22f3c2d-1e22-45d8-9cfd-8895733b862b": {
      "ai_tool": [
        [
          {
            "node": "45496f90-c8a7-40a5-bbe3-2f0b183828e4",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "61ded9b5-737a-42bf-956e-60614c87fbe2": {
      "main": [
        [
          {
            "node": "fe90d72c-fef0-4646-8d07-f90851015ed0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d8c9f9d7-1fb2-4293-b411-1d72afd03c63": {
      "ai_tool": [
        [
          {
            "node": "9ebb9d32-59ea-4f52-ba5a-f6a57356ac8d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Varios, Chatbot de IA, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos18
Categoría3
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34