Inicio › Desarrolladores › Documentación › Webhook
Webhook (Event Manager)
La vía push y sin estado: la centralita hace un HTTP a una URL de tu CRM cuando ocurre un evento de llamada (entrante, contestada, no contestada, colgada). No mantienes conexión; recibes avisos. Notifica, no controla la llamada.
Qué es el Webhook
El Webhook es la vía por la que Conexia Infinity notifica a tu sistema cuando pasa algo en la telefonía. Internamente se configura como una acción del Event Manager: defines qué petición HTTP se lanza y a qué URL, y la plataforma la dispara automáticamente cuando ocurre el evento asociado.
Push, no pregunta-respuesta — A diferencia de la API Key (tú preguntas, la plataforma responde), aquí es la centralita quien inicia la petición hacia tu URL. Y a diferencia de la Real-time API, no mantienes una conexión permanente: tu endpoint simplemente espera POSTs.
Qué cubre y qué no
- Sí: avisarte de eventos de llamada (entrante, sonando, contestada, no contestada, colgada) con los datos de esa llamada, para que tu CRM registre actividad, dispare flujos o notifique a otros sistemas.
- No: controlar la llamada (transferir, aparcar, grabar) — eso es la Real-time API; ni consultar históricos — eso es la API Key; ni configurar la centralita — eso es el panel de administración.
Webhook o Real-time API — Para el Call Popup (identificar una llamada entrante) sirven ambos. El webhook es ideal si no quieres mantener un puente vivo y te basta con «que me avisen». La Real-time API gana cuando además necesitas controlar la llamada o seguir su ciclo de vida completo bajo un mismo id.
Modelo: eventos y acciones
El Event Manager tiene dos piezas que se combinan:
- Evento — el disparador: «entró una llamada», «se contestó», «se colgó»… La plataforma trae un conjunto de eventos de llamada predefinidos (ver §03).
- Acción — qué hacer cuando ocurre el evento: una petición HTTP (webhook) a tu URL, con su método, cuerpo, cabeceras y autenticación (ver §05).
Asocias una o varias acciones a un evento; cuando el evento ocurre, la plataforma ejecuta esas acciones y envía los datos de la llamada a tu endpoint.
Dónde se configura — El Event Manager requiere estar habilitado en la licencia. Las acciones se definen a nivel de tenant. Un Activity Monitor registra cada disparo y si tuvo éxito o falló — úsalo para depurar.
Eventos de llamada
Conjunto de disparadores de llamada predefinidos. Se activan o desactivan por tenant.
Incoming Call— entra una llamadaRinging— está sonandoAnswered Call— contestadaUnanswered Call— no contestadaHangup— colgada
| Evento | Cuándo se dispara | Uso típico en CRM |
|---|---|---|
Incoming Call | Llega una llamada al sistema | Abrir Call Popup, buscar contacto |
Ringing | La llamada está sonando | Estado «entrante» en la interfaz |
Answered Call | La llamada se contesta | Marcar como atendida, arrancar cronómetro |
Unanswered Call | Termina sin contestarse | Registrar llamada perdida, crear tarea |
Hangup | La llamada finaliza | Cerrar actividad, guardar duración |
Confirma el catálogo en tu instalación — La lista exacta de eventos y su comportamiento dependen de la versión y licencia. Consulta el Event Manager de tu panel de administración para conocer los disponibles en tu servidor.
Parámetros disponibles
Cada acción compone la petición con parámetros del sistema (datos de la llamada), que se referencian con doble llave {{parametro}} en la URL, el cuerpo o las cabeceras. La plataforma sustituye cada marcador por su valor real antes de enviar.
| Grupo | Parámetros |
|---|---|
| Núcleo de la llamada | call_id, caller_id, calling_name, called_number, direction, extension, tenant |
| Tiempos y duración | date (Y-m-d), time (H:i:s), unix_time, duration, call_date |
| Colas / agente | agent_name, agent_email, queue_id, queue_name, entry, exit_position, talk_time, wait_time, last_event |
| Coste | call_cost, call_rating_duration |
call_id— identificador único de la llamada. Úsalo como clave para deduplicar y para casar el evento de contestada con el de colgada.caller_id/calling_name— quién llama (número y nombre). El número es lo que buscas en el CRM para el Call Popup.called_number— la extensión / número que recibe la llamada.direction— dirección de la llamada (entrante / saliente).duration— duración de la llamada (útil al final, enHangup).
Parámetros personalizados — Además de los del sistema, puedes definir parámetros propios con un Tag (el nombre que usarás como {{tu_tag}}) y un valor fijo — útil para etiquetar de qué instalación o entorno viene el webhook.
Configurar una acción (el webhook)
Una acción es la petición HTTP que se envía cuando salta el evento. Se define con estas secciones:
General
- Name — nombre identificativo de la acción.
- HTTP Method —
GET/POST/PUT/PATCH/DELETE.POSTes lo habitual para webhooks. - URL — el endpoint de tu CRM que recibirá la petición.
Cuerpo (body)
- None — sin cuerpo
- Form-data — pares clave-valor
- x-www-form-urlencoded — cuerpo urlencoded
- Raw — tal cual (p. ej. JSON)
Query params y cabeceras
Puedes añadir pares clave-valor a la URL (query params) y cabeceras personalizadas (por ejemplo, un token de seguridad o un Content-Type concreto). En cualquiera de ellos el valor puede llevar {{parametro}}.
Autenticación
La acción puede firmar la petición para que tu endpoint verifique que viene de la plataforma:
| Método | Cómo funciona |
|---|---|
| No Auth | Sin credencial (no recomendado en producción). |
| API Key | Se envía una clave junto con la petición para que tu endpoint la valide. |
| Basic Auth | Usuario y contraseña incluidos en la petición. |
| Bearer Token | Token propio, único entre proveedor y consumidor. |
| OAuth 2.0 | La plataforma pide un token al Token URI con Client ID + Client Secret y lo añade como Authorization: Bearer <access_token>. |
Recomendación — Para la mayoría de integraciones, Bearer Token es un buen equilibrio: sencillo de validar en tu endpoint y suficiente si va sobre HTTPS. Guarda el token en un gestor de secretos, no en el repositorio.
Ejemplos completos
POST al colgar (form-urlencoded)
POST https://<TU_CRM>/telefonia/evento
Authorization: Bearer <TOKEN>
Content-Type: application/x-www-form-urlencoded
call_id={{call_id}}&direction={{direction}}&caller_id={{caller_id}}
&calling_name={{calling_name}}&called_number={{called_number}}
&duration={{duration}}&extension={{extension}}&unix_time={{unix_time}}
// la centralita sustituye cada {{...}} por el valor real antes de enviar
POST con cuerpo JSON (Raw)
POST https://<TU_CRM>/telefonia/evento
Authorization: Bearer <TOKEN>
Content-Type: application/json
{
"call_id": "{{call_id}}",
"direction": "{{direction}}",
"caller_id": "{{caller_id}}",
"calling_name": "{{calling_name}}",
"called_number": "{{called_number}}",
"duration": "{{duration}}",
"extension": "{{extension}}"
}
Recibir el webhook en tu CRM
Tu endpoint es el otro extremo. Un patrón robusto:
- Verifica la credencial (el token / Basic / API Key que configuraste) antes de procesar nada. Si no cuadra, responde
401y descarta. - Deduplica por
call_id. Un mismo evento puede llegar más de una vez; no crees dos actividades para la misma llamada. - Encola y responde rápido. Acepta el POST, mete el trabajo en una cola y devuelve
2xxenseguida; no hagas trabajo pesado dentro de la petición. - Casa contestada + colgada. Usa el
call_idpara unir el evento deAnsweredcon el deHangupy cerrar la actividad con su duración.
Seguridad y buenas prácticas
Tu endpoint es una puerta abierta — Un webhook es una URL pública que recibe datos. Si no la proteges, alguien podría inyectar eventos falsos (llamadas que no ocurrieron, actividades inventadas). Trátala como un endpoint sensible.
- Siempre HTTPS. Los datos de la llamada (números, nombres) viajan en cada POST.
- Autentica el origen. Configura la credencial (§06) y valídala en tu endpoint antes de procesar.
- Sé idempotente. Deduplica por
call_idpara no duplicar actividad ante reintentos o eventos fuera de orden. - Responde rápido. Encola el trabajo y devuelve
2xxenseguida. - Restringe por IP si puedes. Acepta solo peticiones desde la IP de la plataforma.
- No confíes ciegamente. Valida y normaliza los campos recibidos antes de usarlos.
Cómo empezar
- Expón un endpoint HTTPS en tu CRM que acepte
POSTy valide una credencial. - Crea una acción en el Event Manager apuntando a esa URL, con el método, el cuerpo y la autenticación elegidos.
- Asóciala a los eventos que te interesen (empieza por
Incoming CallyHangup). - Prueba y depura con el Activity Monitor; comprueba que tu endpoint deduplica y cierra la actividad correctamente.
¿Buscas las otras vías? Consulta las referencias de API Key y ARI y de Real-time API y Conector MCP en el índice de integraciones.
Conexia Telecom · Referencia — Webhook (Event Manager) — Documento para desarrolladores. Los valores entre <ángulos> son marcadores; la URL y credenciales de tu endpoint las defines tú. La disponibilidad del Event Manager depende de la versión y la licencia de la instalación.