direction: "inbound" e gera o evento message.received. Você não lida com o payload do provedor, nem com a verificação do webhook dele.
Escopos necessários:
webhooks:write para registrar o endpoint, messages:read para consultar mensagens e media:read para baixar mídia.Receber por webhook
1
Registre um endpoint
Crie um endpoint HTTPS que assine O
message.received.secret retornado é usado para verificar a assinatura de cada entrega. Ele é exibido apenas na criação (e ao rotacionar).2
Verifique e processe o evento
Valide a assinatura sobre o corpo bruto e trate
message.received. O campo data é a mensagem recebida.3
Responda 2xx rapidamente
Retorne
2xx em até 10 segundos e faça o trabalho pesado depois. Se você demorar ou falhar, a Routa tenta de novo. Veja Retentativas e reenvio.Exemplo de evento
Tipos de conteúdo recebidos
Ocontent de uma mensagem recebida pode ser text, image, document, audio, video, sticker, location ou reaction. Conteúdo que a Routa ainda não modela chega como { "type": "unsupported" }: a mensagem não é descartada. Veja Tipos de conteúdo.
Baixar a mídia recebida
Paraimage, document, audio, video e sticker, o conteúdo traz um media_id. A Routa baixa e guarda o arquivo de forma assíncrona. Peça uma URL assinada:
status for pending, tente de novo em instantes. A URL vale 15 minutos. Veja Mídia.
Marcar como lida
Para enviar a confirmação de leitura ao cliente, chame:inbound podem ser marcadas como lidas. Para uma mensagem outbound, a API retorna 422 message_direction_invalid. Escopo: messages:write.
Consultar o histórico
Liste as mensagens recebidas com paginação por cursor:Garanta que nenhuma mensagem se perde
Webhooks são entregues pelo menos uma vez, então o mesmo evento pode chegar mais de uma vez. Deduplique peloid do evento. Se seu servidor ficou fora do ar, recupere o que perdeu com GET /v1/events.