Skip to main content

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:
Respuesta:
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:
Respuesta:

Paso 3: Finalizar la llamada

Cuando la llamada termina (el usuario colgó, quiere terminarla, etc.), envíe la solicitud de finalización con el call_id que obtuvo en el webhook de inicio (connect) o en el cuerpo de la respuesta. Solicitud:
Respuesta:

Paso 4: Recibir el webhook de finalización

Después de que la llamada se finalice, recibe un webhook en el calls_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 en calls_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:
Respuesta:
Para rechazar la llamada: Solicitud:
Respuesta:

Paso 3: Finalizar la llamada

Cuando la llamada activa termina (uno de los lados cuelga), finaliza la llamada: Solicitud:
Respuesta:

Paso 4: Recibir el webhook de finalización

Después de la finalización, recibe un webhook con el evento terminate:
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.