Cómo configurar el campo Período de Validez en SMPP

¿Qué es el campo Período de Validez?

El Período de Validez en SMPP (Protocolo Short Message Peer-to-Peer) es un campo de cadena terminada en nulo en PDUs como submit_sm que define cuánto tiempo intentará un SMSC entregar un mensaje antes de descartarlo. Este campo es crítico para:

  • Evitar reintentos indefinidos para mensajes no entregables
  • Gestionar recursos de almacenamiento del SMSC
  • Manejar contenido sensible al tiempo (ej. OTPs, promociones)

Formato y estructura del campo

El período de validez utiliza el mismo formato de tiempo absoluto que el tiempo de entrega programado (especificación SMPP v3.4):

YYMMDDhhmmssnnp

Donde los componentes coinciden con el formato de tiempo de entrega programado. También se admiten atajos de formato relativo:

Formato Ejemplo Descripción
Absoluto 231215235959000+ 15 dic 2023 23:59:59 UTC+0
Relativo 000003000000000R 3 días desde el momento de envío
Valores especiales:
- NULL: Usa el período de validez predeterminado del SMSC (típicamente 24-72 horas)
- 00: Validez predeterminada del SMSC (sistemas heredados)

Formatos clave de período de validez

1. Formato de tiempo absoluto

YYMMDDhhmmssnnp // Formato completo
231215143000000+  // 15 dic 2023 14:30:00 UTC+0

2. Formato de tiempo relativo

00000X000000000R // X = Días (00-99)
000003000000000R  // 3 días de validez

Casos de uso

1. Expiración de OTP (Validez corta)

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

2. Campaña promocional (Validez extendida)

validity_period: "000007000000000R" // 7 días de validez

3. Expiración a medianoche (Tiempo absoluto)

validity_period: "231215235959000+" // Expira 15 dic 2023 23:59:59 UTC+0

Ejemplos de PDUs SMPP

Ejemplo 1: Validez de 24 horas (Formato relativo)

0000001D  // Longitud del comando (29 bytes)
00000004  // ID del comando (SubmitSM)
00000001  // Número de secuencia
...
00        // Bandera de prioridad
00        // Tiempo de entrega programado
303030303234303030303030305200  // "00002400000000R" (24 horas)
00        // Entrega registrada
...

Ejemplo 2: Tiempo de expiración absoluto

0000002A  // Longitud del comando (42 bytes)
00000004  // ID del comando (SubmitSM)
00000002  // Número de secuencia
...
00        // Tiempo de entrega programado
3233313231323332353935393030302B00  // "231212235959000+" (12 dic 2023 23:59:59 UTC+0)
...

Interacciones con otros campos

  • scheduled_delivery_time: La cuenta regresiva del período de validez comienza desde el tiempo programado si está establecido
  • priority_flag: Los mensajes de alta prioridad pueden anular la configuración del período de validez en algunos SMSC
  • registered_delivery: Los recibos de entrega se envían incluso después de la expiración del período de validez

Errores comunes

  • Usar formato relativo sin el sufijo 'R'
  • Establecer períodos de validez más largos que los límites del SMSC (ej. máximo 30 días)
  • Inconsistencias en zonas horarias entre el tiempo programado y el período de validez
  • Asumir que todos los SMSC admiten formato relativo (verificar con el proveedor)
Nota sobre el comportamiento del SMSC:
Muchos SMSC convierten períodos relativos a marcas de tiempo absolutas al recibir el mensaje. La cuenta regresiva continúa incluso si el SMSC se reinicia.

Período de validez vs. valores predeterminados del SMSC

Valor del período de validez Comportamiento del SMSC
NULL o 00 Usa el valor predeterminado del SMSC (varía por proveedor)
Valor explícito Respeta el valor (dentro de los límites del SMSC)
Marca de tiempo pasada El mensaje se descarta inmediatamente

Conclusión

El campo Período de Validez es esencial para controlar el ciclo de vida del mensaje en SMPP. Mientras que las marcas de tiempo absolutas ofrecen precisión, los formatos relativos brindan simplicidad para casos de uso comunes. Siempre coordine la configuración de validez con las políticas del SMSC y pruebe casos extremos (ej. transiciones de horario de verano). Para implementaciones detalladas, consulte la Sección 5.2.18 de SMPP v3.4 y la documentación de GSM 03.40.

More information