WhatsApp Calling — integração via hub

Como receber eventos de chamada no seu sistema de atendimento usando este hub como ponte.

1. Visão geral

A WhatsApp Cloud API Calling envia atualizações de chamadas no mesmo fluxo de webhooks da Meta. Este hub:

O seu sistema pode iniciar outbound com call-offer/connect e, no inbound, gerar o SDP answer (WebRTC); o hub encaminha connect, pre_accept, accept, reject e terminate para a Graph API com o token da conexão — sem expor credenciais Meta ao seu frontend.

2. Configurar o seu endpoint

Na conexão WhatsApp do hub, informe a URL do seu sistema em Webhook URL (e opcionalmente Webhook URL 2). O hub fará POST com Content-Type: application/json.

Headers enviados pelo hub

3. Formato do JSON (outbound)

Campos de alto nível:

Exemplo vivo (ambiente configurado):

GET {APP_URL}/api/integrations/whatsapp-calling/reference

Substitua {APP_URL} pela URL base da sua instância (ex.: https://api.suaempresa.com).

4. Aceitar, recusar ou encerrar (API do hub)

Autenticação: Authorization: Bearer <company_token_uuid> ou X-Company-Token (igual às outras rotas). Opcional: X-Request-Id, Idempotency-Key.

No corpo, informe connection_id (UUID da conexão = campo token no banco, mesmo que connection.id no webhook call.event) ou phone_number_id.

Alias com prefixo interno (mesmo router): /api/internal/calls/<callId>/...

Contrato detalhado: docs/hub-calling-api-accept-decline.md no repositório.

5. Swagger / OpenAPI

O schema CallEventWebhookPayload e o endpoint de referência estão na documentação Swagger da API:

6. Meta — o que configurar

7. Próximos passos no seu sistema

  1. Implementar um endpoint HTTP que valide origem (IP fixo, assinatura se você adicionar no hub no futuro, ou segredo na query).
  2. Persistir call.id e estado conforme os eventos que a Meta enviar.
  3. Gerar SDP answer no browser ou media server e chamar o hub em pre_accept e accept na ordem recomendada pela Meta.

Documentação Meta (referência externa): Cloud API — Calling