easyCoexistence
Iniciar sessãoIniciar teste gratuito
Meta Tech Provider

O webhook messages

messages é o campo que transporta tudo o que um cliente envia para o seu número: texto, multimédia, respostas, reações e respostas interativas. Num número Coexistence encaminhado, segue da Meta diretamente para o seu endpoint e nunca passa por um fornecedor.

messages

O campo webhook que transporta mensagens recebidas de clientes.

wamid

O prefixo no id da mensagem usado para eliminar repetições.

200

O estado que a Meta espera rapidamente, antes de qualquer processamento.

O que o payload transporta

Uma ou mais mensagens numa única entrega, cada uma com o remetente, um id e um tipo. O tipo determina que outras chaves estão presentes.

  • O número de telemóvel do remetente e o phone number id do número para o qual escreveu.
  • Um id de mensagem wamid, que serve de base à eliminação de duplicados.
  • Um carimbo de data e hora Unix.
  • Um tipo: text, image, audio, video, document, sticker, location, contacts, reaction, button ou interactive.
  • Nos tipos multimédia, um id de multimédia para obter o conteúdo, em vez dos próprios bytes.

Porque nunca chega até nós num número encaminhado

Porque o override move este campo, juntamente com smb_message_echoes, para o destino que indicar.

A Meta permite que uma aplicação altere o local onde uma WhatsApp Business Account entrega os seus webhooks. Definimos esse override para o seu URL, retirando totalmente o percurso das mensagens da nossa infraestrutura. Não existe cópia, fila nem retenção do nosso lado, porque a entrega nunca chega lá.

Quando não é definido um destino, estes eventos recorrem ao nosso callback predefinido, onde o handler os descarta sem os persistir. Essa é a diferença entre uma afirmação sobre armazenamento e um caminho de código: não há qualquer local para onde o conteúdo das conversas possa ir.

Como confirmar corretamente

Devolva 200 antes de fazer o trabalho, não depois.

A Meta considera uma resposta lenta uma falha e tenta novamente, o que significa que um handler que processe inline verá a mesma mensagem mais do que uma vez. Responda de imediato, coloque o payload numa fila ou tarefa em segundo plano e deixe o trabalho acontecer fora do pedido.

Em serverless, isto não é opcional. Uma função que termina e continua a trabalhar pode ser congelada no momento em que responde, pelo que a confirmação e o processamento têm de estar realmente separados.

Eliminar duplicados

Sempre com base no wamid, porque as novas tentativas são normais e não excecionais.

A mesma mensagem pode chegar duas vezes por razões que nada têm que ver com um erro do seu lado: uma resposta lenta, um timeout de rede ou uma implementação durante a entrega. Guardar os ids já vistos e ignorar repetições requer poucas linhas e faz a diferença entre responder uma vez ou duas a um cliente.

Num número Coexistence, isto é ainda mais importante, porque smb_message_echoes chega pelo mesmo caminho e um handler que trate cada evento como novo responderá por cima de uma pessoa que já respondeu.

Erros comuns

  • Processar antes de devolver 200. A Meta repete uma resposta lenta e a mensagem é tratada duas vezes.
  • Ignorar a eliminação de duplicados. As novas tentativas fazem parte do funcionamento normal, não são um caso raro.
  • Esperar bytes de multimédia no payload. Este transporta um id de multimédia para obter o conteúdo.
Fazer isto com a EasyCoexistence

EasyCoexistence encaminha este campo diretamente da Meta para o seu endpoint e conserva apenas os eventos operacionais usados pela monitorização, pelo que o conteúdo das conversas não tem qualquer caminho para o nosso armazenamento.

Perguntas frequentes

A EasyCoexistence vê as mensagens dos meus clientes?

Não. O override entrega este campo ao seu endpoint. Tudo o que chega ao nosso callback de recurso é descartado sem ser persistido.

Podem chegar várias mensagens num único pedido?

Sim. Uma única entrega pode conter mais do que uma, pelo que os handlers devem percorrê-las em vez de lerem apenas a primeira.

Como obtenho os conteúdos multimédia?

O payload transporta um id de multimédia. Use-o para obter o URL com o access token do número e, em seguida, transfira o conteúdo.

O que é smb_message_echoes?

O campo complementar que transporta o que a sua equipa envia a partir da aplicação WhatsApp Business. Só existe em números Coexistence.

Continue a ler

Pronto para começar?

Configure a Coexistência do WhatsApp em minutos, não em meses. A aplicação continua a funcionar no telemóvel.

Começar período experimental gratuito

Verificado em

webhook messages