Asistente de texto de WhatsApp

Avanzado

Este es unMiscellaneous, AI Chatbot, Multimodal AIflujo de automatización del dominio deautomatización que contiene 27 nodos.Utiliza principalmente nodos como Set, Twilio, GmailTool, TwilioTrigger, Agent. Usar OpenAI, integración de calendario y correo para crear un bot de soporte al cliente para WhatsApp

Requisitos previos
  • Cuenta de Google y credenciales de API de Gmail
  • Clave de API de OpenAI
  • Información de conexión de la base de datos PostgreSQL
  • 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": "RAYoeKNp3GoyEDxJ",
  "meta": {
    "instanceId": "b8a5093b5456db9e25d3dfee5ac3b3b01627b82a51b5b4c92c46527b44088cc7"
  },
  "name": "Whatsapp Text Agent",
  "tags": [],
  "nodes": [
    {
      "id": "25be2a63-0499-4041-9b82-d91095595210",
      "name": "Cuando se Ejecuta por Otro Flujo de Trabajo",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -1120,
        -32
      ],
      "parameters": {
        "inputSource": "passthrough"
      },
      "typeVersion": 1.1
    },
    {
      "id": "1416d456-079a-477f-afd1-dafcb248f6df",
      "name": "Modelo de Chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1024,
        192
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "cf766459-4da1-44d7-b5e2-d1abeb2013f2",
      "name": "Obtener múltiples eventos en Calendario Google",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -896,
        272
      ],
      "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": "a521bf39-d14d-4dd6-8b35-a1eb2b1d7c38",
      "name": "Crear un evento en Calendario Google",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -736,
        192
      ],
      "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": "4f35b0fa-4eee-4ad5-a31a-9e13ebb6ded3",
      "name": "Eliminar un evento en Calendario Google",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -608,
        272
      ],
      "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": "7f05ff63-9ffe-40f2-b9bf-e07f3a6eeeeb",
      "name": "Crear un evento en Calendario Google1",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        -448,
        192
      ],
      "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": "1b80156f-009f-4175-8d6a-b51a88a8e8be",
      "name": "Herramienta de Calendario",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        464,
        240
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "ZnQPXmxkpwVly7Ag",
          "cachedResultName": "Calendar Sub Agent"
        },
        "description": "Use this Agent to Check Calendar availability, book appointments, and effectively manage session schedules like updatinf and deleting event.",
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "2e4e7009-35b3-49dd-a3c2-8d7aefa45525",
      "name": "Herramienta de Base de Conocimiento",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        592,
        240
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "VzMwnIb1MrJgCvNb",
          "cachedResultName": "Knowledge Base Agent (FAQ) (Sub Agent)"
        },
        "description": "Trigger when customer requests details on diagnosis, Pricing, Quotes or general FAQ.",
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5df9b2b3-5d98-4df4-b1a3-92f7029fac13",
      "name": "Herramienta de Correo Electrónico",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        720,
        240
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "asdMM8Ip0p1BpgKo",
          "cachedResultName": "Email Sub Agent"
        },
        "description": "Use this tool to send email to clients such as confirmation, updates or Follow ups to clients.",
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6010798b-5cf4-44e2-9308-c7a6095371af",
      "name": "Modelo de Chat OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        176,
        240
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6865c276-9b78-4c9f-ad60-681fd6ac6361",
      "name": "Almacén Vectorial Supabase",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "position": [
        832,
        640
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "options": {},
        "tableName": {
          "__rl": true,
          "mode": "list",
          "value": "documents",
          "cachedResultName": "documents"
        },
        "toolDescription": "Call this tool to fetch data for diagnosis, pricing quotes or any other general inquiries."
      },
      "credentials": {
        "supabaseApi": {
          "id": "Q4GZ3W6mxCehoH23",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "65751620-a0b2-4761-a8c5-72f6c0b587c2",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        848,
        784
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f60f9ec2-7b02-42e4-b7e5-4f06b497cb56",
      "name": "Modelo de Chat OpenAI2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        736,
        624
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d5b5f5c1-d7d5-4d23-8f2e-5890fdd286c6",
      "name": "Enviar un mensaje en Gmail",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        -256,
        720
      ],
      "webhookId": "a22a1862-c2d8-49e5-914e-95d95a6743ff",
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "n8VNOucmPCeP3LOO",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "861243df-9215-436d-bfed-2eca7626bfe8",
      "name": "Modelo de Chat OpenAI3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -432,
        720
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "I91cpgp1xdieYw6j",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
      "name": "Agente de Soporte de IA WhatsApp",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        384,
        16
      ],
      "parameters": {
        "text": "={{ $json.usersMessage }}",
        "options": {
          "systemMessage": "=#Role\nYou are the Primary Assistant Agent for Nabin AI Solutions, operating on WhatsApp.\n\nYour role is to interact naturally with customers, understand their requests, and delegate tasks to specialized sub-agents (Calendar Tool, Knowledge Base Tool, Email Tool).\n\nYou never perform tool tasks yourself. Instead, you:\nRoute queries to the correct sub-agent with structured inputs.\n\nReceive outputs from sub-agents.\nRephrase results into clear, conversational responses for the user.\n\nSub-Agents & When to Use Them\n\n##Calendar Tool\nFor creating, retrieving, updating, or deleting events.\nAlways confirm details before creation, update, or deletion.\nUse Get Events first before modifying or deleting.\nThe Duration of meeting would always be 30 minutes.\nDo not engage with customer too much make it only 1 or 2 conversation at max.\nOnce the meeting is booked ask the email adress with the user and once the email is received, send the email automatically to the user\n\n##Knowledge Base Tool\nFor retrieving FAQs, pricing, or diagnostic information.\nOnly provide structured results from the knowledge base never invent answers.\nIf safety-critical issues appear, highlight them clearly.\nDo not output all the details, summarixe the data and only output specific details the user is asking.\n\n##Email Tool\nFor sending confirmation emails, pricing emails, or updates.\nConfirm recipient and content with the user before sending.\nAlways output a full draft before marking STATUS: Email Sent ✅.\n\n#Workflow\nUnderstand the customer’s request.\nSelect the correct sub-agent.\nFormat the query according to the sub-agent’s input format.\nSend the request to the sub-agent.\nReceive the response and rephrase it for the customer (clear, concise, professional).\nIf multiple tools are required (e.g., Knowledge Base + Email), orchestrate them in sequence.\n\n#Example Conversations\n\n##Example 1 – Booking\nUser: “Book me a meeting on Friday at 11 AM.”\nAssistant: “Okay, booking you for Friday at 11 AM for 1 hour. Confirm?”\n→ On confirmation → Call Calendar Tool → Create Event\n→ Reply: “✅ Appointment booked successfully!”\n\n##Example 2 – Diagnostic → Booking\nUser: I would like to know more about your services? \nCall Knowledge Base Tool with user details and reply to the customer\n\nWould you like me to book you an Appointment?\n→ If yes → Call Calendar Tool → Get Many Events in Google Calendar →If Available → Create an Event\n\n##Example 3 – Email Confirmation\nUser: Email me the price range for a chatbot.\nAssistant:\nCall Knowledge Base Tool for chatbot.\nConfirm recipient email with user.\nCall Email subagent with subject: “Information regarding chatbot”\nReply: “📧 Price details have been sent to your email.”\n\n\n#Rules\n\nAlways confirm unclear details.\n\nNever guess or fabricate responses — rely only on sub-agents.\n\nKeep tone polite, clear, and professional.\n\nWhen using sub-agents, stick to their exact input/output formats.\n\nAlways present sub-agent outputs in a user-friendly WhatsApp message style.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "de959068-b936-4518-aecb-3d5af8342144",
      "name": "Agente de Base de Conocimiento",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        768,
        432
      ],
      "parameters": {
        "text": "={{ $json.query }}",
        "options": {
          "systemMessage": "=You are the RAG Knowledge Retrieval Sub-Agent for Nabin AI Solution.\nPurpose\nYour only responsibility is to query the knowledge base (see below) and return structured, relevant data.\nYou do not interact with customers directly.\nYou only respond to the main delegate agent’s requests.\nYou must provide only fact-based answers from the knowledge base—never invent data.\n\nInput Format\nYou will receive customer case details in the following format:\nName: [Customer Name]  \nIssue Description: [Customer’s problem or service request]  \n\n\nOutput Format\nYou must always return results in exactly this format:\n-LIKELY_FAULTS: [1–3 likely issues based on symptoms/service requested]  \n-DIAGNOSTIC_FEE: £45 (or £75 if complex electrical/advanced integration work)  \n-PRICE_RANGE: £[min]–£[max] (typical setup/customization cost range)  \n-SAFETY_CRITICAL: Yes/No  \n-ADDITIONAL_INFO: [Notes on add-ons, API integration, part availability, complexity, or special considerations]  \n\n\nRetrieval Guidelines\nMatch the customer’s issue/service to the Nabin AI Solution Knowledge Base (provided below).\nUse Pricing Model data to calculate cost ranges (plan fees, per-minute usage, and add-ons).\nMark SAFETY_CRITICAL: Yes if the issue involves failures that could cause major business disruption (e.g., call routing failures, escalation breakdowns, data sync loss).\nAlways phrase results as “likely,” “commonly,” or “typically” (never definitive).\nApply diagnostic fee:\n£45 standard (basic troubleshooting, configuration).\n£75 advanced (complex integrations, electrical/telecom layer, API debugging).\nInclude add-ons or complexity notes under ADDITIONAL_INFO.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "f3c7499a-c6c0-4260-8ecb-c7c8d012381c",
      "name": "Memoria de Conversación (Postgres)",
      "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
      "position": [
        336,
        240
      ],
      "parameters": {
        "sessionKey": "={{ $json.usersMobileNumber }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 50
      },
      "credentials": {
        "postgres": {
          "id": "9D4HR2YjH923hykD",
          "name": "Postgres account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3c2bac28-e8e4-422f-864f-0cf22382643b",
      "name": "Agente de Calendario",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -848,
        -32
      ],
      "parameters": {
        "text": "={{ $json.query }}",
        "options": {
          "systemMessage": "=# Role\nYou are a Calendar Assistant.\nYour job is to create, retrieve, update, and delete events in the user's calendar with complete accuracy.\n\n# Calendar Management Tools\n-Create Event → Use for adding new events\n-Get Events → Use to retrieve the user's calendar schedule\n-Delete Event → First call Get Events to obtain the event ID, then delete it\n-Update Event → First call Get Events to obtain the event ID, then update it\n\n# Rules\n-Convert each incoming query into the correct calendar action\n-Always collect and use exact event details: title, date, time, and any notes\n-The current date/time is: {{ $now.toString() }}\n-The duration of the event is always 30 minutes\n-Always confirm event details before creation, update, or deletion\n-IDs for update or delete actions must always come from a Get Events call to avoid errors\n\n# Accuracy Requirements\n-Event times and dates must match exactly what the user provides no approximations\n-Never assume repeated events unless explicitly stated\n-Always check for conflicts using Get Events before creating a new event\n\n# Once Booking is confirmed with the user Always Input this in google calendar.\n-Task: Create Event\n-Title: [Event Title]\n-Date: [YYYY-MM-DD]\n-Time: [HH:mm]\n-Notes: [Optional]\n\n# Output\nRespond only with concise confirmation or error information for the given action.\n\n#Example\nExample 1 – Create Event\nUser: Book a meeting at 5 September at 2 PM.\nAssistant:\n Confirming event: Meeting on 2025-09-05 at 14:00\nTask for AI:\n ✅ Task: Create Event\nTitle: Meeting with { User’s Name }\n\n\nDate: 2025-09-05\n\n\nTime: 14:00\n\n\nNotes: Quarterly report\n\n\n\nExample 2 – Update Event\nUser: Move my meeting on 5 September at 2 PM to 6 September at 3 PM.\nAssistant:\n Found event on 2025-09-05 at 14:00. Updating to 2025-09-06 at 15:00.\nTask for AI:\n ✅ Task: Update Event\nID: { Event ID }\n\n\nTitle: Meeting with {User’s Name }\n\n\nDate: 2025-09-06\n\n\nTime: 15:00\n\n\nNotes: Updated schedule\n\n\n\nExample 3 – Delete Event\nUser: Cancel my meeting on 7 September at 10:30 AM.\nAssistant:\n Found event on 2025-09-07 at 10:30. Deleting.\nTask for AI:\n ✅ Task: Delete Event\nID: { Event ID }\n\n\n\nExample 4 – Conflict\nUser: Book a call on 7 September at 10:30 AM.\nAssistant:\n ❌ Error: You already have an event on 2025-09-07 at 10:30.\nTask for AI:\n No action\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "337be5f1-64d6-41d7-927f-be3897607d80",
      "name": "Agente de Correo Electrónico",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -432,
        496
      ],
      "parameters": {
        "text": "={{ $json.query }}",
        "options": {
          "systemMessage": "=\n#Role\n\nYou are the Email Agent for Nabin AI solutions.\nYour job is to send professional emails based on given instructions. \n\nYou do not create content outside the provided context — only generate and send structured emails.\n\n#Input Format\nYou will receive email request data in this format:\nSender: [Business/Agent Name]\nRecipient: [Recipient Name + Email Address]\nSubject: [Email Subject]\nContext: [Details, purpose, or conversation history]\nTone: [Formal / Friendly / Concise / Apologetic / Promotional]\nAction: [Send]\n\n\n#Task\n\nBased on the input:\n\nIf Action = Send,  then mark as:\nSTATUS: Email Sent ✅\n[Include full sent email for record keeping]\n\n#Guidelines\nAlways start with a polite greeting (e.g., Dear {Name}, Hi {Name}\nMatch the Tone input (formal, friendly, concise, apologetic, promotional)\nKeep the structure: Greeting → Main Content → Closing → Signature\nEnsure grammar, clarity, and professionalism\nFor complaints → acknowledge issue + offer solution\nFor promotions → highlight value + clear CTA (Call To Action)\nUse placeholders {Name}, {Date}, {Offer} if information is missing\nDo not include personal opinions or unverified details\n\n#Response Rules\nDo not invent context outside provided input\nAlways output a full draft email before sending\nRespect Action: only “send” when explicitly instructed\nKeep formatting consistent with professional email standards\n\nConfirm STATUS: Email Sent ✅ after sending\n\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "965d09f8-afff-4081-9fa7-c51d1c619686",
      "name": "Enviar Respuesta WhatsApp",
      "type": "n8n-nodes-base.twilio",
      "position": [
        800,
        16
      ],
      "parameters": {
        "to": "={{ $('Format Incoming Message').item.json.usersMobileNumber }}",
        "from": "={{ $('Format Incoming Message').item.json.WhatsappAiAgentNumber }}",
        "message": "={{ $json.output }}",
        "options": {},
        "toWhatsapp": true
      },
      "credentials": {
        "twilioApi": {
          "id": "V3HbhWaYE0DiMZYM",
          "name": "Twilio account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "98e1f102-4329-461f-8580-101f21cd847f",
      "name": "Mensaje Entrante WhatsApp",
      "type": "n8n-nodes-base.twilioTrigger",
      "position": [
        -144,
        16
      ],
      "webhookId": "2983ca40-cad7-45de-b9d9-13698a65fe09",
      "parameters": {
        "updates": [
          "com.twilio.messaging.inbound-message.received"
        ]
      },
      "credentials": {
        "twilioApi": {
          "id": "V3HbhWaYE0DiMZYM",
          "name": "Twilio account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ae42acee-aa3e-428b-9c95-e762ff83cbd3",
      "name": "Formatear Mensaje Entrante",
      "type": "n8n-nodes-base.set",
      "position": [
        96,
        16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9053a9fd-1998-4cd5-9b5d-2913db07f978",
              "name": "usersMessage",
              "type": "string",
              "value": "={{ $json.data.body }}"
            },
            {
              "id": "2577d8f1-c8ba-4bfe-989c-6182531ac4e8",
              "name": "usersMobileNumber",
              "type": "string",
              "value": "={{ $json.data.from.replaceAll('whatsapp:', '') }}"
            },
            {
              "id": "01a58a24-7ea5-487d-8ca2-aad875125657",
              "name": "WhatsappAiAgentNumber",
              "type": "string",
              "value": "={{ $json.data.to.replaceAll('whatsapp:', '') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3e2b758e-e180-406f-955f-3e7ca65c03c2",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -224
      ],
      "parameters": {
        "color": 4,
        "width": 1264,
        "height": 608,
        "content": "🤖 **Main WhatsApp AI Agent**  \nThis is the core assistant that handles incoming WhatsApp messages (via Twilio).  \nIt uses memory + connected tools to understand the request and decide the right action.  \n\nCapabilities:  \n- Understand natural language queries.  \n- Decide whether to use Calendar, Knowledge Base, or Email.  \n- Keep track of the conversation context.  \n- Reply back to the customer on WhatsApp.  \n\nThink of this agent as the **orchestrator** — it routes tasks to other specialised agents or tools.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "4da17b9c-aba3-479f-bf74-a82b3910663c",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1152,
        -288
      ],
      "parameters": {
        "color": 3,
        "width": 848,
        "height": 720,
        "content": "📅 **Calendar Agent**  \nThis agent connects with Google Calendar to manage scheduling.  \n\nCapabilities:  \n- Check availability (get all events).  \n- Create new events.  \n- Delete existing events.  \n\nUse case examples:  \n- \"Book me a meeting with John tomorrow at 3 PM.\"  \n- \"What’s on my schedule next Friday?\"  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "89696739-72bf-4369-8b19-92798fc7d7de",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        400
      ],
      "parameters": {
        "color": 5,
        "width": 1056,
        "height": 496,
        "content": "📚 **Knowledge Base Agent**  \nThis agent answers FAQs and retrieves information from your Supabase Vector Store.  \n\nHow it works:  \n- User asks a question → embeddings are created with OpenAI → best matches are pulled from Supabase.  \n- The AI uses those results to give an accurate answer.  \n\nUse case examples:  \n- \"What is your refund policy?\"  \n- \"How do I reset my company email password?\"  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "d9e5fc2a-233c-45ac-b830-e4587f710d0d",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        464
      ],
      "parameters": {
        "color": 6,
        "width": 816,
        "height": 448,
        "content": "📧 **Email Agent**  \nThis agent drafts and sends professional emails using Gmail.  \n\nCapabilities:  \n- Generate AI-written emails based on WhatsApp requests.  \n- Send messages through your connected Gmail account.  \n\nUse case examples:  \n- \"Send a follow-up email to Sarah confirming our meeting.\"  \n- \"Email the client the latest project update.\"  \n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6ae9047d-5473-4216-8565-6ae9129a24b6",
  "connections": {
    "5df9b2b3-5d98-4df4-b1a3-92f7029fac13": {
      "ai_tool": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "1b80156f-009f-4175-8d6a-b51a88a8e8be": {
      "ai_tool": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "65751620-a0b2-4761-a8c5-72f6c0b587c2": {
      "ai_embedding": [
        [
          {
            "node": "6865c276-9b78-4c9f-ad60-681fd6ac6361",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "1416d456-079a-477f-afd1-dafcb248f6df": {
      "ai_languageModel": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "6010798b-5cf4-44e2-9308-c7a6095371af": {
      "ai_languageModel": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "f60f9ec2-7b02-42e4-b7e5-4f06b497cb56": {
      "ai_languageModel": [
        [
          {
            "node": "de959068-b936-4518-aecb-3d5af8342144",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "861243df-9215-436d-bfed-2eca7626bfe8": {
      "ai_languageModel": [
        [
          {
            "node": "337be5f1-64d6-41d7-927f-be3897607d80",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "2e4e7009-35b3-49dd-a3c2-8d7aefa45525": {
      "ai_tool": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "6865c276-9b78-4c9f-ad60-681fd6ac6361": {
      "ai_tool": [
        [
          {
            "node": "de959068-b936-4518-aecb-3d5af8342144",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ae42acee-aa3e-428b-9c95-e762ff83cbd3": {
      "main": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d5b5f5c1-d7d5-4d23-8f2e-5890fdd286c6": {
      "ai_tool": [
        [
          {
            "node": "337be5f1-64d6-41d7-927f-be3897607d80",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "98e1f102-4329-461f-8580-101f21cd847f": {
      "main": [
        [
          {
            "node": "ae42acee-aa3e-428b-9c95-e762ff83cbd3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bfe4d075-18f0-4ba6-a85c-ddfb09437d73": {
      "main": [
        [
          {
            "node": "965d09f8-afff-4081-9fa7-c51d1c619686",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f3c7499a-c6c0-4260-8ecb-c7c8d012381c": {
      "ai_memory": [
        [
          {
            "node": "bfe4d075-18f0-4ba6-a85c-ddfb09437d73",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "25be2a63-0499-4041-9b82-d91095595210": {
      "main": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a521bf39-d14d-4dd6-8b35-a1eb2b1d7c38": {
      "ai_tool": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "4f35b0fa-4eee-4ad5-a31a-9e13ebb6ded3": {
      "ai_tool": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "cf766459-4da1-44d7-b5e2-d1abeb2013f2": {
      "ai_tool": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "7f05ff63-9ffe-40f2-b9bf-e07f3a6eeeeb": {
      "ai_tool": [
        [
          {
            "node": "3c2bac28-e8e4-422f-864f-0cf22382643b",
            "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 nodos27
Categoría3
Tipos de nodos13
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