Passar para o conteúdo principal

Como configurar o WhatsApp Calling APIs e webhooks no Wati

Resumo

Este guia explica como integrar chamadas do WhatsApp com seu próprio agente de voz ou plataforma de terceiros. Ele abrange fluxos de chamadas de entrada e saída, autenticação de API, configuração de WebRTC, configuração de webhook, permissões de chamada e melhores práticas para manter uma integração de voz estável.

Instruções

A API de Chamadas do WhatsApp da Wati permite que as empresas conectem chamadas do WhatsApp com sua própria infraestrutura de voz usando WebRTC.

A integração funciona conectando:

  • A camada de sinalização do WhatsApp gerenciada pelas APIs e webhooks da Wati

  • A camada de mídia tratada pelo seu próprio agente de voz ou plataforma de terceiros

Este guia destina-se a desenvolvedores que criam integrações de voz personalizadas.

Arquitetura principal e autenticação

A integração usa a troca do Protocolo de Descrição de Sessão (SDP) entre a Wati e sua infraestrutura WebRTC.

URL base da API

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls>

Substitua {tenant_id} pelo seu ID de tenant da Wati.

Autenticação

Cada solicitação de API deve incluir um Token do Portador no cabeçalho da solicitação.

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Encontre suas credenciais de API

  • Faça login na sua conta Wati.

  • Navegue até ConectoresDocumentação da API no menu.

  • Copie seu:

    • Endpoint da API

    • Token do Portador

Observação: Se você alterar sua senha da Wati, seu Token do Portador existente se tornará inválido. Você deve atualizar sua integração com o novo token.

Manipulando chamadas recebidas

Etapa 1: Configure webhooks de chamada de entrada

Na plataforma Wati, configure seu URL de webhook para:

  • Novo Webhook de Chamada de Entrada

Este webhook recebe solicitações de chamada recebidas e ofertas SDP de usuários do WhatsApp.

Etapa 2: Receba o webhook de entrada

Quando um usuário liga para seu número do WhatsApp, a Wati envia uma solicitação POST contendo a oferta SDP do chamador.

Exemplo de carga da solicitação:

{
"callId": "WHATSAPP_CALL_ID",
"sdp": "v=0... (Offer from WhatsApp)",
"businessNumber": "1234567890"
}

Etapa 3: Realize a negociação WebRTC

Sua aplicação deve agora estabelecer a sessão WebRTC.

Inicialize a conexão de peer

Crie um RTCPeerConnection no seu servidor, agente de voz ou plataforma de terceiros.

Defina a descrição remota

Use o SDP recebido do webhook como a descrição remota.

Gere uma resposta SDP

Gere uma resposta SDP local da sua conexão de peer.

Importante: Certifique-se de que as impressões digitais SDP estejam em maiúsculas para compatibilidade com o WhatsApp.

Exemplo:

a=fingerprint:SHA-256

Etapa 4: Aceite a chamada

Envie a resposta SDP gerada de volta para a Wati usando a API Aceitar Chamada.

Detalhes da solicitação

Método

POST

Endpoint

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/accept>

Cabeçalhos

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Corpo da solicitação

{
"Sdp": "v=0... (Your Answer)"
}

Realizando chamadas de saída

O WhatsApp exige que as empresas recebam permissão dos usuários antes de iniciar chamadas de saída.

Etapa 1: Gerencie permissões de chamada

Verifique o status da permissão existente

Use o endpoint a seguir para verificar se o usuário já concedeu permissão de chamada.

GET .../calls/permissions/{waid}

Solicitar permissão

Se a permissão não tiver sido concedida, solicite-a usando:

POST .../calls/call-permission-request/{waid}

Aguarde a aprovação da permissão

A Wati envia um Webhook de Permissão de Chamada após o usuário aceitar ou recusar a solicitação.

Prossiga com a chamada de saída apenas após a aprovação.

Iniciando uma chamada de saída

Etapa 2: Crie e envie a oferta SDP

Gere uma oferta SDP

Crie uma oferta SDP usando seu RTCPeerConnection WebRTC.

Chame a API de chamada de saída

Envie a oferta SDP para a Wati.

Método

POST

Endpoint

<https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/outbound-call/{waid}>

Cabeçalhos

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Corpo da solicitação

{
"Sdp": "v=0... (Your Offer)"
}

Receba o ID da chamada

Se a solicitação for bem-sucedida, a Wati retornará um callId.

Estabelecendo o fluxo de áudio

Etapa 3: Finalize a conexão WebRTC

Monitore o status da chamada

