Passar para o conteúdo principal

Como integrar chamadas do WhatsApp com seu CRM ou portal interno

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.

Nota: A integração de chamadas do WhatsApp com seu CRM ou ferramenta interna está atualmente em beta e está disponível mediante solicitação. Para ativá-la, entre em contato com seu Gerente de Sucesso do Cliente (CSM) ou a equipe de Suporte do Wati.

Instruções

A API de Chamadas do WhatsApp do 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 do Wati

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

Este guia é destinado a desenvolvedores que constroem integrações de voz personalizadas.

Arquitetura central e autenticação

A integração usa troca de Protocolo de Descrição de Sessão (SDP) entre o 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 locatário do Wati.

Autenticação

Todo pedido de API deve incluir um Token Bearer no cabeçalho da solicitação.

Authorization: Bearer {YOUR_ACCESS_TOKEN}

Encontre suas credenciais da API

  • Faça login na sua conta Wati.

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

  • Copie seu:

    • Endpoint da API

    • Token Bearer

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

Gerenciando chamadas recebidas

Passo 1: Configure webhooks de chamadas recebidas

Na plataforma Wati, configure sua URL de webhook para:

  • Webhook de Nova Chamada Recebida

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

Passo 2: Receba o webhook de entrada

Quando um usuário liga para seu número do WhatsApp, o 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... (Oferta do WhatsApp)",
"businessNumber": "1234567890"
}

Passo 3: Realize a negociação WebRTC

Seu aplicativo agora deve estabelecer a sessão WebRTC.

Inicialize a conexão de par

Crie uma RTCPeerConnection em seu servidor, agente de voz ou plataforma de terceiros.

Defina a descrição remota

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

Gere uma resposta SDP

Gere uma resposta SDP local a partir de sua conexão com o par.

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

Exemplo:

a=fingerprint:SHA-256

Passo 4: Aceite a chamada

Envie a resposta SDP gerada de volta para o 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... (Sua Resposta)"
}

Realizando chamadas de saída

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

Passo 1: Gerencie as permissões de chamada

Verifique o status da permissão existente

Use o seguinte endpoint para verificar se o usuário já concedeu permissão para chamadas.

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

Solicitar permissão

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

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

Aguarde a aprovação da permissão

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

Só prossiga com a chamada de saída após a aprovação.

Iniciando uma chamada de saída

Passo 2: Crie e envie a oferta SDP

Gere uma oferta SDP

Crie uma oferta SDP usando sua RTCPeerConnection WebRTC.

Chame a API de chamada de saída

Envie a oferta SDP para o 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... (Sua Oferta)"
}

Receba o ID da chamada

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

Estabelecendo o stream de áudio

Passo 3: Finalize a conexão WebRTC

Monitore o status da chamada

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

  • LINGUAGEM

  • TOCANDO

  • ACEITO

Receba a resposta SDP do usuário

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

Complete a conexão

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

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

Terminando chamadas

Quando o usuário desliga

O Wati envia um Webhook de Terminação de Chamada para notificar seu aplicativo que a chamada foi encerrada.

Quando a empresa desliga

Use a API de Terminação de 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 publicar suas URLs de webhook?

URLs de webhook necessárias

Configure os seguintes endpoints de webhook no Wati.

Webhook de Nova Chamada Recebida

Recebe ofertas SDP recebidas de usuários do WhatsApp.

Webhook de Terminação de Chamada

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

Webhook de Nova Chamada de Saída

Recebe respostas SDP para chamadas de saída.

Webhook de Novo Status de Chamada de Saída

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

  • Chamando

  • Tocando

  • Aceite

Webhook de Permissão de Chamada

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

Requisitos do webhook

Seus endpoints de webhook devem:

  • Ser acessíveis publicamente

  • Retornar uma resposta HTTP 200 OK

  • Responder dentro de 30 segundos

Configurar a verificação da chave da API do webhook

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

O 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.

Desabilitar ICE trickle

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

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

Enviar 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 do Wati.

Visão geral do fluxo de chamadas

Fluxo de chamada recebida

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 do Wati?

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

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

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

Chamadas e integrações

3. As chamadas serão gravadas e transcritas ao usar chamadas do WhatsApp em uma plataforma externa ou agentes de IA personalizados?

Não, as chamadas não serão gravadas ou transcritas ao usar chamadas do WhatsApp em uma plataforma externa ou agentes de IA personalizados. As chamadas ocorrem em seu próprio servidor, onde o Wati não tem controle.

4. Posso gerenciar chamadas tanto no Wati quanto em uma plataforma integrada externamente?

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

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

As chamadas de saída realizadas através do 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 chamando, aceito ou recusado.

Suporte e implementação

6. Quem pode me ajudar a configurar este recurso se eu não estiver familiarizado tecnicamente com a implementação?

O Wati fornece suporte à implementação para clientes do Plano Empresarial conforme necessário. Você pode entrar em contato com seu Gerente de Sucesso do Cliente (CSM) para agendar uma call.

Respondeu à sua pergunta?