Como configurar o campo Período de Validade no SMPP

O que é o Campo Período de Validade?

O Período de Validade no SMPP (Short Message Peer-to-Peer Protocol) é um campo de string terminado em nulo em PDUs como submit_sm que define por quanto tempo um SMSC tentará entregar uma mensagem antes de descartá-la. Este campo é crítico para:

  • Evitar tentativas indefinidas para mensagens não entregáveis
  • Gerenciar recursos de armazenamento do SMSC
  • Lidar com conteúdo sensível ao tempo (ex: OTPs, promoções)

Formato e Estrutura do Campo

O período de validade utiliza o mesmo formato de tempo absoluto que o tempo de entrega agendado (especificação SMPP v3.4):

YYMMDDhhmmssnnp

Onde os componentes correspondem ao formato de tempo de entrega agendado. Atalhos de formato relativo também são suportados:

Formato Exemplo Descrição
Absoluto 231215235959000+ 15 de dezembro de 2023, 23:59:59 UTC+0
Relativo 000003000000000R 3 dias a partir do tempo de envio
Valores Especiais:
- NULL: Usa o período de validade padrão do SMSC (geralmente 24-72 horas)
- 00: Período de validade padrão do SMSC (sistemas legados)

Principais Formatos de Período de Validade

1. Formato de Tempo Absoluto

YYMMDDhhmmssnnp // Formato completo
231215143000000+  // 15 de dezembro de 2023, 14:30:00 UTC+0

2. Formato de Tempo Relativo

00000X000000000R // X = Dias (00-99)
000003000000000R  // 3 dias de validade

Casos de Uso

1. Expiração de OTP (Validade Curta)

validity_period: "000000010000000R" // 1 hora de validade
    

2. Campanha Promocional (Validade Estendida)

validity_period: "000007000000000R" // 7 dias de validade
    

3. Expiração à Meia-Noite (Tempo Absoluto)

validity_period: "231215235959000+" // Expira em 15 de dezembro de 2023, 23:59:59 UTC+0
    

Exemplos de PDUs SMPP

Exemplo 1: Validade de 24 Horas (Formato Relativo)

0000001D  // Comprimento do Comando (29 bytes)
00000004  // ID do Comando (SubmitSM)
00000001  // Número de Sequência
...
00        // Flag de Prioridade
00        // Tempo de Entrega Agendado
303030303234303030303030305200  // "00002400000000R" (24 horas)
00        // Entrega Registrada
...
    

Exemplo 2: Tempo de Expiração Absoluto

0000002A  // Comprimento do Comando (42 bytes)
00000004  // ID do Comando (SubmitSM)
00000002  // Número de Sequência
...
00        // Tempo de Entrega Agendado
3233313231323332353935393030302B00  // "231212235959000+" (12 de dezembro de 2023, 23:59:59 UTC+0)
...
    

Interações com Outros Campos

  • scheduled_delivery_time: A contagem regressiva do período de validade começa a partir do tempo agendado, se definido
  • priority_flag: Mensagens de alta prioridade podem substituir as configurações de período de validade em alguns SMSCs
  • registered_delivery: Recebimentos de entrega são enviados mesmo após a expiração do período de validade

Armadilhas Comuns

  • Usar formato relativo sem o sufixo 'R'
  • Definir períodos de validade maiores que os limites do SMSC (ex: máximo de 30 dias)
  • Incompatibilidade de fusos horários entre tempo agendado e período de validade
  • Assumir que todos os SMSCs suportam formato relativo (verifique com o provedor)
Nota sobre Comportamento do SMSC:
Muitos SMSCs convertem períodos relativos em timestamps absolutos ao receber a mensagem. A contagem regressiva continua mesmo se o SMSC reiniciar.

Período de Validade vs Padrões do SMSC

Valor do Período de Validade Comportamento do SMSC
NULL ou 00 Usa o padrão do SMSC (varia por provedor)
Valor explícito Respeita o valor (dentro dos limites do SMSC)
Timestamp no passado Mensagem descartada imediatamente

Conclusão

O campo Período de Validade é essencial para controlar o ciclo de vida da mensagem no SMPP. Enquanto timestamps absolutos fornecem precisão, formatos relativos oferecem simplicidade para casos de uso comuns. Sempre coordene as configurações de validade com as políticas do SMSC e teste casos extremos (ex: transições de horário de verão). Para implementações detalhadas, consulte a Seção 5.2.18 do SMPP v3.4 e a documentação do GSM 03.40.

More information