Resumen
Esta guía explica cómo integrar las llamadas de WhatsApp con tu propio agente de voz o plataforma de terceros. Cubre flujos de llamadas entrantes y salientes, autenticación de API, configuración de WebRTC, configuración de webhooks, permisos de llamada y mejores prácticas para mantener una integración de voz estable.
Instrucciones
La API de llamadas de WhatsApp de Wati permite a las empresas conectar las llamadas de WhatsApp con su propia infraestructura de voz utilizando WebRTC.
La integración funciona conectando:
La capa de señalización de WhatsApp gestionada por las API y webhooks de Wati
La capa multimedia manejada por tu propio agente de voz o plataforma de terceros
Esta guía está destinada a desarrolladores que crean integraciones de voz personalizadas.
Arquitectura central y autenticación
La integración utiliza el intercambio del Protocolo de Descripción de Sesión (SDP) entre Wati y tu infraestructura WebRTC.
URL base de la API
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls>Reemplaza {tenant_id} con tu ID de tenant de Wati.
Autenticación
Cada solicitud de API debe incluir un Token de Portador en la cabecera de la solicitud.
Authorization: Bearer {YOUR_ACCESS_TOKEN}Encuentra tus credenciales de API
Inicia sesión en tu cuenta de Wati.
Navega a Conectores → Documentación de API en el menú.
Copia tu:
Endpoint de la API
Token de Portador
Nota: Si cambias tu contraseña de Wati, tu Token de Portador existente se invalidará. Debes actualizar tu integración con el nuevo token.
Manejo de llamadas entrantes
Paso 1: Configurar webhooks de llamadas entrantes
En la plataforma Wati, configura tu URL de webhook para:
Webhook de Nueva Llamada Entrante
Este webhook recibe solicitudes de llamadas entrantes y ofertas SDP de usuarios de WhatsApp.
Paso 2: Recibir el webhook entrante
Cuando un usuario llama a tu número de WhatsApp, Wati envía una solicitud POST que contiene la oferta SDP del llamante.
Ejemplo de payload de solicitud:
{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (Oferta de WhatsApp)",
"businessNumber": "1234567890"
}Paso 3: Realizar negociación WebRTC
Tu aplicación ahora debe establecer la sesión WebRTC.
Inicializar la conexión peer
Crea una RTCPeerConnection en tu servidor, agente de voz o plataforma de terceros.
Establecer la descripción remota
Utiliza el SDP recibido del webhook como descripción remota.
Generar una respuesta SDP
Genera una respuesta SDP local desde tu conexión peer.
¡Importante! Asegúrate de que las huellas digitales SDP estén en mayúsculas para la compatibilidad con WhatsApp.
Ejemplo:
a=fingerprint:SHA-256
Paso 4: Aceptar la llamada
Envía la respuesta SDP generada de vuelta a Wati utilizando la API de Aceptar Llamada.
Detalles de la solicitud
Método
POST
Endpoint
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/accept>Cabeceras
Authorization: Bearer {YOUR_ACCESS_TOKEN}Cuerpo de la solicitud
{
"Sdp": "v=0... (Tu Respuesta)"
}
Realizar llamadas salientes
WhatsApp requiere que las empresas reciban permiso de los usuarios antes de iniciar llamadas salientes.
Paso 1: Gestionar permisos de llamada
Verificar el estado de permiso existente
Utiliza el siguiente endpoint para verificar si el usuario ya ha concedido permiso de llamada.
GET .../calls/permissions/{waid}Solicitar permiso
Si no se ha concedido el permiso, solicítalo utilizando:
POST .../calls/call-permission-request/{waid}Esperar la aprobación del permiso
Wati envía un Webhook de Permiso de Llamada después de que el usuario acepta o rechaza la solicitud.
Continúa con la llamada saliente solo después de la aprobación.
Iniciar una llamada saliente
Paso 2: Crear y enviar la oferta SDP
Generar una oferta SDP
Crea una oferta SDP utilizando tu RTCPeerConnection WebRTC.
Llamar a la API de llamada saliente
Envía la oferta SDP a Wati.
Método
POST
Endpoint
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/outbound-call/{waid}>Cabeceras
Authorization: Bearer {YOUR_ACCESS_TOKEN}Cuerpo de la solicitud
{
"Sdp": "v=0... (Tu Oferta)"
}Recibir el ID de llamada
Si la solicitud es exitosa, Wati devuelve un callId.
Establecer la transmisión de audio
Paso 3: Finalizar la conexión WebRTC
Monitorear el estado de la llamada
Utiliza el Webhook de Estado de Nueva Llamada Saliente para seguir actualizaciones como:
LLAMANDO
EN ESPERA
ACEPTADO
Recibir la respuesta SDP del usuario
Cuando el usuario responde la llamada, Wati envía el Webhook de Nueva Llamada Saliente que contiene la respuesta SDP del usuario.
Completar la conexión
Establece la respuesta SDP recibida como la descripción remota en tu RTCPeerConnection.
Esto establece la transmisión de audio entre el usuario y tu plataforma de voz.
Terminar llamadas
Cuando el usuario cuelga
Wati envía un Webhook de Terminación de Llamada para notificar a tu aplicación que la llamada ha finalizado.
Cuando la empresa cuelga
Utiliza la API de Terminación de Llamada.
Detalles de la solicitud
Endpoint
POST <https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/terminate>Cabeceras
Authorization: Bearer {YOUR_ACCESS_TOKEN}
¿Dónde puedes publicar las URL de tus webhooks?
URL de webhooks requeridas
Configura los siguientes endpoints de webhook en Wati.
Webhook de Nueva Llamada Entrante
Recibe ofertas SDP entrantes de usuarios de WhatsApp.
Webhook de Terminación de Llamada
Recibe notificaciones cuando las llamadas se desconectan.
Webhook de Nueva Llamada Saliente
Recibe respuestas SDP para llamadas salientes.
Webhook de Estado de Nueva Llamada Saliente
Recibe actualizaciones de estado de llamadas salientes como:
Llamando
En espera
Aceptado
Webhook de Permiso de Llamada
Recibe eventos de aprobación o rechazo de permisos de los usuarios.
Requisitos del Webhook
Tus endpoints de webhook deben:
Ser accesibles públicamente
Devolver una respuesta HTTP
200 OKResponder en un plazo de 30 segundos
Configurar la verificación de clave API del webhook
Puedes configurar una clave API dedicada en la interfaz de configuración de Wati para la verificación de webhooks.
Wati incluye esta clave en la cabecera Authorization de cada solicitud de webhook.
Ejemplo:
Authorization: Bearer {ApiKey}Puedes usar esta clave para:
Verificar la autenticidad del webhook
Validar solicitudes entrantes
Asegurar tus endpoints de webhook
Mejores prácticas técnicas
Usar el códec Opus
Las llamadas de WhatsApp actualmente solo admiten audio.
Tu plataforma de voz debe usar el códec de audio Opus para compatibilidad.
Desactivar ICE trickle
No uses ICE Trickle durante la negociación SDP.
Wati requiere un bloque SDP completo que ya contenga todos los candidatos ICE.
Enviar payloads SDP completos
Asegúrate de que tu SDP incluya:
Candidatos ICE
Huellas digitales
Información multimedia
antes de enviar solicitudes a las API de Wati.
Descripción general del flujo de llamadas
Flujo de llamada entrante
Flujo de llamada saliente
Flujo de permiso de llamada
Preguntas frecuentes (FAQs)
Disponibilidad y acceso
1. ¿Está esta función disponible en todos los planes de Wati?
No, esta función solo está disponible para planes Pro y superiores.
2. ¿Por qué no veo esta configuración en mi cuenta de Wati?
Esta configuración se habilita solo bajo solicitud. Necesitas contactar al soporte de Wati para habilitarla para tu cuenta.
Llamadas e integraciones
3. ¿Se grabarán y transcribirán las llamadas al usar Llamadas de WhatsApp en una plataforma externa o agentes de IA personalizados?
No, las llamadas no se grabarán ni transcribirán al usar Llamadas de WhatsApp en una plataforma externa o agentes de IA personalizados. Las llamadas se realizan a través de tu propio servidor, donde Wati no tiene control.
4. ¿Puedo gestionar llamadas tanto en Wati como en una plataforma integrada externamente?
No, todas las llamadas entrantes se dirigirán a tu plataforma integrada externamente en lugar de a Wati.
5. ¿Por qué las llamadas salientes realizadas a través de Wati no pueden detectar si una llamada fue aceptada o rechazada?
Las llamadas salientes realizadas a través de Wati no pueden detectar si una llamada fue aceptada o rechazada porque configurarás tu propio endpoint de webhook para recibir actualizaciones de estado de llamadas como en espera, aceptada o rechazada.
Soporte e implementación
6. ¿Quién puede ayudarme a configurar esta función si no tengo conocimientos técnicos de la implementación?
Wati ofrece soporte de implementación para clientes del Plan Business según sea necesario. Puedes contactar a tu Gerente de Éxito del Cliente (CSM) para programar una llamada.





