Caso completo: Vapi + n8n reservando una cita
| Fase | F3 — Conexión con el mundo real y automatización no visual |
|---|---|
| Módulo | M3.4 — Tool Calling |
| Puntos de profesionalidad al superar el test | 55 |
Objetivo práctico
Al terminar esta lección tendrás una herramienta (Custom Tool) real configurada en tu asistente de Vapi, conectada mediante Webhook con el workflow de n8n del módulo 3.3, adaptando la respuesta al formato exacto que exige Vapi, y probada con una llamada de prueba real.
Resultado que obtendrás
Un ciclo completo funcional: el agente de Vapi pide los datos de una cita, activa la herramienta, n8n crea el evento en Google Calendar, y el agente confirma la cita en voz alta a partir de la respuesta recibida.
Dónde encaja dentro del sistema final
Esta lección implementa, con Vapi y n8n, el ciclo completo descrito en la lección anterior: es uno de los dos casos obligatorios de Tool Calling de este curso (el otro es Retell + Make, siguiente lección).
Conocimientos previos
- Tool Calling: cómo el agente pide ayuda a otros sistemas (lección anterior).
- Ensamblaje del agente en Vapi (módulo 2.3).
- Automatización accesible con n8n (módulo 3.3), con el workflow del Blueprint ya activo.
Herramientas necesarias
- Un asistente de Vapi ya creado (módulo 2.3).
- El workflow de n8n del módulo 3.3, activo, con su URL de Webhook de producción.
- Un navegador con NVDA activo.
Posible coste
Esta lección no genera coste adicional a las cuentas ya creadas. Las llamadas de prueba que realices consumirán minutos y tokens según lo explicado en el módulo 2.1.
Modelo mental
Piensa en dar de alta, en la centralita, un nuevo botón de marcación rápida que conecta directamente con el departamento de agenda: antes de esta lección, tu telefonista (el agente de Vapi) no tenía forma de «llamar» a la agenda; a partir de aquí, sí.
Explicación
Según la documentación oficial de Vapi verificada el 30 de agosto de 2026, las herramientas se gestionan en una sección propia («Tools») del panel, independiente de cada asistente concreto, lo que permite reutilizar la misma herramienta en varios asistentes. El sistema anterior de «Custom Functions» quedó sustituido en 2026 por esta API de Tools, más moderna. Al crear una herramienta de tipo «Function», defines su nombre técnico (por ejemplo, reservar_cita), una descripción en lenguaje natural (que el LLM usa para decidir cuándo activarla), el esquema de parámetros en JSON (los datos que debe recoger de la conversación), y la Server URL: la dirección del Webhook que la recibirá, en este caso, la URL de producción de tu workflow de n8n.
Recuerda del módulo anterior que Vapi exige una respuesta con un formato concreto: un objeto con un array results, cada uno con toolCallId y result. El Blueprint de n8n del módulo 3.3 responde con un JSON más sencillo, pensado como base genérica; en esta lección lo adaptas añadiendo un nodo intermedio que construye la respuesta exacta que Vapi necesita, usando el valor real de toolCallId que verás en los datos de entrada de una ejecución de prueba (ese campo exacto conviene confirmarlo inspeccionando el payload real, ya que los detalles finos de la estructura pueden variar entre versiones de la plataforma).
Vocabulario nuevo
Server URL (Vapi)
Piénsalo así: La dirección exacta a la que se envía el aviso cuando se activa el botón de marcación rápida.
Dirección del Webhook que Vapi usa para enviar los datos de una llamada a herramienta, configurada en la herramienta de tipo Function.
Ejemplo: La Server URL de la herramienta «reservar_cita» es la URL de producción de tu workflow de n8n.
Preparación
Ten a mano la URL de producción de tu workflow de n8n (módulo 3.3) y el acceso a tu asistente de Vapi (módulo 2.3).
Procedimiento paso a paso
Contexto: Vas a crear la herramienta «reservar_cita» en la sección Tools de Vapi.
Acción de teclado: En el Dashboard de Vapi, pulsa Tab o H hasta «Tools» en el menú lateral, y activa «Create Tool». Elige el tipo «Function».
Respuesta esperada de NVDA: NVDA debería anunciar el formulario de creación: nombre, descripción, y el editor de esquema de parámetros.
Qué significa: Este formulario es un formulario HTML estándar, accesible mediante Tab y campos de texto.
Acción siguiente: Rellena el nombre (reservar_cita), una descripción clara («Reserva una cita en el calendario del negocio cuando el cliente ha confirmado nombre, servicio, fecha y hora»), y define los parámetros: nombre, telefono, servicio, fecha_hora_inicio, fecha_hora_fin, todos como texto obligatorio.
Contexto: Vas a indicar la Server URL, apuntando a tu workflow de n8n.
Acción de teclado: Localiza el campo «Server URL» con Tab y pega la URL de producción de tu workflow de n8n copiada previamente con Ctrl+C.
Respuesta esperada de NVDA: NVDA debería leer la URL pegada al recorrer el campo de nuevo.
Qué significa: A partir de ahora, cada vez que el agente active esta herramienta, Vapi enviará los datos a esa URL.
Acción siguiente: Guarda la herramienta.
Contexto: Vas a asociar la herramienta a tu asistente.
Acción de teclado: Ve a «Assistants», abre tu asistente del módulo 2.3, localiza la pestaña «Tools» y activa «Add Tool», seleccionando «reservar_cita» de la lista.
Respuesta esperada de NVDA: NVDA debería anunciar la lista de herramientas disponibles y confirmar la selección.
Qué significa: El asistente ya conoce la herramienta y puede activarla durante una conversación.
Acción siguiente: Revisa también el prompt del asistente y añade una instrucción explícita: cuándo debe usar esta herramienta (por ejemplo, «cuando el cliente confirme que quiere reservar una cita y tengas todos los datos necesarios»).
Contexto: Vas a adaptar la respuesta de n8n al formato exacto que exige Vapi, usando datos reales de una prueba.
Acción de teclado: Realiza una llamada de prueba desde el panel de pruebas de Vapi pidiendo una cita. En n8n, abre la execution generada y localiza, en los datos de entrada del nodo Webhook, el campo que contiene el toolCallId real recibido.
Respuesta esperada de NVDA: NVDA leerá el JSON completo de la execution, igual que practicaste en el módulo 3.1.
Qué significa: Este es el dato real que necesitas para construir correctamente la respuesta; no lo adivines, confírmalo en los datos reales de la prueba.
Acción siguiente: Añade un nodo «Set» justo antes de «Responder al agente» que construya el objeto {"results": [{"toolCallId":
, "result": }]}, y actualiza el nodo de respuesta para devolver ese objeto.
Posibles diferencias de interfaz
Los nombres exactos de los campos («Tools», «Server URL», «Add Tool») pueden variar ligeramente entre versiones de Vapi. El principio estable es siempre el mismo: crear una herramienta con nombre, descripción, esquema de parámetros y una URL de Webhook, y asociarla después a un asistente concreto.
Errores frecuentes y diagnóstico
El agente pide los datos de la cita pero nunca confirma nada, ni siquiera un error.
Cómo localizarlo: Aplicando el diagnóstico por descarte: si la execution de n8n muestra que la petición llegó y se procesó, el problema está en el formato de la respuesta devuelta a Vapi, no en la automatización en sí.
Solución: Revisa que el JSON de respuesta incluya exactamente results, toolCallId (con el valor real recibido) y result.
La herramienta no aparece disponible al intentar añadirla al asistente.
Cómo localizarlo: Puede que la herramienta no se haya guardado correctamente, o que estés mirando en la lista de otro tipo de herramienta (Code Tool o Integration Tool en lugar de Function).
Solución: Vuelve a la sección Tools y confirma que la herramienta aparece guardada como tipo Function.
Comprobación final
Realiza una llamada de prueba real (desde el panel de pruebas de Vapi o, si ya lo tienes conectado, por teléfono) pidiendo una cita con datos inventados, y confirma que el agente responde en voz alta confirmando la cita, y que esa cita aparece realmente en tu Google Calendar. Si ambas cosas ocurren, la comprobación es positiva.
Qué acabas de conseguir
Tienes el primero de los dos casos completos de Tool Calling de este curso funcionando de extremo a extremo: Vapi pidiendo datos, n8n creando la cita real, y el agente confirmándolo con naturalidad.
Ejercicio práctico
Modifica el mensaje de «result» que devuelve n8n para incluir la hora exacta de la cita confirmada, y comprueba, en una nueva llamada de prueba, que el agente la repite correctamente en voz alta.
Resumen de lo imprescindible
- Las herramientas de Vapi se crean en la sección «Tools» y después se asocian a un asistente concreto.
- La Server URL de la herramienta debe apuntar a la URL de producción de tu workflow de n8n.
- La respuesta de n8n debe adaptarse al formato exacto de Vapi: results, con toolCallId y result.
- El valor real de toolCallId debe confirmarse inspeccionando una execution de prueba, no adivinarse.
No necesitas aprender todavía
Todavía no necesitas implementar el caso con Retell y Make: es el objetivo de la siguiente lección.
Estoy preparado para continuar si puedo…
- Crear una herramienta de tipo Function en Vapi con su esquema de parámetros.
- Asociar la herramienta a un asistente y guiar al LLM sobre cuándo usarla.
- Adaptar la respuesta de un workflow de n8n al formato exacto que exige Vapi.
Fuentes
Última actualización de esta lección: 2026-08-30.
Test de la lección
Para realizar el test y obtener Puntos de profesionalidad necesitas iniciar sesión o crear una cuenta.
Navegación
Lección anterior: Tool Calling: cómo el agente pide ayuda a otros sistemas
Continuar con la siguiente lección: Caso completo: Retell + Make reservando una cita