messages é entregue sempre que um cliente envia algo para o seu número: texto, mídia, localização, contato, reação ou a resposta de um botão.
O conteúdo fica em value.messages, e os dados de quem enviou em value.contacts:
O campo
type indica qual objeto vem junto: text traz text, image traz image, location traz location, e assim por diante.
Mensagens com mídia
Imagem, áudio, vídeo, documento e figurinha seguem o mesmo formato, mudando apenas o nome do objeto. O conteúdo não vem no payload: o que chega é o identificador do arquivo.caption aparece apenas quando o cliente escreveu uma legenda, e voice: true identifica o áudio gravado na hora, em vez de um arquivo enviado da galeria.
Para obter o arquivo, use o id:
- Baixar mídia recebida devolve uma URL válida por 30 dias, para exibir ou repassar o link.
- Baixar o arquivo da mídia devolve o arquivo em bytes, para guardar no seu storage.
Localização
name e address.
Respostas de botões e listas
A resposta de um botão ou de uma lista chega comtype: "interactive", e o identificador que você definiu no envio vem em id. Os formatos estão em Enviar botões e Enviar lista.
Confirmar o recebimento
Depois de processar, marque a mensagem como lida para o cliente ver os dois tiques azuis, usando omessages[].id. Veja Marcar como lida.
A referência completa dos tipos de mensagem está na documentação de webhooks da Meta.