Meta Tech Provider

O webhook messages

messages é o campo que carrega tudo o que um cliente envia para o seu número: texto, mídia, respostas, reações e retornos interativos. Em um número com Coexistência roteado, ele vai da Meta direto para o seu endpoint, e nunca passa por um provedor.

messages

O campo de webhook que carrega as mensagens recebidas dos clientes.

wamid

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

200

O status que a Meta espera rápido, antes de qualquer processamento.

O que o payload carrega

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

  • O número de telefone de quem enviou, e o phone number id do número para o qual escreveram.
  • Um id de mensagem wamid, que é a base da eliminação de repetições.
  • Um timestamp unix.
  • Um tipo: text, image, audio, video, document, sticker, location, contacts, reaction, button ou interactive.
  • Para tipos de mídia, um id de mídia para buscar o arquivo, e não os bytes em si.

Por que ele nunca chega a nós em um número roteado

Porque o override move este campo, junto de smb_message_echoes, para o destino que você indicar.

A Meta permite que um app sobrescreva para onde uma conta do WhatsApp Business entrega os webhooks dela. Nós apontamos esse override para a sua URL, o que tira o caminho de mensagem da nossa infraestrutura por completo. Não existe cópia, nem fila, nem retenção do nosso lado, porque a entrega nunca chega lá.

Quando nenhum destino é definido, esses eventos caem no nosso callback padrão, onde o handler os descarta sem persistir. Essa é a diferença entre uma afirmação sobre armazenamento e um caminho de código: não há para onde o conteúdo de conversa ir.

Confirmando o recebimento do jeito certo

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

A Meta trata uma resposta lenta como falha e repete a entrega, o que significa que um handler que processa na mesma requisição vai ver a mesma mensagem mais de uma vez. Responda na hora, coloque o payload em uma fila ou em uma tarefa de segundo plano, e deixe o trabalho acontecer fora da requisição.

Em serverless isso não é opcional. Uma função que responde e depois continua trabalhando pode ser congelada no instante em que responde, então a confirmação e o processamento precisam ser de fato separados.

Eliminando repetições

Pelo wamid, sempre, porque repetir a entrega é normal, e não excepcional.

A mesma mensagem pode chegar duas vezes por motivos que não têm nada a ver com um bug do seu lado: uma resposta lenta, um timeout de rede, um deploy no meio da entrega. Guardar os ids já vistos e pular os repetidos são poucas linhas, e é a diferença entre um cliente ser respondido uma vez e ser respondido duas.

Em um número com Coexistência isso importa ainda mais, porque smb_message_echoes chega pelo mesmo caminho e um handler que trata todo evento como novo vai responder em cima de uma pessoa que já respondeu.

Erros comuns

  • Processar antes de devolver 200. A Meta repete a entrega lenta e você trata a mensagem duas vezes.
  • Pular a eliminação de repetições. As repetições são por projeto, não um caso extremo.
  • Esperar os bytes da mídia no payload. Ele carrega um id de mídia para buscar o arquivo.
Fazendo isso com o EasyCoexistence

A EasyCoexistence roteia este campo direto da Meta para o seu endpoint e guarda apenas os eventos operacionais de que o monitoramento é feito, então o conteúdo de conversa não tem caminho nenhum até o nosso armazenamento.

Perguntas frequentes

A EasyCoexistence vê as mensagens dos meus clientes?

Não. O override entrega este campo no seu endpoint. Qualquer coisa que chegue ao nosso callback de reserva é descartada sem ser persistida.

Podem chegar várias mensagens em uma requisição?

Sim. Uma única entrega pode trazer mais de uma, então os handlers devem percorrer a lista em vez de ler só a primeira.

Como eu pego a mídia?

O payload carrega um id de mídia. Busque a URL com ele usando o token de acesso do número, e então baixe.

O que é smb_message_echoes?

O campo companheiro que carrega o que a sua equipe envia pelo app do WhatsApp Business. Ele só existe em números com Coexistência.

Continue lendo

Pronto para começar?

Configure o WhatsApp Coexistence em minutos, não em meses. O aplicativo continua funcionando no celular.

Começar teste grátis

Verificado em

Webhook messages