Como configurar o campo Registered Delivery no SMPP

O que é o campo Registered Delivery?

O campo Registered Delivery no SMPP é uma máscara de bits de 1 byte em PDUs como submit_sm e data_sm que controla recibos de entrega e confirmações. Ele permite que remetentes acompanhem o status de entrega de mensagens por meio de recibos gerados pelo SMSC. As principais funções incluem:

  • Solicitar recibos de entrega final (sucesso/falha)
  • Habilitar notificações intermediárias de entrega
  • Gerenciar confirmações de SME (Entidade de Mensagem Curta)

Estrutura do campo e máscara de bits

Definido no SMPP v3.4, o campo usa a seguinte estrutura de máscara de bits:

Bit Descrição
0 Recibo de entrega do SMSC (0 = desativado, 1 = ativado)
1 Confirmação de SME originada (0 = desativado, 1 = ativado)
2 Notificação intermediária (0 = desativado, 1 = ativado)
3-7 Reservado
Observação: Muitos SMSCs suportam apenas o bit 0 (recibos do SMSC). Confirme as capacidades com seu provedor.

Valores comuns

Valor (Hex) Binário Descrição
0x00 00000000 Nenhum recibo solicitado
0x01 00000001 Apenas recibo de entrega do SMSC
0x03 00000011 Recibo do SMSC + confirmação de SME
0x05 00000101 Recibo do SMSC + notificações intermediárias

Casos de uso

1. Recibos de entrega básicos

registered_delivery: 0x01  // Solicitar status de entrega final
    

2. Mensagens de alta confiabilidade

registered_delivery: 0x05  // Recibo + notificações intermediárias
    

3. Comunicação bidirecional

registered_delivery: 0x03  // Confirmar entrega no SMSC e SME
    

Exemplos de PDUs SMPP

Exemplo 1: Sem recibos (0x00)

0000001D  // Comprimento do comando (29 bytes)
00000004  // ID do comando (SubmitSM)
00000001  // Número de sequência
00        // TON de origem
00        // NPI de origem
736F7572636500  // Endereço de origem ("source")
00        // TON de destino
00        // NPI de destino
36353433323100  // Endereço de destino ("654321")
00        // Classe ESM
00        // ID do protocolo
00        // Flag de prioridade
00        // Horário de agendamento de entrega
00        // Período de validade
00        // Registered Delivery (0x00: Sem recibos)
00        // Replace-if-Present
00        // Codificação de dados (DCS=0x00)
00        // ID padrão da mensagem SM
07        // Comprimento SM (7 septets)
C8329BFD06DDDF72  // Conteúdo ("Hello!")
    

Exemplo 2: Recibo de entrega do SMSC (0x01)

0000001D  // Comprimento do comando (29 bytes)
00000004  // ID do comando (SubmitSM)
00000002  // Número de sequência
...
00        // Período de validade
01        // Registered Delivery (0x01: Recibo do SMSC)
00        // Replace-if-Present
...
    

Exemplo 3: Notificações intermediárias (0x05)

0000001D  // Comprimento do comando (29 bytes)
00000004  // ID do comando (SubmitSM)
00000003  // Número de sequência
...
05        // Registered Delivery (0x05: Recibo do SMSC + intermediários)
...
    

Formato do recibo de entrega

SMSCs retornam recibos via PDUs deliver_sm com um conteúdo formatado como:

id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:STATUS err:EEE
    

Exemplo de recibo para uma mensagem entregue:

id:1896384752 sub:001 dlvrd:001 submit date:2310151430 done date:2310151431 stat:DELIVRD err:000
    

Interações com outros campos

  • esm_class: O bit 6 (flag de recibo de entrega) deve estar alinhado com as configurações de registered_delivery
  • validity_period: Determina por quanto tempo o SMSC tentará entregar antes de enviar um recibo de falha
  • message_id: Crítico para correlacionar recibos com mensagens originais

Armadilhas comuns

  • Habilitar recibos, mas não escutar PDUs deliver_sm
  • Assumir que todos os SMSCs suportam confirmações de SME (0x02)
  • Incompatibilidade entre flags registered_delivery e esm_class
  • Ignorar limites de taxa do SMSC para geração de recibos
Observação sobre cobrança:
Alguns provedores cobram extra por recibos de entrega. Confirme os preços antes de habilitar.

Conclusão

O campo Registered Delivery é essencial para rastrear o status de entrega de SMS no SMPP. Embora o tratamento básico de recibos (0x01) seja amplamente suportado, recursos avançados como notificações intermediárias exigem testes específicos com o SMSC. Sempre implemente análise robusta de recibos e correlacione mensagens usando message_id. Para comportamento detalhado, consulte a Seção 5.2.17 do SMPP v3.4 e a documentação do seu provedor.

More information