Crear un recepcionista virtual impulsado por IA con Google Calendar y Hojas de cálculo

Intermedio

Este es unMiscellaneous, AI Chatbot, Multimodal AIflujo de automatización del dominio deautomatización que contiene 12 nodos.Utiliza principalmente nodos como GoogleSheets, Agent, GoogleSheetsTool, GoogleCalendarTool, ChatTrigger. Usar Google Calendar y Sheets para crear un recepcionista virtual impulsado por IA

Requisitos previos
  • Credenciales de API de Google Sheets
  • Clave de API de OpenAI
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
{
  "meta": {
    "instanceId": "a2decaa80798f56a13dbca1aa742181dfea463e822cc650b5a716ef8b115667a"
  },
  "nodes": [
    {
      "id": "e38100f0-54dd-4a75-a3bd-3b6295ca96d0",
      "name": "Memoria de Conversación",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        336,
        16
      ],
      "parameters": {
        "contextWindowLength": 15
      },
      "typeVersion": 1.3
    },
    {
      "id": "22a387d3-ffdd-4221-b27d-dde8711c1186",
      "name": "Verificar Disponibilidad en Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        720,
        16
      ],
      "parameters": {
        "options": {},
        "timeMax": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
        "timeMin": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "ris362720@gmail.com",
          "cachedResultName": "ris362720@gmail.com"
        },
        "resource": "calendar"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ZKFdGvnaSxLoLCiO",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "f62ef70f-6295-4a02-8342-83d3a67d5429",
      "name": "Reservar Cita en Calendario",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        592,
        16
      ],
      "parameters": {
        "end": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
        "start": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "ris362720@gmail.com",
          "cachedResultName": "ris362720@gmail.com"
        },
        "additionalFields": {
          "summary": "={{ $fromAI('event_title', `Event title with customer name and service`, 'string') }}",
          "description": "={{ $fromAI('event_description', `Detailed event description including: Business name, Service type, Duration, Customer name, Phone, Special notes`, 'string') }}"
        },
        "useDefaultReminders": false
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ZKFdGvnaSxLoLCiO",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ca5ad6d5-227f-4776-9f37-ed9497d838d9",
      "name": "Guardar Registro de Cita",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        464,
        16
      ],
      "parameters": {
        "columns": {
          "value": {
            "summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('summary', `summary conversation`, 'string') }}",
            "event_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('event_id', ``, 'string') }}",
            "services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('services', ``, 'string') }}",
            "patient name ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_name_', ``, 'string') }}",
            "patient number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_number', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "patient number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "patient number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "patient name ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "patient name ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "event_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "event_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "services",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "services",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1454968607,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=1454968607",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
          "cachedResultName": "Bussiness  details"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fGbQfgGA6gTKu9Jd",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
      "name": "Analizador de Salida Estructurada",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "disabled": true,
      "position": [
        848,
        16
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"ai_reply\": \"I'd be happy to help you! What service are you interested in booking today?\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "ba1c4cff-5e5e-487a-952e-60c886cd0fb8",
      "name": "Cuando se recibe mensaje de chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -544,
        -208
      ],
      "webhookId": "73eb01dc-fa71-4f00-b3e8-17e716ef86f6",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "02fce16f-b548-4db3-a5c4-e6b06c4d0f55",
      "name": "Modelo de Chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        208,
        16
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "TEPbLQLrisXKXcU1",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "52494195-7502-473f-a254-afb53bf89a74",
      "name": "Modelo de Chat OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        928,
        224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "TEPbLQLrisXKXcU1",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
      "name": "Obtener detalles del negocio",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -176,
        -208
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
          "cachedResultName": "Bussiness  details"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fGbQfgGA6gTKu9Jd",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f0752315-6a90-48df-a8fe-9dda53d2c58d",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -336
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 272,
        "content": "## Get Business Details\nPulls service list, hours, policies, and AI personality from Google Sheets.  \nProvides the AI with the business-specific context.  "
      },
      "typeVersion": 1
    },
    {
      "id": "b4ebcd48-a651-4bad-b7c3-dd6939bea1ed",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 976,
        "height": 528,
        "content": "## AI Receptionist Agent  \nHandles customer chat with GPT + business context,  \nanswers questions, books appointments via Google Calendar,  \nand saves appointment records into Google Sheets.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "4c6250f1-093a-49c1-a496-b8b883ca4787",
      "name": "Recepcionista de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        464,
        -208
      ],
      "parameters": {
        "text": "={{ $('When chat message received').item.json.chatInput }}",
        "options": {
          "systemMessage": "=# {{ $json['ai_name '] }} - {{ $json.business_name }} Virtual Receptionist\n\nYou are {{ $json['ai_name '] }}, the {{ $json.ai_personality }} virtual receptionist at **{{ $json.business_name }}**. Your role is to {{ $json.ai_role }}\n\n## BUSINESS ESSENTIALS\n\n**Type**: {{ $json[' business_type'] }}\n**Location**:  {{ $json[' location'] }}\n**Hours**:  {{ $json[' working_hours '] }}\n**Currency**: {{ $json.currency }}\n\n### Services & Pricing\n{{ $json.services }}\n\n## COMMUNICATION STYLE\n- **Tone**: {{ $json.ai_personality }}\n- **Length**: 2-3 sentences per response\n- **Approach**: Natural conversation, not robotic\n- **Use names**: Once provided, use customer's name\n\n## BOOKING WORKFLOW\n1. **Understand need**: Service type, timing preference\n2. **Check availability**: Use checkAvailability tool with business calendar\n3. **Gather details**: Name, phone number, email (optional)\n4. **Confirm booking**: Use bookAppointment tool\n5. **Save data**: Use captureCustomerData and saveAppointment tools\ntime now: {{ $now }}\n\n## KEY GUIDELINES\n\n### ✅ DO\n- Welcome warmly: \"Hello! I'm {{ $json['ai_name '] }} from {{ $json.business_name }}\"\n- Offer alternatives if requested time unavailable\n- Prioritize emergencies if emergency services available\n- Explain pricing clearly when asked\n- Use all available tools for complete booking process\n\n### ❌ DON'T\n- Give medical/professional advice outside your scope\n- Book outside business hours\n- Repeat questions already answered\n- Ask for unnecessary personal information\n- Provide vague responses about availability\n\n## EMERGENCY PROTOCOL\n{% if $('Select Business Context').item.json.emergency_available %}\nEmergencies are available. Prioritize urgent requests and offer same-day slots when possible.\n{% endif %}\n\n## BUSINESS CONTEXT\n\n- Timezone: {{ $json['timezone '] }}\n- Advance booking limit:{{ $json[' booking_advance_days '] }}  days\n- Cancellation policy: {{ $json['cancellation_hours '] }} hours notice\n\n---\nProvide responses in this JSON format:\n{\n  \"ai_reply\": \"Your helpful and personalized response here\"\n}\n\n**Remember**: You're representing {{ $json.business_name }}. Be helpful, accurate, and maintain the professional standard they expect."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    }
  ],
  "pinData": {},
  "connections": {
    "02fce16f-b548-4db3-a5c4-e6b06c4d0f55": {
      "ai_languageModel": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "52494195-7502-473f-a254-afb53bf89a74": {
      "ai_languageModel": [
        [
          {
            "node": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "e38100f0-54dd-4a75-a3bd-3b6295ca96d0": {
      "ai_memory": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2": {
      "main": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca5ad6d5-227f-4776-9f37-ed9497d838d9": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c519dbd4-c95e-4c12-bd46-ccb76d4301ca": {
      "ai_outputParser": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "f62ef70f-6295-4a02-8342-83d3a67d5429": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ba1c4cff-5e5e-487a-952e-60c886cd0fb8": {
      "main": [
        [
          {
            "node": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "22a387d3-ffdd-4221-b27d-dde8711c1186": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "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?

Intermedio - 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
Intermedio
Número de nodos12
Categoría3
Tipos de nodos9
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34