O webhook do SMS: como o seu sistema fica a saber que cada aviso saiu ou falhou

WhatsApp e APIs·· 39 visualizações· 3 min de leitura

A resposta curta: grave um endereço HTTPS seu com PUT /v1/sms/webhook e, a partir daí, sempre que uma mensagem fica enviada ou falha, enviamos um aviso assinado para esse endereço. O seu sistema marca o aviso como enviado, ou tenta outro canal, sem ninguém ter de abrir o histórico.

Como funciona

1 O seu sistema pede o envio à API, com o número, o texto e, se quiser, a hora marcada.
2 A mensagem entra na fila: fica scheduled ou queued e sai na sua vez.
3 Sai ou falha. Quando fica sent ou failed, enviamos um POST para o seu endereço.
4 O seu sistema reage: atualiza o estado do aviso, ou passa para o e-mail se falhou.

Gravar o endereço

Campo O que é
url O seu endereço HTTPS, na porta 443. Endereços internos ou privados são recusados.
events Os acontecimentos que quer receber: sms.sent, sms.failed ou os dois (por padrão, os dois).
rotate_secret Com true, cria um segredo novo.

O segredo da assinatura só aparece quando o webhook é criado, ou quando pede um novo com rotate_secret: guarde-o logo. A permissão da chave para gravar é sms:write; para consultar, GET /v1/sms/webhook com sms:read mostra o endereço, os acontecimentos e a última entrega, nunca o segredo.

O que chega ao seu endereço

POST https://o-seu-sistema/webhook
X-Webhook-Signature: t=1763625600,v1=...

{"event": "sms.sent",
"created_at": "...",
"data": {"id": "412", "status": "sent", ...}}

O campo data traz os mesmos campos que a consulta de uma mensagem. Antes de confiar no aviso, confira a assinatura do cabeçalho X-Webhook-Signature: veja receber um webhook em PHP e conferir a assinatura e, se algo não chegar, o webhook do SMS não chega.

Só conta daqui para a frente. O webhook avisa sobre as mensagens criadas depois de ele ser gravado. As anteriores consultam-se com GET /v1/sms/messages/{id}.

Testar e desligar

POST /v1/sms/webhook/test envia já um aviso assinado webhook.test e devolve o que o seu servidor respondeu. DELETE /v1/sms/webhook desliga o webhook e cancela as entregas que estavam por fazer.

«Enviado» quer dizer que saiu para a operadora, não que foi lido. Para o seu sistema, sms.sent é «o aviso partiu» e sms.failed é «tenho de fazer outra coisa». Porquê avisar em vez de perguntar está em webhook ou consulta periódica.

Quer que o seu sistema saiba sozinho o que aconteceu a cada aviso? Veja a página da API.

Ver a página da API

VEJA TAMBÉM

Receber um webhook em PHP e verificar a assinatura

O webhook do SMS não chega ou é recusado: HTTPS, assinatura, resposta em 5 segundos e novas tentativas

Quando um aviso por SMS falha: novas tentativas, créditos devolvidos e passar para o e-mail

Webhook ou consulta periódica: como um sistema fica a saber que algo mudou em outro

Erros e estados das mensagens na API de SMS: o que significa cada um e o que fazer

Síncrono ou assíncrono: porque a confirmação de um pagamento ou de um SMS chega depois

PRODUTO RECOMENDADO

Hospedagem de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.