Como configurar o campo Scheduled Delivery Time no SMPP

O que é o campo Scheduled Delivery Time?

O campo Scheduled Delivery Time no SMPP (Short Message Peer-to-Peer Protocol) é um parâmetro opcional no PDU submit_sm que permite enfileirar uma mensagem para entrega em uma data e hora futuras. Este campo é crítico para:

  • Atrasar a entrega de mensagens para horários fora de pico
  • Agendar campanhas sensíveis ao tempo (ex.: mensagens de aniversário)
  • Coordenar mensagens em diferentes fusos horários

Formato e estrutura do campo

A especificação SMPP v3.4 define este campo como uma C-Octet String (terminada em nulo) com um formato específico de data-hora:

YYMMDDhhmmssnnp

Onde:

Componente Descrição Intervalo
YY Últimos dois dígitos do ano 00-99
MM Mês 01-12
DD Dia 01-31
hh Hora (formato 24h) 00-23
mm Minuto 00-59
ss Segundo 00-59
nn Décimos de segundo (opcional) 00-99
p Offset de fuso horário (ex.: +, -) +/- seguido de 4 dígitos (HHMM)
Valores especiais:
- NULL (entrega imediata)
- 000000000000000 (entrega imediata, sistemas legados)

Exemplos de strings de tempo

String de tempo Interpretação
231015143000000+ 15 de Out, 2023 14:30:00 UTC+0
231015143000000-0800 15 de Out, 2023 14:30:00 UTC-08:00
000000000000000 Entrega imediata (legado)
NULL Entrega imediata (recomendado)

Casos de uso

1. Mensagens de aniversário

Agende uma mensagem para entrega exatamente à meia-noite no aniversário do destinatário:

scheduled_delivery_time: "231016000000000+"
// 16 de Out, 2023 00:00:00 UTC+0

2. Entrega fora de pico

Evite congestionamento na rede enviando mensagens em massa à noite:

scheduled_delivery_time: "231015020000000+"
// 15 de Out, 2023 02:00:00 UTC+0

3. Coordenação de fuso horário

Entregue mensagens às 9h no horário local para destinatários em Nova York (UTC-5):

scheduled_delivery_time: "231015090000000-0500"
// 15 de Out, 2023 09:00:00 UTC-05:00

Exemplos de PDUs SMPP

Exemplo 1: Entrega imediata (NULL)

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        // Scheduled Delivery Time (NULL: imediato)
00        // Período de validade
00        // Entrega registrada
00        // Substituir-se-presente
00        // Codificação de dados (DCS=0x00)
00        // ID padrão da mensagem SM
07        // Comprimento SM (7 septets)
C8329BFD06DDDF72  // Conteúdo ("Olá!")

Exemplo 2: Entrega futura (15 de Out, 2023 14:30 UTC)

0000002A  // Comprimento do comando (42 bytes)
00000004  // ID do comando (SubmitSM)
00000002  // 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
3233313031353134333030303030302B00  // "231015143000000+" (16 bytes + nulo)
00        // Período de validade
00        // Entrega registrada
00        // Substituir-se-presente
00        // Codificação de dados (DCS=0x00)
00        // ID padrão da mensagem SM
07        // Comprimento SM (7 septets)
C8329BFD06DDDF72  // Conteúdo ("Olá!")

Interações com outros campos

  • validity_period: Define por quanto tempo o SMSC tentará a entrega. Começa a contar a partir do tempo agendado.
  • priority_flag: Mensagens com prioridade mais alta podem ignorar filas de agendamento em alguns SMSCs.

Armadilhas comuns

  • Usar horário local sem especificar o offset de fuso horário.
  • Formatar incorretamente a string de data (ex.: mês inválido "13").
  • Assumir que todos os SMSCs suportam entrega agendada (verifique com o provedor).
  • Definir um horário no passado, causando entrega imediata.
Nota sobre comportamento do SMSC:
Alguns SMSCs ignoram frações de segundo (nn) ou restringem o quão longe no futuro mensagens podem ser agendadas (ex.: máximo 7 dias).

Conclusão

O campo Scheduled Delivery Time permite controle preciso sobre quando mensagens SMS são entregues. O uso adequado requer formatação cuidadosa das strings de tempo e coordenação com as capacidades do SMSC. Sempre teste mensagens agendadas com seu provedor e consulte a especificação SMPP v3.4 para casos extremos (ex.: anos bissextos, transições de fuso horário).

More information