Um relatório de entrega de SMS (DLR) informa o estado final de uma mensagem: DELIVRD (chegou ao aparelho), UNDELIV (falhou), EXPIRED (o período de validade acabou), REJECTD (recusada pela rede), DELETED, UNKNOWN, ou ACCEPTD e ENROUTE como estados intermediários. O status vem com um código de erro que explica as falhas, mas os códigos de erro são específicos de cada operadora ou plataforma.
Como o DLR chega até você
No SMPP, você pede um recibo preenchendo o campo registered_delivery no submit_sm (o valor 1 pede recibo em caso de sucesso e de falha, o valor 2 só em caso de falha). O fornecedor responde com submit_sm_resp e um message ID, o que significa apenas que a mensagem foi aceita, não entregue. Depois, o recibo chega como um deliver_sm com o esm_class indicando que é um recibo de entrega. Nas HTTP APIs, a mesma informação é enviada para o seu webhook. As duas interfaces são comparadas em SMPP vs HTTP API para SMS A2P.
A especificação SMPP 3.4 sugere um formato de texto para o recibo, que a maioria das plataformas segue:
id:1234567890 sub:001 dlvrd:001 submit date:2610201015 done date:2610201015 stat:DELIVRD err:000 text:Your code is
O id corresponde ao message ID do submit_sm_resp. As datas normalmente estão no formato YYMMDDhhmm. Muitas plataformas também enviam os mesmos dados nos parâmetros opcionais receipted_message_id e message_state.
Valores de status
| Status | Significado | Final? |
|---|---|---|
| DELIVRD | Entregue ao aparelho | Sim |
| UNDELIV | Não pôde ser entregue (número inválido, assinante ausente, barrado, bloqueado) | Sim |
| EXPIRED | O período de validade terminou antes da entrega, muitas vezes porque o celular estava desligado ou fora de área | Sim |
| REJECTD | Rejeitada pela rede ou por um firewall de SMS, muitas vezes por causa do sender ID ou do conteúdo | Sim |
| DELETED | Apagada do SMSC antes da entrega | Sim |
| UNKNOWN | Estado final desconhecido ou não informado | Trate como falha até prova em contrário |
| ACCEPTD | Aceita pelo SMSC em nome do assinante, sem confirmação do aparelho | Intermediário |
| ENROUTE | Em trânsito, a entrega ainda está sendo tentada | Intermediário |
Algumas plataformas enviam recibos intermediários e depois um final. O seu sistema deve atualizar o estado da mensagem a cada vez e considerar como resultado apenas o estado final.
Códigos de erro
O campo err traz um código de três dígitos, normalmente 000 em caso de sucesso. Nas falhas, o significado depende da operadora e de cada plataforma da cadeia, então não existe uma lista universal. As categorias comuns por trás dos códigos são: assinante desconhecido ou não alocado, assinante ausente, memória do aparelho cheia, chamada barrada, falha de rede e bloqueio por filtro de spam ou firewall. Peça a cada fornecedor a tabela de códigos de erro dele e associe-a às suas próprias categorias. Não confunda os códigos de erro do DLR com os códigos command_status do SMPP devolvidos no envio: esses estão em códigos de erro SMPP comuns.
Lendo os DLRs corretamente
- DLRs ausentes não são falhas por padrão. Alguns destinos ou rotas não devolvem recibos. Saiba quais antes de montar alertas.
- O tempo importa. Um status EXPIRED pode chegar horas ou dias depois, conforme o período de validade que você definiu. Um período de validade curto é adequado para OTP, em que um código atrasado não serve para nada.
- Mensagens concatenadas podem gerar um recibo por parte. Conte uma mensagem longa como entregue só quando todas as partes forem entregues. Veja SMS longo concatenado.
- Bom demais para ser verdade é um sinal. Uma rota com 100% de DELIVRD e recibos instantâneos pode estar enviando DLRs falsos.
Usando os DLRs para gerenciar rotas
Agregue os status por país, por rede e por rota a cada hora. Um aumento de UNDELIV ou REJECTD em uma rede muitas vezes indica uma mudança no firewall ou um problema de sender ID; um aumento de EXPIRED pode indicar congestionamento. Essa é a base do monitoramento de entrega, explicado em taxa de entrega e latência de SMS. Quando uma rota piora, uma rota de backup permite mover o tráfego rapidamente.
O VoIPMatcher obtém rotas SMS A2P com relatórios de entrega junto às suas operadoras. Solicite uma rota SMS e informe quais destinos precisam de suporte completo a DLR.
Perguntas frequentes
O que significa DLR em SMS?
DLR significa delivery report, também chamado de delivery receipt (relatório ou recibo de entrega). É a mensagem de status devolvida depois que uma rede tenta entregar um SMS, dizendo ao remetente se a mensagem chegou ao aparelho, falhou, expirou ou foi rejeitada. As plataformas A2P a repassam ao remetente via SMPP ou para um webhook.
Como ativo os relatórios de entrega de SMS no meu celular?
Na maioria dos apps de mensagens do Android, os relatórios de entrega são uma opção nas configurações de SMS do app, muitas vezes em configurações avançadas. O iPhone não oferece relatórios de entrega para SMS comuns. Os relatórios de entrega do celular são diferentes dos DLRs A2P que as empresas recebem do provedor de SMS, que são solicitados no envio de cada mensagem.
O que é um DLR do SMSC?
Um DLR do SMSC é o recibo de entrega gerado pelo Short Message Service Centre da operadora depois que ele tenta entregar a mensagem. É o único relatório que reflete o que aconteceu na rede. Recibos criados por plataformas intermediárias sem confirmação da operadora não são DLRs reais do SMSC e podem esconder tráfego não entregue.
Por que não recebo relatório de entrega de alguns SMS?
Alguns destinos, redes e rotas não devolvem nenhum recibo, e alguns só os devolvem em caso de falha. Um DLR ausente, portanto, não prova que a mensagem falhou. Descubra com o seu fornecedor quais destinos têm suporte completo a DLR, informe os recibos ausentes separadamente das falhas e confirme com testes em aparelhos.
Quanto tempo leva um relatório de entrega?
Em boas rotas, um relatório DELIVRD normalmente chega poucos segundos depois da entrega. Os status de falha podem demorar muito mais: um relatório EXPIRED só chega quando o período de validade termina, o que pode ser horas ou dias depois. Relatórios que sempre chegam menos de um segundo após o envio, mesmo para falhas, sugerem que são gerados e não reais.
Precisa de uma rota?
Envie o destino, o tipo de rota e a tarifa alvo. Respondemos com o que podemos entregar.