Skip to main content
Quando um cliente escreve para o seu número, a Routa normaliza a mensagem, grava-a com 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 message.received.
O 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

O content 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

Para image, 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:
Se 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:
Só mensagens 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:
Veja Paginação.

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 pelo id do evento. Se seu servidor ficou fora do ar, recupere o que perdeu com GET /v1/events.