Skip to main content

Exemplos

Abaixo estão exemplos práticos de como usar a API de WhatsApp Calling para iniciar, aceitar e encerrar chamadas. Cada cenário mostra a sequência de requisições e respostas, bem como os webhooks recebidos. Para detalhes sobre os endpoints e seus parâmetros, consulte a API de Calling. Para entender os eventos de webhook, veja Webhooks.

Cenário A — Chamada iniciada pela empresa (outbound)

Neste cenário, sua empresa inicia uma chamada para um usuário do WhatsApp.

Passo 1: Verificar permissão de chamada

Antes de iniciar uma chamada, verifique se sua empresa tem permissão para ligar para o usuário. A Meta impõe limitações de chamadas que podem variar conforme o histórico de comunicação. Requisição:
Response:
O campo calling.permission.status pode ser no_permission, temporary ou permanent. Consulte a tabela de actions para saber se você pode iniciar uma chamada e quais são os limites (máximo de chamadas por período).

Passo 2: Iniciar a chamada

Se a permissão está confirmada e você tem chamadas disponíveis, inicie a chamada enviando a oferta SDP (Session Description Protocol). Requisição:
Response:

Passo 3: Encerrar a chamada

Quando a chamada termina (usuário desligou, você quer encerrar, etc.), envie a requisição de encerramento com o call_id que você obteve no webhook de início (connect) ou no corpo da resposta. Requisição:
Response:

Passo 4: Receber o webhook de encerramento

Após a chamada ser encerrada, você recebe um webhook no calls_webhook configurado do número com o evento terminate. O webhook entregue é o envelope bruto da Meta com a estrutura abaixo:
O objeto dentro de calls[] contém informações sobre como a chamada terminou: direction indica quem iniciou o encerramento, duration é o tempo em segundos e status mostra se foi concluída com sucesso ou não.

Cenário B — Chamada recebida de um usuário (inbound)

Neste cenário, um usuário do WhatsApp inicia uma chamada para sua empresa.

Passo 1: Receber o webhook de início de chamada

Quando um usuário tenta ligar para o seu número, você recebe um webhook no calls_webhook com o evento connect. Este webhook contém o call_id (no campo id) e a oferta SDP do usuário.
Use o campo id (exemplo: wacid.HBgM...) como o call_id para as próximas ações (aceitar ou rejeitar). O connection.webrtc.sdp é a oferta SDP do usuário.

Passo 2: Aceitar a chamada (ou rejeitar)

Você pode aceitar a chamada respondendo com sua própria SDP ou rejeitá-la. Para aceitar: Requisição:
Response:
Para rejeitar a chamada: Requisição:
Response:

Passo 3: Encerrar a chamada

Quando a chamada ativa termina (um dos lados desliga), você encerra a chamada: Requisição:
Response:

Passo 4: Receber o webhook de encerramento

Após o encerramento, você recebe um webhook com o evento terminate:
O webhook de terminate é igual para ambos os cenários (outbound e inbound). Use os campos direction, duration e status para registrar detalhes sobre como a chamada terminou.