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).
More information
- Como configurar o campo Tipo de serviço SMPP
- Como configurar os campos de número de telefone SMPP
- Como configurar o campo Classe ESM do SMPP
- Como configurar o campo PID do SMPP
- Como configurar o campo de prioridade do SMPP
- Como configurar o campo de tempo agendado do SMPP
- Como configurar o campo de período de validade do SMPP
- Como configurar o campo de entrega registrada do SMPP
- Como configurar o campo Substituir se presente do SMPP
- Como configurar o campo sm_default_msg_id
- Como configurar o campo DCS do SMPP
- Como calcular o campo de comprimento SM do SMPP
- Como inserir dados no campo SM SMPP