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 SMPP

Um 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 entrega
Relató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

  1. Conecte o cliente SMPP
  2. Faça o bind como transceiver
  3. Envie o SMS usando o PDU submit_sm
  4. Registre o ID do SMS da resposta submit_sm_resp
  5. Aguarde o SMS chegar ao celular
  6. Receba o PDU do relatório de entrega do SMS
  7. Relacione o ID do SMS à mensagem enviada
  8. Registre o horário de entrega do SMS
Parâmetros do relatório de entrega SMPP

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.
Recibo de Entrega MC

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 1Bit 0Significado
00nenhum recibo
01recibo solicitado quando o resultado final é sucesso ou falha na entrega
10recibo solicitado quando o resultado final é falha na entrega
11recibo 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.

Notificação Intermediária

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

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:
YY últimos dois dígitos do ano (00-99) MM = mês (01-12)
DD dia (01-31)
hh hora (00-23)
mm minuto (00-59)

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.
Melhorias do Ozeki SMPP

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.
Códigos de Erro de Recebimento de Entrega SMPP

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 SGSN
Como 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 frequentes

O 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.
É importante notar que "relatório de entrega" geralmente se refere a essa confirmação por SMS recebida pelo remetente. Nem todas as redes móveis oferecem relatórios de entrega, e algumas exigem ativação pelo usuário.

Posso ajustar por quanto tempo uma mensagem fica armazenada no SMSC?

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.
Embora algumas redes móveis ofereçam a opção de definir diretamente o período de validade para mensagens enviadas, a configuração padrão geralmente é o máximo da rede (normalmente uma semana). Esse valor pode ser ajustado pelas opções de menu do telefone.

É 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