Como Configurar Webhooks Individuais para Múltiplos Apps na Meta Cloud API

Problema

Se você está desenvolvendo chatbots para WhatsApp e utiliza a Meta Cloud API, pode se deparar com um problema inesperado: os webhooks de diferentes apps estão recebendo eventos de todos os números associados, mesmo que cada um tenha seu próprio endpoint configurado.

Isso pode gerar conflitos nos testes e na execução dos chatbots, pois mensagens enviadas para um determinado número de teste acabam sendo entregues nos webhooks de outros apps dentro da mesma conta de negócios.

Cenário Técnico

  • Você possui múltiplos ambientes (por exemplo, desenvolvimento, teste e produção), cada um com um número de WhatsApp e um app separado na Meta Cloud API.
  • Cada app está conectado a um webhook exclusivo e assinado no campo messages.
  • No entanto, todos os webhooks estão recebendo mensagens de todos os números, e não apenas do número correspondente ao app.

Isso ocorre porque, por padrão, a Meta Cloud API pode vincular um mesmo webhook a mais de um número de telefone dentro da conta de negócios.

Solução

A solução para garantir que cada app receba apenas os eventos do seu respectivo número de telefone é configurar manualmente as assinaturas de webhooks. Vamos ao passo a passo:

Passo 1: Verificar as Assinaturas de Webhooks Atuais

Antes de modificar qualquer configuração, é importante verificar quais webhooks estão configurados para cada número de WhatsApp.

Execute o seguinte request para listar as assinaturas de webhooks do seu WhatsApp Business:

GET https://graph.facebook.com/{{VERSAO}}/{{ID_WHATSAPP_BUSINESS}}/subscribed_apps
Authorization: Bearer {{TOKEN_SUPREMO}}

Isso listará quais apps estão assinados no webhook.

Passo 2: Remover Todas as Assinaturas de Webhooks

Para evitar que um mesmo webhook receba eventos de múltiplos números, primeiro remova todas as assinaturas de webhook existentes.

Execute o seguinte request para cada WhatsApp Business ID:

DELETE https://graph.facebook.com/{{VERSAO}}/{{ID_WHATSAPP_BUSINESS}}/subscribed_apps
Authorization: Bearer {{TOKEN_SUPREMO}}

Isso removerá todas as assinaturas de webhooks associadas a esse número de WhatsApp.

Passo 3: Adicionar a Assinatura de Webhook Corretamente

Agora, você pode associar cada número de WhatsApp ao app correto, garantindo que cada webhook receba apenas os eventos que lhe dizem respeito.

Execute o seguinte request para cadastrar a assinatura correta para cada WhatsApp Business ID:

POST https://graph.facebook.com/{{VERSAO}}/{{ID_WHATSAPP_BUSINESS_DESEJADO}}/subscribed_apps
Authorization: Bearer {{TOKEN_TEMPORARIO_APP}}

Isso associa um webhook específico ao app correto.

Passo 4: Confirmar as Configurações

Para garantir que a configuração foi feita corretamente, execute novamente o comando de verificação:

GET https://graph.facebook.com/{{VERSAO}}/{{ID_WHATSAPP_BUSINESS}}/subscribed_apps
Authorization: Bearer {{TOKEN_SUPREMO}}

Se tudo estiver configurado corretamente, a resposta deverá conter apenas o app correto vinculado ao WhatsApp Business ID correspondente.

Conclusão

Com essa abordagem, você garante que cada app do seu ambiente receba apenas os eventos do número de WhatsApp correto, evitando ruídos no desenvolvimento e testes dos chatbots. Essa solução é essencial para quem trabalha com múltiplos ambientes e precisa de um controle preciso sobre os webhooks na Meta Cloud API.

Caso tenha dúvidas, confira a documentação oficial da Meta: Webhooks WhatsApp.

Rolar para cima