Ir al contenido principal

Cómo integrar las llamadas de WhatsApp con tu CRM o portal interno

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 ConectoresDocumentos 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 OK

  • Responder 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.

¿Ha quedado contestada tu pregunta?