Resumen
Esta guía explica cómo integrar la llamada de WhatsApp con su 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 webhook, permisos de llamada y mejores prácticas para mantener una integración de voz estable.
Nota: La integración de la llamada de WhatsApp con su CRM o herramienta interna está actualmente en beta y está disponible bajo petición. Para habilitarla, comuníquese con su Gerente de Éxito del Cliente (CSM) o con el equipo de Soporte de Wati.
Instrucciones
La API de llamadas de WhatsApp de Wati permite a las empresas conectar la llamada 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 APIs y webhooks de Wati
La Capa de medios gestionada por su propio agente de voz o plataforma de terceros
Esta guía está destinada a desarrolladores que construyen integraciones de voz personalizadas.
Arquitectura principal y autenticación
La integración utiliza el intercambio de Protocolo de Descripción de Sesión (SDP) entre Wati y su infraestructura de WebRTC.
URL base de la API
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls>Reemplace {tenant_id} con su ID de inquilino de Wati.
Autenticación
Cada solicitud de API debe incluir un Token Bearer en el encabezado de la solicitud.
Authorization: Bearer {YOUR_ACCESS_TOKEN}Encuentre sus credenciales de API
Inicie sesión en su cuenta de Wati.
Navegue a Conectores → Documentos de API en el menú.
Copie su:
Punto final de la API
Token Bearer
Nota: Si cambia su contraseña de Wati, su Token Bearer existente se vuelve inválido. Debe actualizar su integración con el nuevo token.
Manejo de llamadas entrantes
Paso 1: Configure los webhooks de llamadas entrantes
En la plataforma Wati, configure su URL de webhook para:
Nuevo webhook de llamada entrante
Este webhook recibe solicitudes de llamadas entrantes y ofertas de SDP de usuarios de WhatsApp.
Paso 2: Recibir el webhook de entrada
Cuando un usuario llama a su número de WhatsApp, Wati envía una solicitud POST que contiene la oferta SDP del llamante.
Ejemplo de carga útil de solicitud:
{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (Oferta de WhatsApp)",
"businessNumber": "1234567890"
}Paso 3: Realizar la negociación de WebRTC
Su aplicación debe ahora establecer la sesión de WebRTC.
Inicializar la conexión peer
Cree un RTCPeerConnection en su servidor, agente de voz o plataforma de terceros.
Establecer la descripción remota
Utilice el SDP recibido del webhook como la descripción remota.
Generar una respuesta SDP
Genere una respuesta SDP local de su conexión peer.
Importante: Asegúrese de que las huellas digitales de 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
Punto final
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/accept>Encabezados
Authorization: Bearer {YOUR_ACCESS_TOKEN}Cuerpo de la solicitud
{
"Sdp": "v=0... (Su Respuesta)"
}
Realizando llamadas salientes
WhatsApp requiere que las empresas obtengan permiso de los usuarios antes de iniciar llamadas salientes.
Paso 1: Gestionar permisos de llamada
Verificar el estado del permiso existente
Utilice el siguiente punto final para verificar si el usuario ya ha otorgado permiso para la llamada.
GET .../calls/permissions/{waid}Solicitar permiso
Si no se ha otorgado permiso, solicítelo utilizando:
POST .../calls/call-permission-request/{waid}Espere la aprobación del permiso
Wati envía un Webhook de Permiso de Llamada después de que el usuario acepte o rechace la solicitud.
Solo proceder con la llamada saliente después de la aprobación.
Iniciando una llamada saliente
Paso 2: Crear y enviar la oferta SDP
Generar una oferta SDP
Cree una oferta SDP utilizando su RTCPeerConnection de WebRTC.
Llamar a la API de llamada saliente
Envía la oferta SDP a Wati.
Método
POST
Punto final
<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/outbound-call/{waid}>Encabezados
Authorization: Bearer {YOUR_ACCESS_TOKEN}Cuerpo de la solicitud
{
"Sdp": "v=0... (Su Oferta)"
}Recibir el ID de llamada
Si la solicitud es exitosa, Wati devuelve un callId.
Estableciendo el flujo de audio
Paso 3: Finalizar la conexión WebRTC
Monitorear el estado de la llamada
Utilice el Nuevo Webhook de Estado de Llamada Saliente para rastrear actualizaciones como:
LLAMANDO
Sonando
ACEPTADO
Recibir la respuesta SDP del usuario
Cuando el usuario responda la llamada, Wati envía el Nuevo Webhook de Llamada Saliente que contiene la respuesta SDP del usuario.
Completar la conexión
Establezca la respuesta SDP recibida como la descripción remota en su RTCPeerConnection.
Esto establece el flujo de audio entre el usuario y su plataforma de voz.
Terminando llamadas
Cuando el usuario cuelga
Wati envía un Webhook de Terminación de Llamada para notificar a su aplicación que la llamada ha terminado.
Cuando la empresa cuelga
Utilice la API de Terminación de Llamada.
Detalles de la solicitud
Punto final
POST <https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/terminate>Encabezados
Authorization: Bearer {YOUR_ACCESS_TOKEN}
¿Dónde puede publicar sus URL de webhook?
URLs de webhook requeridas
Configurar los siguientes puntos finales de webhook en Wati.
Nuevo Webhook de Llamada Entrante
Recibe ofertas SDP entrantes de usuarios de WhatsApp.
Webhook de Terminación de Llamada
Recibe notificaciones cuando las llamadas se desconectan.
Nuevo Webhook de Llamada Saliente
Recibe respuestas SDP para llamadas salientes.
Nuevo Webhook de Estado de Llamada Saliente
Recibe actualizaciones del estado de llamadas salientes como:
Llamando
Sonando
Aceptado
Webhook de Permiso de Llamada
Recibe eventos de aprobación o rechazo de permiso de los usuarios.
Requisitos del webhook
Sus puntos finales de webhook deben:
Ser accesibles públicamente
Devolver una respuesta HTTP
200 OKResponder dentro de 30 segundos
Configurar la verificación de clave API de webhook
Puede configurar una clave API dedicada en la interfaz de configuración de Wati para la verificación de webhook.
Wati incluye esta clave en el encabezado Authorization de cada solicitud de webhook.
Ejemplo:
Authorization: Bearer {ApiKey}Puede usar esta clave para:
Verificar la autenticidad del webhook
Validar solicitudes entrantes
Asegurar sus puntos finales de webhook
Mejores prácticas técnicas
Usar el códec Opus
La llamada de WhatsApp actualmente solo admite audio.
Su plataforma de voz debe usar el códec de audio Opus para compatibilidad.
Deshabilitar el ICE trickle
No utilice ICE Trickle durante la negociación de SDP.
Wati requiere un bloque SDP completo que ya contenga todos los candidatos ICE.
Enviar cargas útiles SDP completas
Asegúrese de que su SDP incluya:
Candidatos ICE
Huellas digitales
Información de medios
antes de enviar solicitudes a las APIs de Wati.
Resumen del flujo de llamadas
Flujo de llamadas entrantes
Flujo de llamadas salientes
Flujo de permisos de llamada
Preguntas Frecuentes (FAQs)
Disponibilidad y acceso
1. ¿Esta función está disponible en todos los planes de Wati?
No, esta función está disponible solo para planes Pro y superiores.
2. ¿Por qué no veo esta configuración en mi cuenta de Wati?
Esta configuración se habilita solo a solicitud. Debe comunicarse con el soporte de Wati para habilitarla en su cuenta.
Llamadas e integraciones
3. ¿Las llamadas se grabarán y transcribirán al usar la llamada de WhatsApp en una plataforma externa o agentes de IA personalizados?
No, las llamadas no se grabarán ni transcribirán al usar la llamada de WhatsApp en una plataforma externa o agentes de IA personalizados. Las llamadas ocurren a través de su propio servidor, donde Wati no tiene control.
4. ¿Puedo manejar llamadas tanto en Wati como en una plataforma integrada externamente?
No, todas las llamadas entrantes se dirigirán a su 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á su propio punto final de webhook para recibir actualizaciones de estado de llamada como sonando, aceptada o rechazada.
Soporte e implementación
6. ¿Quién puede ayudarme a configurar esta función si no estoy familiarizado técnicamente con la implementación?
Wati proporciona soporte de implementación para clientes del Plan de Negocios según sea necesario. Puede comunicarse con su Gerente de Éxito del Cliente (CSM) para programar una llamada.





