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) |
-
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.
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).