Cómo configurar el campo Registered Delivery en SMPP

¿Qué es el campo Registered Delivery?

El campo Registered Delivery en SMPP es una máscara de bits de 1 byte en PDUs como submit_sm y data_sm que controla los acuses de recibo y notificaciones de entrega. Permite a los remitentes rastrear el estado de entrega de los mensajes a través de recibos generados por el SMSC. Sus funciones principales incluyen:

  • Solicitar acuses de recibo de entrega final (éxito/fallo)
  • Habilitar notificaciones intermedias de entrega
  • Gestionar acuses de recibo de SME (Entidad de Mensaje Corto)

Estructura del campo y máscara de bits

Definido en SMPP v3.4, el campo utiliza la siguiente estructura de máscara de bits:

Bit Descripción
0 Acuse de recibo del SMSC (0 = desactivado, 1 = activado)
1 Acuse de recibo originado por SME (0 = desactivado, 1 = activado)
2 Notificación intermedia (0 = desactivado, 1 = activado)
3-7 Reservados
Nota: Muchos SMSCs solo admiten el bit 0 (acuses de recibo del SMSC). Confirma las capacidades con tu proveedor.

Valores comunes

Valor (Hex) Binario Descripción
0x00 00000000 No se solicitan acuses de recibo
0x01 00000001 Solo acuse de recibo del SMSC
0x03 00000011 Acuse de recibo del SMSC + acuse de recibo de SME
0x05 00000101 Acuse de recibo del SMSC + notificaciones intermedias

Casos de uso

1. Acuses de recibo básicos

registered_delivery: 0x01  // Solicitar estado de entrega final
    

2. Mensajería de alta fiabilidad

registered_delivery: 0x05  // Acuse de recibo + notificaciones intermedias
    

3. Comunicación bidireccional

registered_delivery: 0x03  // Confirmar entrega tanto en SMSC como en SME
    

Ejemplos de PDUs SMPP

Ejemplo 1: Sin acuses de recibo (0x00)

0000001D  // Longitud del comando (29 bytes)
00000004  // ID del 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        // Indicador de prioridad
00        // Tiempo de entrega programada
00        // Período de validez
00        // Registered Delivery (0x00: Sin acuses de recibo)
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 ("Hello!")
    

Ejemplo 2: Acuse de recibo del SMSC (0x01)

0000001D  // Longitud del comando (29 bytes)
00000004  // ID del comando (SubmitSM)
00000002  // Número de secuencia
...
00        // Período de validez
01        // Registered Delivery (0x01: Acuse de recibo del SMSC)
00        // Reemplazar-si-presente
...
    

Ejemplo 3: Notificaciones intermedias (0x05)

0000001D  // Longitud del comando (29 bytes)
00000004  // ID del comando (SubmitSM)
00000003  // Número de secuencia
...
05        // Registered Delivery (0x05: Acuse de recibo del SMSC + notificaciones intermedias)
...
    

Formato de acuse de recibo de entrega

Los SMSCs devuelven acuses de recibo mediante PDUs deliver_sm con una carga útil con el formato:

id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:STATUS err:EEE
    

Ejemplo de acuse de recibo para un mensaje entregado:

id:1896384752 sub:001 dlvrd:001 submit date:2310151430 done date:2310151431 stat:DELIVRD err:000
    

Interacciones con otros campos

  • esm_class: El bit 6 (indicador de acuse de recibo) debe alinearse con la configuración de registered_delivery
  • validity_period: Determina cuánto tiempo intentará el SMSC la entrega antes de enviar un acuse de recibo de fallo
  • message_id: Crítico para correlacionar acuses de recibo con mensajes originales

Errores comunes

  • Habilitar acuses de recibo pero no escuchar PDUs deliver_sm
  • Asumir que todos los SMSCs admiten acuses de recibo de SME (0x02)
  • Incompatibilidad entre los flags registered_delivery y esm_class
  • Ignorar los límites de tasa del SMSC para la generación de acuses de recibo
Nota de facturación:
Algunos proveedores cobran extra por los acuses de recibo. Confirma los precios antes de habilitarlos.

Conclusión

El campo Registered Delivery es esencial para rastrear el estado de entrega de SMS en SMPP. Mientras que el manejo básico de acuses de recibo (0x01) es ampliamente compatible, funciones avanzadas como notificaciones intermedias requieren pruebas específicas con el SMSC. Siempre implementa un análisis robusto de acuses de recibo y correlaciona mensajes usando message_id. Para un comportamiento detallado, consulta la Sección 5.2.17 de SMPP v3.4 y la documentación de tu proveedor.

More information