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 |
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_deliveryeesm_class - Ignorar limites de taxa do SMSC para geração de recibos
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.