Ejemplos
A continuación se presentan ejemplos prácticos de cómo usar la API de WhatsApp Calling para iniciar, aceptar y finalizar llamadas. Cada escenario muestra la secuencia de solicitudes y respuestas, así como los webhooks recibidos. Para más detalles sobre los endpoints y sus parámetros, consulte la API de Calling. Para entender los eventos de webhook, vea Webhooks.Escenario A — Llamada iniciada por la empresa (outbound)
En este escenario, su empresa inicia una llamada a un usuario de WhatsApp.Paso 1: Verificar permiso de llamada
Antes de iniciar una llamada, verifique si su empresa tiene permiso para llamar al usuario. Meta impone limitaciones de llamadas que pueden variar según el historial de comunicación. Solicitud:El campo
calling.permission.status puede ser no_permission, temporary o permanent. Consulte la tabla de actions para saber si puede iniciar una llamada y cuáles son los límites (máximo de llamadas por período).Paso 2: Iniciar la llamada
Si el permiso está confirmado y tiene llamadas disponibles, inicie la llamada enviando la oferta SDP (Session Description Protocol). Solicitud:Paso 3: Finalizar la llamada
Cuando la llamada termina (el usuario colgó, quiere terminarla, etc.), envíe la solicitud de finalización con elcall_id que obtuvo en el webhook de inicio (connect) o en el cuerpo de la respuesta.
Solicitud:
Paso 4: Recibir el webhook de finalización
Después de que la llamada se finalice, recibe un webhook en elcalls_webhook configurado del número con el evento terminate. El webhook entregado es el envoltorio sin procesar de Meta con la estructura a continuación:
El objeto dentro de
calls[] contiene información sobre cómo terminó la llamada: direction indica quién inició la finalización, duration es el tiempo en segundos y status muestra si se completó correctamente o no.Escenario B — Llamada recibida de un usuario (inbound)
En este escenario, un usuario de WhatsApp inicia una llamada a su empresa.Paso 1: Recibir el webhook de inicio de llamada
Cuando un usuario intenta llamar a su número, recibe un webhook encalls_webhook con el evento connect. Este webhook contiene el call_id (en el campo id) y la oferta SDP del usuario.
Use el campo
id (ejemplo: wacid.HBgM...) como el call_id para las siguientes acciones (aceptar o rechazar). El connection.webrtc.sdp es la oferta SDP del usuario.Paso 2: Aceptar la llamada (o rechazar)
Puede aceptar la llamada respondiendo con su propio SDP o rechazarla. Para aceptar: Solicitud:Paso 3: Finalizar la llamada
Cuando la llamada activa termina (uno de los lados cuelga), finaliza la llamada: Solicitud:Paso 4: Recibir el webhook de finalización
Después de la finalización, recibe un webhook con el eventoterminate:
El webhook de
terminate es igual para ambos escenarios (outbound e inbound). Use los campos direction, duration y status para registrar detalles sobre cómo terminó la llamada.