Formato do relatório de entrega SMPP
Os relatórios de entrega SMPP são enviados pelo Servidor SMPP, para o cliente SMPP após as mensagens de texto serem entregues com sucesso ao aparelho. O SMS original é enviado pelo cliente SMPP usando uma requisição smpp submit_sm. Quando o submit_sm é aceito pelo servidor SMPP, ele retorna uma resposta submit_sm_resp, com um ID de referência do SMS. O relatório de entrega chega em uma data posterior. Ele contém o horário da entrega e o ID de referência do SMS que identifica o SMS. O documento abaixo explica o conteúdo de um PDU de relatório de entrega SMPP e fornece um exemplo de relatório de entrega.
Qual é o formato do relatório de entrega SMPPUm relatório de entrega SMPP é recebido como uma mensagem de texto padrão. O texto da mensagem possui um formato especial, que contém vários campos sobre o SMS originalmente enviado. Esses campos podem ser usados para determinar o estado da entrega do SMS.
Exemplo de relatório de entregaRelatório de entrega recebido. +44251234567->+0000000 'Entregue; Para: +44251234567; Em: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 data de envio:2210031207 data de conclusão:2210031207 stat:DELIVRD err: texto:' Entrega bem-sucedida relatada para admin@localhost. ID da tarefa: cdfd66e1-880e-4ead-a559-7ca46d9ec669. Entregue; Para: +44251234567; Em: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 data de envio:2210031207 data de conclusão:2210031207 stat:DELIVRD err: texto:Como receber um relatório de entrega SMPP
Para receber um relatório de entrega SMPP
- Conecte o cliente SMPP
- Faça o bind como transceiver
- Envie o SMS usando o PDU submit_sm
- Registre o ID do SMS da resposta submit_sm_resp
- Aguarde o SMS chegar ao celular
- Receba o PDU do relatório de entrega do SMS
- Relacione o ID do SMS à mensagem enviada
- Registre o horário de entrega do SMS
O SMPP suporta recibos/relatórios de entrega (DLRs) para mensagens SMS, permitindo que sua aplicação determine os resultados da entrega.
O retorno de um recibo/relatório de entrega de mensagem (DLR) depende do valor definido no campo registered_delivery da mensagem originalmente enviada do ESME para o MC em uma operação submit_sm. Isso pode ser configurado para cenários de não entrega e apenas entrega, o que pode resultar em situações em que o recibo não será retornado. Os recibos de entrega de mensagens são retornados nas operações deliver_sm e data_sm.
Os seguintes campos são relevantes nas operações deliver_sm e data_sm quando usados para transmitir recibos de entrega.
- endereço de origem (ou seja, source_addr_ton, source_addr_npi, source_addr) - O endereço de origem será obtido do endereço de destino da mensagem curta original, que gerou o recibo de entrega. O recibo aparece como se tivesse emanado do destinatário da mensagem registrada original.
- endereço de destino (ou seja, dest_addr_ton, dest_addr_npi, destination_addr) - O endereço de destino será obtido do endereço de origem da mensagem curta original, que gerou o recibo de entrega. O recibo é endereçado ao SME que originalmente enviou a mensagem registrada.
- esm_class - O bit 2 do esm_class é definido como 1 para indicar que a mensagem é um Recibo de Entrega MC. Se o bit 5 estiver definido, então a mensagem é uma Notificação Intermediária.
- TLV message_state - Indica o estado final da mensagem original. Veja Estados da mensagem abaixo.
- TLV network_error_code - Veja Códigos de erro abaixo.
- TLV receipted_message_id - ID da mensagem que foi retornado ao ESME pelo MC no PDU submit_sm_resp.
Este tipo de mensagem é usado para transportar um recibo de entrega MC. O MC, ao detectar o estado final de uma mensagem registrada, normalmente geraria uma nova mensagem de recibo endereçada ao originador da primeira mensagem. O Recibo de Entrega MC é então entregue ao ESME em uma operação deliver_sm ou data_sm.
ESME-para-MC: Defina os bits 0 e 1 no campo registered_delivery de uma operação submit_sm para solicitar um Recibo de Entrega MC.
Bit 1 | Bit 0 | Significado |
---|---|---|
0 | 0 | nenhum recibo |
0 | 1 | recibo solicitado quando o resultado final é sucesso ou falha na entrega |
1 | 0 | recibo solicitado quando o resultado final é falha na entrega |
1 | 1 | recibo solicitado quando o resultado final é sucesso na entrega (apenas SMPP v5) |
MC-para-ESME: O bit 2 no campo esm_class de um deliver_sm indica que o recibo é um Recibo de Entrega MC.
Uma notificação intermediária é uma forma especial de mensagem que o MC pode enviar a um ESME para uma entrega de mensagem móvel terminada. Ela fornece um status intermediário de uma tentativa de entrega de mensagem.
Os usos típicos são relatar o resultado de tentativas de entrega feitas durante o tempo de vida de retentativa da mensagem dentro do MC. Isso pode ser usado para rastrear os vários motivos pelos quais uma mensagem não é entregue ao seu destino e usar isso para perfilar a disponibilidade do assinante.
O suporte à funcionalidade de Notificação Intermediária é específico à implementação do MC e ao Provedor de Serviços MC e está além do escopo desta especificação.
ESME-para-MC: Defina o bit 4 no campo registered_delivery de um PDU submit_sm para solicitar uma Notificação Intermediária.
MC-para-ESME: O bit 5 no campo esm_class de um deliver_sm indica que o recibo é uma Notificação Intermediária.
Recibo no campo short_message
Recibo no campo short_message
Muitas APIs anteriores à v3.4 e Centros de Mensagens que suportam a v3.3 provavelmente têm um meio de passar informações de recibo dentro do campo short_message. Isso se aplica a Recibos de Entrega do MC e Notificações Intermediárias. Os detalhes de formato dessas informações são específicos do gateway SMS e da plataforma SMSC e estão além do escopo da especificação. No entanto, o seguinte mostra a abordagem normalmente adotada:
id:123A456B sub:1 dlvrd:1 submit date:1702281424 done date:1702281424 stat:DELIVRD err:0 text:
Os campos são especificados da seguinte forma:
Campo | Tamanho (octetos) | Descrição |
---|---|---|
id | Variável | O ID da mensagem atribuído à mensagem pelo SMSC quando originalmente enviada. |
sub | 3 | Número de mensagens curtas originalmente enviadas. O valor pode ser preenchido com zeros à esquerda. |
dlvrd | 3 | Número de mensagens curtas entregues. O valor pode ser preenchido com zeros à esquerda. |
submit date
|
10 |
A hora e data em que a mensagem curta foi enviada. No caso de uma mensagem que foi substituída, esta é a data em que a mensagem original foi substituída. O formato é o seguinte: YYMMDDhhmm onde: |
done date
|
10 | A hora e data em que a mensagem curta atingiu seu estado final. O formato é o mesmo que para a data de envio. |
stat | 7 | O estado final da mensagem. Consulte Estados da mensagem abaixo. O texto do estado pode ser abreviado. |
err | 3 | Um código de erro da rede ou SMSC para a mensagem. Consulte Códigos de erro abaixo. |
text | 20 | Campo não utilizado, o resultado será em branco. |
Como implementamos um número muito grande de conexões SMPP, encontramos os seguintes problemas em várias implementações:
Descoberta 1:O valor do campo ID no relatório de entrega (que chamamos de Referência de Envio no Ozeki) geralmente é diferente do ID que recebemos do provedor de serviços de SMS. A diferença mais comum é que o ID original é retornado como um número inteiro padrão e o ID no relatório de entrega é retornado como um número hexadecimal. Isso também pode acontecer ao contrário. A boa notícia é que, nessa situação, quando convertidos de volta, os dois números coincidem, então os relatórios de entrega podem ser correspondidos. As implementações de SMS do Ozeki realizam várias verificações e podem lidar com a situação descrita corretamente.
Descoberta 2:O valor dos campos de data geralmente vem em formato não padrão. O Ozeki atualmente analisa os campos de data usando os seguintes padrões. Você também pode definir um padrão personalizado para o campo de data no formulário de configuração do software.
- "yyMMddHHmm",
- "yyMMddHHmmss",
- "dd-MMM-yyHH:mm",
- "dd-MMM-yyHH:mm:ss",
- "dd-MMM-yy HH:mm",
- "dd-MMM-yy HH:mm:ss",
- "yyyyMMddHHmmss",
- "yyyyMMddHHmm",
- personalizado
Estados da mensagem
A seguir está uma lista de estados permitidos para uma mensagem curta. O MC retorna o valor message_state para o ESME como parte do PDU query_sm_resp, query_broadcast_sm_resp ou deliver_sm delivery receipt.
Estados intermediários são estados que podem mudar. Estados finais são estados que representam um estado de fim de vida para uma mensagem.
Por exemplo, uma mensagem em retentativa pode retornar um estado ENROUTE. Em algum momento no futuro, esta mensagem irá expirar ou ser entregue. O estado então progredirá para EXPIRED ou DELIVERED. Assim, uma mensagem no estado ENROUTE é considerada em um estado intermediário.
Uma mensagem no estado DELIVERED ou EXPIRED não pode progredir para outro estado. Esses estados são, portanto, estados finais.
Estado da Mensagem | Valor | Tipo |
---|---|---|
SCHEDULED | 0 | Intermediário |
A mensagem está agendada. A entrega ainda não foi iniciada. Uma mensagem enviada com um horário de entrega agendado pode retornar este estado quando consultada. Este valor foi adicionado para SMPP v5.0. MCs que suportam versões anteriores do SMPP v3.3 e SMPP v3.4 provavelmente retornarão ENROUTE para mensagens agendadas. | ||
ENROUTE ou EN_ROUTE |
1 | Intermediário |
A mensagem está no estado enroute. Este é um estado geral usado para descrever uma mensagem como ativa dentro do MC. A mensagem pode estar em retentativa ou despachada para uma rede móvel para entrega ao móvel. | ||
DELIVERED | 2 | Final |
Mensagem entregue ao destino. A mensagem foi entregue ao destino. Nenhuma entrega adicional ocorrerá. | ||
EXPIRED | 3 | Final |
Período de validade da mensagem expirou. A mensagem não foi entregue dentro do seu período de validade e/ou período de retentativa. Nenhuma tentativa adicional de entrega será feita. | ||
DELETED | 4 | Final |
Mensagem foi deletada. A mensagem foi cancelada ou excluída do MC. Nenhuma tentativa adicional de entrega ocorrerá. | ||
UNDELIVERABLE | 5 | Final |
Mensagem não entregável. A mensagem encontrou um erro de entrega e é considerada permanentemente não entregável. Nenhuma tentativa adicional de entrega será feita. Certos erros de rede ou internos do MC resultam na não entrega permanente de uma mensagem. Exemplos de tais erros seriam um assinante desconhecido ou erro de rede que indicou que o móvel de destino foi negado ao serviço SMS ou não pode suportar SMS. |
Os códigos de erro retornados em recibos de entrega são usados para indicar qualquer situação de erro encontrada ao tentar entregar uma mensagem. Os códigos de erro são específicos do gateway SMS e da plataforma SMSC. No entanto, o seguinte mostra uma abordagem frequentemente adotada:
Código Significado 1 Número MT é desconhecido no HLR da rede MT 2 Número MT é desconhecido no HLR da rede MT 5 Número MT é desconhecido no MSC da rede MT 9 Número MT é classificado como assinante ilegal no MSC da rede MT 11 HLR MT retorna um erro “Teleservice not provisioned” em resposta ao SRI 12 Aparelho MT está listado como dispositivo ilegal no MSC. 13 Cliente está barrado de acordo com o HLR MT para receber SMS 15 Cliente MT faz parte de um CUG que não tem permissão para receber SMS 21 SMS não suportado na rede MT. 22 SMS não suportado no MSC MT 31 Aparelho MT está ocupado. O canal de controle de sinalização está em uso. (Provavelmente recebendo outro SMS ao mesmo tempo) 32 GPRS – Como acima 34 Falha de sistema na rede MT. 35 Dados faltando no HLR ou MSC MT 36 Valor de dados inesperado recebido em resposta a um FSM ou SRI 40 Capacidade de memória excedida no aparelho MT 41 Erro de protocolo no aparelho MT 42 Aparelho MT não está equipado para suportar SMS 43 Tipo de mensagem curta “0” não suportado pelo aparelho MT. 44 Rede MT incapaz de substituir o SMS no aparelho do cliente MT 45 Erro de protocolo não especificado no aparelho MT 46 Classe de mensagem não suportada no aparelho MT 47 Erro DCS (Esquema de codificação de dados) não especificado no aparelho MT 48 PDU da camada de transferência não suportado pelo aparelho MT 49 Cartão SIM cheio no aparelho MT 50 SIM do aparelho MT não consegue armazenar a mensagem 51 Erro no aparelho MT 52 Capacidade de memória excedida no aparelho MT 53 SIM application toolkit ocupado no aparelho MS 54 Erro de download de dados no SIM do cliente MT 55 Erro não especificado no aparelho MS 60 Assinante ausente. Razão desconhecida 61 Assinante ausente devido ao telefone estar desligado 62 Assinante ausente devido ao telefone fora de cobertura/bateria fraca 63 Assinante ausente devido a restrição de roaming/área restrita 64 Assinante ausente devido a estar desregistrado no HLR 65 Assinante ausente devido a ser purgado no VLR (desligado por 24+ horas) 66 Assinante ausente (GPRS) não pode ser paginado pelo SGSN 67 Assinante ausente devido a GPRS desanexado 68 Assinante ausente devido a desregistro no HLR (GPRS) 69 Assinante ausente devido a MS GPRS purgado no VLR 70 Assinante ausente devido a assinante não identificado no MSC para o qual o FSM foi enviado. 71 Assinante ausente devido a assinante não identificado no SGSNComo testar relatórios de entrega SMPP
Você pode criar uma configuração de simulador SMPP, para testar relatórios de entrega de SMS. No simulador, a conexão de teste pode retornar relatórios de entrega bem-sucedida e falha. Ele fará isso se você configurar "Solicitação de relatório de entrega" na página "Avançado" do formulário de configuração da conexão de teste SMPP. Se você tiver esta opção habilitada, um relatório de entrega será retornado para cada SMS enviado em uma data aleatória posterior com um status aleatório de entrega bem-sucedida ou falha.
Perguntas frequentesO que é um relatório de entrega?
Ao enviar uma mensagem SMS, a confirmação de sua chegada ao telefone do destinatário
é crucial. O SMS utiliza um sistema de confirmação em duas etapas para garantir isso.
Ao enviar sua mensagem para o Centro de Serviço de Mensagens Curtas (SMSC) da rede móvel,
você recebe um "relatório de submissão de mensagem". Esse relatório indica que
o SMSC aceitou sua mensagem para entrega. Ele também inclui um identificador único,
frequentemente chamado de "referência da mensagem" ou "ID de retorno", que
permite rastrear a mensagem dentro do sistema do SMSC.
Após a aceitação, a mensagem é armazenada no SMSC até que a entrega se torne
possível. Isso pode ser atrasado se o telefone do destinatário estiver desligado,
potencialmente estendendo a espera por dias.
Quando o telefone do destinatário estiver disponível, a mensagem é entregue. Após
a entrega bem-sucedida, um "relatório de entrega" é enviado de volta ao remetente como uma
mensagem SMS separada.
Essa confirmação por SMS contém:
- Número de telefone do destinatário: Verifica se o destinatário pretendido recebeu a mensagem.
- Referência da mensagem (ID de retorno): Corresponde ao identificador do relatório de submissão original, fornecendo um vínculo claro entre as duas etapas.
- Carimbo de data/hora da entrega: Fornece o horário exato em que a mensagem chegou ao telefone do destinatário.
Embora o SMS seja uma forma conveniente de comunicação, garantir que uma mensagem
chegue ao destinatário rapidamente é crucial. É aqui que entra o conceito do
"período de validade".
O período de validade refere-se ao tempo em que uma mensagem SMS fica armazenada no
Centro de Serviço de Mensagens Curtas (SMSC) quando o telefone do destinatário está indisponível.
Se a mensagem não for entregue após esse período, ela é automaticamente
excluída do SMSC, evitando uma entrega tardia.
Benefícios de Utilizar o Período de Validade:
- Mensagens Sensíveis ao Tempo: Imagine enviar um texto sobre um evento com prazo, como um programa de TV ao vivo. Definir um período de validade adequado garante que a mensagem não seja entregue após o término do evento, tornando-a irrelevante.
- Eficiência da Rede: Ao evitar tentativas desnecessárias de entrega a telefones indisponíveis, o período de validade otimiza os recursos da rede.
É importante lembrar que nem todas as redes móveis permitem períodos de validade configuráveis pelo usuário, e algumas podem exigir ativação pelo usuário para relatórios de entrega (confirmação de que a mensagem chegou ao destinatário).
More information
- Especificação SMPP
- Comparação de versões do protocolo SMPP
- Registro de PDU SMPP
- Como usar a API SMPP com linguagens de programação
- Conexão SMPP segura sobre SSL TLS
- Formato de relatório de entrega SMPP
- O que é um simulador SMPP
- Códigos de erro SMPP
- Como enviar uma mensagem SMS teste SMPP
- Decodificar PDU SMPP
- Codificação de caracteres SMPP
- SMPP wireshark