Skip to main content
Las notificaciones de telefonía se entregan por el mismo mecanismo de webhooks que el resto de los eventos del workspace. Esta página es el camino corto para el caso más común; el contrato completo —firma, reintentos, entregas— está en Webhooks.

1 · Crea el webhook

Requiere el scope webhooks:write y el header X-Workspace-Id. La URL debe ser HTTPS.
El webhook no tiene campo name: la etiqueta legible es description. El cuerpo se valida en modo estricto, así que cualquier campo que no esté en el contrato —name incluido— se rechaza con 400 antes de crear nada.
La respuesta trae el id del webhook —un UUID— que se usa en el siguiente paso.

2 · Suscríbete a los eventos de llamada

Cada evento se suscribe por separado, con su eventKey:
Respuesta 201 Created
Los identificadores de webhook y de suscripción son UUID v4. Un valor con otro formato se rechaza con 400 antes de llegar al dominio.
Para ver los eventKey disponibles al día, consulta el catálogo: GET /v1/catalogs/items?filter=eq(type,%22webhook_event%22).

3 · Recibe el evento

Esto es lo que llega a tu endpoint cuando termina una llamada:
Las variables que el agente recolectó durante la conversación llegan en outputVariables, y las que se le pasaron al iniciar la llamada en variables. result.goal es un objeto, no una cadena: el booleano achieved dice si se cumplió el objetivo de la llamada y reason lo explica en prosa. Compara contra payload.result.goal.achieved.

4 · Verifica la firma

Cada entrega incluye dos headers: x-timestamp con la marca ISO-8601 y x-signature con el HMAC-SHA256, en base64, de la cadena {timestamp}.{cuerpo crudo} usando el secreto del webhook.
Firma sobre el cuerpo crudo, antes de parsear el JSON: volver a serializar el objeto cambia los bytes y la comparación falla.
Esto vale para un webhook POST, que es el valor por defecto. Si lo creas con method: 'GET' no hay cuerpo —el evento viaja como query string— y la firma se calcula sobre la URL completa; el detalle está en Webhooks.

5 · Depura lo que no llegó

Cada intento de entrega queda registrado, con su código de respuesta y su cuerpo:
Sólo se entregan eventos de agentes y suscripciones activas: si un evento no aparece, revisa primero que la suscripción y el webhook tengan isActive: true.