Webhooks da Meta: verificar e receber

Para receber mensagens da Cloud API do WhatsApp, a Meta tem de saber para onde as enviar. Dá-se-lhe um endereço, a Meta verifica-o uma vez, e a partir daí chama-o sempre que chega uma mensagem ou muda o estado de uma que enviou. Se a verificação falha, a Meta não guarda o endereço. Quase todos os problemas estão aí, e quase todos têm a ver com o endereço, o HTTPS ou o que o servidor devolve.

O que a Meta pede ao seu endereço

Requisito Porquê
Público e com HTTPS válido A Meta não chama endereços locais nem com certificado inválido. Veja HTTPS para um contentor.
Responder à verificação É um pedido de teste, com um desafio e a sua palavra secreta. O servidor compara a palavra e devolve o desafio, exactamente como a documentação da Meta descreve.
Devolver sucesso depressa Nas mensagens verdadeiras, a Meta espera uma resposta de sucesso rápida. Se não a recebe, tenta de novo.
Aceitar repetições A mesma notificação pode chegar mais do que uma vez.

Passo a passo

1 Monte o receptor. Pode ser um fluxo do n8n (veja os webhooks do n8n), um ficheiro seu no servidor ou uma aplicação. Tem de estar acessível por HTTPS.
2 Escolha o token de verificação. É uma palavra secreta sua, que não é o token da API. Escreva-a no receptor.
3 Programe a resposta à verificação. Quando a Meta fizer o pedido de teste, o receptor compara a palavra e devolve o desafio recebido. A documentação mostra o pedido e a resposta.
4 Indique o endereço e a palavra no painel da app, na secção do WhatsApp, e peça a verificação.
5 Subscreva os campos de que precisa, como o das mensagens. Sem isso, a verificação passa e nunca chega nada.
6 Mande uma mensagem ao número e veja se o pedido chega ao receptor. Grave o conteúdo: é a melhor documentação dos campos.
Verifique quem lhe escreve. O endereço é público, por isso qualquer pessoa pode enviar-lhe pedidos que parecem da Meta. A Meta assina cada notificação com a chave da sua app, e a documentação indica o cabeçalho e como calcular a assinatura. Valide-a e recuse o que não bate certo.

Porque a verificação falha

Sintoma Causa provável
A Meta não consegue chegar ao endereço Firewall, porta fechada, domínio que não resolve ou certificado inválido ou expirado.
Chega o pedido mas é recusado A palavra secreta não coincide, ou o receptor não devolve o desafio tal como recebeu.
Passa a verificação e não chegam mensagens Não subscreveu o campo das mensagens, ou a app está em modo de teste com o número de teste.
Funciona e depois deixa de funcionar O certificado expirou, ou o receptor passou a demorar e a Meta desistiu.
Chegam duplicados É normal. Guarde o identificador da mensagem e ignore o que já tratou.

Depois de receber

1 Responda ao webhook primeiro, e só depois trate a mensagem.
2 Respeite a janela de 24 horas ao responder. Veja modelos e janela de 24 horas.
3 Registe o que entra durante algum tempo, para encontrar os casos esquisitos.
Se o receptor está num VPS seu, o caminho mais curto é um proxy inverso com um certificado. Veja Nginx à frente de um contentor. Para testar o seu receptor sem a Meta, simule os pedidos com curl, como em o que é um webhook e como o testar.

Precisa de um endereço com HTTPS para o webhook? Comece pelo VPS.

Ver servidores VPS

VEJA TAMBÉM

Começar com a Cloud API da Meta

Modelos e a janela de 24 horas

O que é um webhook e como o testar

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?