Use o Webhook de Status de Nova Chamada de Saída para rastrear atualizações como:

  • CHAMANDO

  • DISCANDO

  • ACEITA

Receba a resposta SDP do usuário

Quando o usuário atender a chamada, a Wati enviará o Webhook de Nova Chamada de Saída contendo a resposta SDP do usuário.

Conclua a conexão

Defina a resposta SDP recebida como a descrição remota em seu RTCPeerConnection.

Isso estabelece o fluxo de áudio entre o usuário e sua plataforma de voz.

Encerrando chamadas

Quando o usuário desligar

A Wati envia um Webhook de Encerrar Chamada para notificar sua aplicação que a chamada terminou.

Quando a empresa desligar

Use a API de Encerrar Chamada.

Detalhes da solicitação

Endpoint

POST <https://live-mt-server.wati.io/{tenant_id}/api/v1/openapi/whatsapp/calls/{callId}/terminate>

Cabeçalhos

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Onde você pode postar seus URLs de webhook?

URLs de webhook necessários

Configure os seguintes endpoints de webhook na Wati.

Novo Webhook de Chamada de Entrada

Recebe ofertas SDP de entrada de usuários do WhatsApp.

Webhook de Encerrar Chamada

Recebe notificações quando as chamadas são desconectadas.

Novo Webhook de Chamada de Saída

Recebe respostas SDP para chamadas de saída.

Novo Webhook de Status de Chamada de Saída

Recebe atualizações de status de chamada de saída como:

  • Chamando

  • Discando

  • Aceita

Webhook de Permissão de Chamada

Recebe eventos de aprovação ou rejeição de permissão dos usuários.

Requisitos de webhook

Seus endpoints de webhook devem:

  • Ser acessíveis publicamente

  • Retornar uma resposta HTTP 200 OK

  • Responder em até 30 segundos

Configure a verificação de chave de API de webhook

Você pode configurar uma chave de API dedicada na interface de configuração da Wati para verificação de webhook.

A Wati inclui esta chave no cabeçalho Authorization de cada solicitação de webhook.

Exemplo:

Authorization: Bearer {ApiKey}

Você pode usar esta chave para:

  • Verificar a autenticidade do webhook

  • Validar solicitações recebidas

  • Proteger seus endpoints de webhook

Melhores práticas técnicas

Use o codec Opus

As Chamadas do WhatsApp atualmente suportam apenas áudio.

Sua plataforma de voz deve usar o codec de áudio Opus para compatibilidade.

Desative o ICE trickle

Não use ICE Trickle durante a negociação SDP.

A Wati requer um bloco SDP completo que já contenha todos os candidatos ICE.

Envie cargas SDP completas

Certifique-se de que seu SDP inclua:

  • Candidatos ICE

  • Impressões digitais

  • Informações de mídia

antes de enviar solicitações para as APIs da Wati.

Visão geral do fluxo de chamadas

Fluxo de chamada de entrada

Fluxo de chamada de saída

Fluxo de permissão de chamada

Perguntas Frequentes (FAQs)

Disponibilidade e acesso

1. Este recurso está disponível em todos os planos da Wati?

Não, este recurso está disponível apenas para os planos Pro e superiores.

2. Por que não vejo esta configuração na minha conta Wati?

Esta configuração é habilitada somente mediante solicitação. Você precisa entrar em contato com o suporte da Wati para habilitá-la para sua conta.

Chamadas e integrações

3. As chamadas serão gravadas e transcritas ao usar Chamadas do WhatsApp em uma plataforma externa ou BYOA?

Não, as chamadas não serão gravadas ou transcritas ao usar Chamadas do WhatsApp em uma plataforma externa ou Traga Sua Própria Origem (BYOA). As chamadas ocorrem através do seu próprio servidor, onde a Wati não tem controle.

4. Posso lidar com chamadas tanto na Wati quanto em uma plataforma integrada externamente?

Não, todas as chamadas recebidas serão roteadas para sua plataforma integrada externamente em vez da Wati.

5. Por que as chamadas de saída feitas através da Wati não conseguem detectar se uma chamada foi aceita ou recusada?

As chamadas de saída feitas através da Wati não conseguem detectar se uma chamada foi aceita ou recusada porque você configurará seu próprio endpoint de webhook para receber atualizações de status de chamada, como discando, aceita ou recusada.

Suporte e implementação

6. Quem pode me ajudar a configurar este recurso se eu não tiver familiaridade técnica com a implementação?

A Wati oferece suporte de implementação para clientes do Plano Business conforme a necessidade. Você pode entrar em contato com seu Gerente de Sucesso do Cliente (CSM) para agendar uma chamada.

Respondeu à sua pergunta?