Cómo funciona
- Defines herramientas con un esquema (qué argumentos acepta la herramienta)
- Proporcionas una configuración de
endpoint(donde ThunderPhone llama a tu API) o la omites para recibir llamadas a herramientas en el webhook de tu organización - Durante una llamada, la IA decide cuándo usar una herramienta según la conversación
- ThunderPhone llama a tu endpoint con los argumentos de la herramienta
- La respuesta de tu API se devuelve a la IA para continuar la conversación
Las herramientas de función son la vía para usar tu propia API. ThunderPhone también
incluye herramientas administradas por la plataforma que no necesitan endpoint:
conexiones de aplicaciones (HubSpot, Salesforce, Slack,
Google Calendar, Google Sheets, Cal.com),
conexiones de API y
servidores MCP.
Esquema de la herramienta
Cada herramienta sigue esta estructura:Definición de función
Configuración del endpoint
La configuración de
endpoint no se envía al modelo de IA; ThunderPhone solo la usa para ejecutar la llamada a la herramienta.Dos rutas de invocación
La solicitud que recibe tu servidor depende de si la herramienta tiene unendpoint:
Ambas rutas son bloqueantes: la IA espera el resultado a mitad de la
oración, con un tiempo de espera de 20 s. Mantén los controladores rápidos.
Puedes combinarlas: en una llamada cuya organización tenga una URL de webhook,
las herramientas con un
endpoint se llaman directamente y las demás recurren
al webhook.
Llamadas directas a endpoints
Cuando la IA invoca una herramienta que tiene unendpoint, ThunderPhone envía
una solicitud a tu URL:
Encabezados de solicitud
endpoint.headers siempre se incluyen
literalmente, además de dos encabezados con espacio de nombres de ThunderPhone:
X-ThunderPhone-Signature— HMAC-SHA256 de los bytes exactos del cuerpo de la solicitud, con clave basada en tu secreto de webhook de la organizaciónX-ThunderPhone-Call-ID— El ID de la llamada actual
Content-Type: application/json se establece a menos que tu endpoint.headers
lo reemplace; un Content-Type personalizado tiene prioridad.
Cuerpo de la solicitud
ParaPOST / PUT / PATCH, el cuerpo contiene solo los argumentos de la
herramienta (sin envoltorio), serializados de forma canónica (claves ordenadas,
separadores compactos):
GET / DELETE, los argumentos se envían como parámetros de consulta
y el cuerpo está vacío; entonces la firma se calcula sobre la cadena de bytes
vacía. Consulta
Verificar firmas de webhook.
Respuesta
Devuelve una respuesta JSON con el resultado de la herramienta:{"data": "<text>"};
los tiempos de espera y fallas de conexión se reportan a la IA como errores, para
que el agente pueda disculparse y continuar en lugar de quedarse bloqueado.
Despacho en modo webhook
Las herramientas sin unendpoint se envían a la URL de webhook heredada de
tu organización como una solicitud telephony.tool firmada (llamadas telefónicas)
o web.tool (llamadas web). A diferencia de las notificaciones de auditoría
que se entregan a los endpoints de webhook después de la ejecución, esta solicitud
es la ejecución: tu respuesta HTTP es el resultado de la herramienta.
web.tool incluye origin_domain en lugar de from_number /
to_number. Responde con el resultado de la herramienta como JSON; se aplica el
mismo contrato de respuesta que para las llamadas directas a endpoints. La solicitud
se firma con el secreto de webhook de la organización sobre el cuerpo sin procesar,
como todos los demás webhooks.
Los endpoints de webhook suscritos también
reciben una notificación
telephony.tool / web.tool no bloqueante
después de que se ejecuta cada herramienta (independientemente de la ruta
que la ejecutó), incluida la respuesta de la herramienta; resulta útil para
registros de auditoría. Consulta el
catálogo de eventos.Verificación de firma
Las llamadas directas a herramientas se firman de la misma manera que los webhooks:- HMAC-SHA256 sobre los bytes exactos del cuerpo de la solicitud (el JSON canónico: claves ordenadas, sin espacios adicionales)
- Con la clave secreta del webhook de tu organización
- Las herramientas
GET/DELETEfirman la cadena de bytes vacía
Ejemplo: flujo de reserva completo
Aquí tienes un conjunto de herramientas para un sistema completo de reserva de citas:Prácticas recomendadas
Escribe descripciones claras
Escribe descripciones claras
El campo
description ayuda a la IA a entender cuándo usar la herramienta. Especifica qué hace y cuándo es apropiado usarla.Maneja los errores correctamente
Maneja los errores correctamente
Devuelve mensajes de error que la IA pueda entender:
{"error": "No slots available for that date"} en lugar de errores 500 genéricos.Mantén las respuestas concisas
Mantén las respuestas concisas
Devuelve solo lo que la IA necesita para continuar la conversación. Las cargas útiles grandes ralentizan los tiempos de respuesta.
Usa los campos obligatorios con criterio
Usa los campos obligatorios con criterio
Marca los campos como
required solo cuando sea realmente necesario. La IA le pedirá al usuario la información obligatoria antes de llamar a la herramienta.Relacionado
Conexiones de aplicaciones
Herramientas administradas por la plataforma para HubSpot, Salesforce, Slack, Google
Calendar, Google Sheets y Cal.com; no se requiere endpoint.
Servidores MCP
Conecta un servidor MCP y permite que el agente llame a sus herramientas.
Conexiones de API
Integraciones REST reutilizables que puedes conectar a agentes.
Verifica las firmas de webhooks
Un asistente de verificación para webhooks y llamadas a herramientas.