Saltar al contenido principal

Torus Academy

Caso completo: Vapi + n8n reservando una cita

Datos de esta lección
FaseF3 — Conexión con el mundo real y automatización no visual
MóduloM3.4 — Tool Calling
Puntos de profesionalidad al superar el test55

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

Herramientas necesarias

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

  1. 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.

  2. 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.

  3. 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»).

  4. 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

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…

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

Descargar esta lección en PDF accesible