Cómo configurar el campo de Hora de Entrega Programada en SMPP

¿Qué es el campo de Hora de Entrega Programada?

El campo Hora de Entrega Programada en SMPP (Protocolo de Mensajes Cortos entre Pares) es un parámetro opcional en la PDU submit_sm que permite encolar un mensaje para su entrega en una fecha y hora futuras. Este campo es crítico para:

  • Retrasar la entrega de mensajes a horas de baja demanda
  • Programar campañas sensibles al tiempo (ej. mensajes de cumpleaños)
  • Coordinar mensajes entre zonas horarias

Formato y Estructura del Campo

La especificación SMPP v3.4 define este campo como una Cadena C-Octeto (terminada en nulo) con un formato específico de fecha y hora:

AAMMDDhhmmssnnp

Donde:

Componente Descripción Rango
AA Últimos dos dígitos del año 00-99
MM Mes 01-12
DD Día 01-31
hh Hora (formato 24h) 00-23
mm Minutos 00-59
ss Segundos 00-59
nn Décimas de segundo (opcional) 00-99
p Desplazamiento de zona horaria (ej. +, -) +/- seguido de 4 dígitos (HHMM)
Valores Especiales:
- NULL (entrega inmediata)
- 000000000000000 (entrega inmediata, sistemas heredados)

Ejemplos de Cadenas de Tiempo

Cadena de Tiempo Interpretación
231015143000000+ 15 Oct 2023 14:30:00 UTC+0
231015143000000-0800 15 Oct 2023 14:30:00 UTC-08:00
000000000000000 Entrega inmediata (heredado)
NULL Entrega inmediata (recomendado)

Casos de Uso

1. Mensajes de Cumpleaños

Programar un mensaje para entregar exactamente a medianoche en el cumpleaños del destinatario:

scheduled_delivery_time: "231016000000000+"
// 16 Oct 2023 00:00:00 UTC+0
    

2. Entrega en Horas de Baja Demanda

Evitar congestión de red enviando mensajes masivos de noche:

scheduled_delivery_time: "231015020000000+"
// 15 Oct 2023 02:00:00 UTC+0
    

3. Coordinación de Zonas Horarias

Entregar mensajes a las 9 AM hora local para destinatarios en Nueva York (UTC-5):

scheduled_delivery_time: "231015090000000-0500"
// 15 Oct 2023 09:00:00 UTC-05:00
    

Ejemplos de PDUs SMPP

Ejemplo 1: Entrega Inmediata (NULL)

0000001D  // Longitud de Comando (29 bytes)
00000004  // ID de Comando (SubmitSM)
00000001  // Número de Secuencia
00        // TON de Origen
00        // NPI de Origen
736F7572636500  // Dirección de Origen ("source")
00        // TON de Destino
00        // NPI de Destino
36353433323100  // Dirección de Destino ("654321")
00        // Clase ESM
00        // ID de Protocolo
00        // Bandera de Prioridad
00        // Hora de Entrega Programada (NULL: inmediata)
00        // Período de Validez
00        // Entrega Registrada
00        // Reemplazar-si-Presente
00        // Codificación de Datos (DCS=0x00)
00        // ID de Mensaje Predeterminado SM
07        // Longitud SM (7 septetos)
C8329BFD06DDDF72  // Carga útil ("¡Hola!")
    

Ejemplo 2: Entrega Futura (15 Oct 2023 14:30 UTC)

0000002A  // Longitud de Comando (42 bytes)
00000004  // ID de Comando (SubmitSM)
00000002  // Número de Secuencia
00        // TON de Origen
00        // NPI de Origen
736F7572636500  // Dirección de Origen ("source")
00        // TON de Destino
00        // NPI de Destino
36353433323100  // Dirección de Destino ("654321")
00        // Clase ESM
00        // ID de Protocolo
00        // Bandera de Prioridad
3233313031353134333030303030302B00  // "231015143000000+" (16 bytes + nulo)
00        // Período de Validez
00        // Entrega Registrada
00        // Reemplazar-si-Presente
00        // Codificación de Datos (DCS=0x00)
00        // ID de Mensaje Predeterminado SM
07        // Longitud SM (7 septetos)
C8329BFD06DDDF72  // Carga útil ("¡Hola!")
    

Interacciones con Otros Campos

  • validity_period: Define cuánto tiempo el SMSC intentará la entrega. Comienza a contar desde la hora programada.
  • priority_flag: Mensajes de mayor prioridad pueden saltar colas de programación en algunos SMSCs.

Errores Comunes

  • Usar hora local sin especificar el desplazamiento de zona horaria.
  • Formatear incorrectamente la cadena de fecha (ej. mes inválido "13").
  • Asumir que todos los SMSCs soportan entrega programada (verificar con el proveedor).
  • Establecer una hora en el pasado, causando entrega inmediata.
Nota sobre Comportamiento del SMSC:
Algunos SMSCs ignoran las décimas de segundo (nn) o restringen qué tan adelante se pueden programar mensajes (ej. máximo 7 días).

Conclusión

El campo Hora de Entrega Programada permite control preciso sobre cuándo se entregan los mensajes SMS. Su uso correcto requiere un formateo cuidadoso de las cadenas de tiempo y coordinación con las capacidades del SMSC. Siempre pruebe mensajes programados con su proveedor y consulte la especificación SMPP v3.4 para casos especiales (ej. años bisiestos, transiciones de zona horaria).

More information