Cómo configurar el campo ESM Class de SMPP

Configuración de la clase ESM en Ozeki SMS Gateway

Ozeki SMS Gateway permite configurar manualmente el campo ESM class (Figura 1)

Figura 1 - Configuración del campo ESM class

¿Qué es el campo ESM Class?

La Clase de Mensaje de Servicio Extendido (ESM) en SMPP es un campo de 1 byte en las PDUs de SMPP que controla características avanzadas de manejo de mensajes. Se utiliza en las operaciones submit_sm, deliver_sm y data_sm para especificar:

  • Tipos de mensaje (ej. SMS, recibo de entrega)
  • Comportamiento del recibo de entrega
  • Presencia de UDH (Cabecera de Datos de Usuario)
  • Prioridad del mensaje y banderas de enrutamiento

Estructura y máscara de bits de ESM Class

La clase ESM es una máscara de bits donde cada bit o grupo de bits activa características específicas:

Bits Descripción
7 Modo de Mensajería: 0 = Predeterminado, 1 = Datagrama
6 Tipo de Mensaje: 0 = Normal, 1 = Recibo de entrega
5 Indicador UDHI: 1 = UDH presente en la carga útil
4 Ruta de respuesta: 1 = Ruta de respuesta solicitada
3-2 Prioridad del Mensaje (00 = Normal, 01 = Interactivo, 10 = Urgente, 11 = Emergencia)
1-0 Reservado

Valores comunes de ESM Class

ESM (Hex) Binario Descripción
0x00 00000000 Predeterminado (sin manejo especial)
0x04 00000100 Bandera UDHI activada (UDH presente)
0x08 00001000 Ruta de respuesta solicitada
0x20 00100000 Recibo de entrega (bit 6 = 1)
0x30 00110000 Prioridad urgente + recibo de entrega
0x60 01100000 Modo datagrama + recibo de entrega
Nota: Muchos SMSCs ignoran los bits reservados (1-0). Los niveles de prioridad (bits 3-2) dependen de la red.

Casos de uso clave

1. SMS concatenado (Bandera UDHI)

Al enviar mensajes multiparte, establezca el bit 5 (UDHI=1) e incluya una Cabecera de Datos de Usuario (UDH) en la carga útil. Ejemplo para un mensaje de 3 partes:

ESM Class: 0x40 (binario 01000000: UDHI activado)
Payload: 
05 00 03 02 01  // UDH (5 bytes: IEI=00, IEDL=03, parte 1 de 2)
C8329BFD06       // Payload GSM-7 ("Hola")

2. Solicitudes de recibo de entrega

Establezca el bit 6 (0x20) para solicitar un recibo de entrega. A menudo se combina con el campo registered_delivery:

ESM Class: 0x20 (binario 00100000)
registered_delivery: 0x01 (solicitar recibo)

3. Mensajería prioritaria

Use los bits 3-2 para priorizar mensajes. Ejemplo para prioridad urgente:

ESM Class: 0x10 (binario 00010000: Prioridad urgente)

Ejemplos de PDUs SMPP

Ejemplo 1: SMS básico (ESM=0x00)

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 ("origen")
00        // TON de destino
00        // NPI de destino
36353433323100  // Dirección de destino ("654321")
00        // ESM Class (0x00: Predeterminado)
00        // Protocol ID (PID)
00        // Prioridad
00        // Tiempo de entrega programado
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  // Payload ("¡Hola!")

Ejemplo 2: SMS concatenado (ESM=0x40)

00000025  // Longitud de comando (37 bytes)
00000004  // ID de comando (SubmitSM)
00000002  // Número de secuencia
00        // TON de origen
00        // NPI de origen
736F7572636500  // Dirección de origen ("origen")
00        // TON de destino
00        // NPI de destino
36353433323100  // Dirección de destino ("654321")
40        // ESM Class (0x40: UDHI activado)
00        // Protocol ID (PID)
00        // Prioridad
00        // Tiempo de entrega programado
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
0C        // Longitud SM (12 bytes)
0500030201C8329BFD06DDDF72  // UDH + "Hola" (Parte 1/2)

Ejemplo 3: Recibo de entrega (ESM=0x20)

0000001D  // Longitud de comando (29 bytes)
00000004  // ID de comando (SubmitSM)
00000003  // Número de secuencia
00        // TON de origen
00        // NPI de origen
736F7572636500  // Dirección de origen ("origen")
00        // TON de destino
00        // NPI de destino
36353433323100  // Dirección de destino ("654321")
20        // ESM Class (0x20: Recibo de entrega)
00        // Protocol ID (PID)
00        // Prioridad
00        // Tiempo de entrega programado
00        // Período de validez
01        // Entrega registrada (recibo solicitado)
00        // Reemplazar-si-presente
00        // Codificación de datos (DCS=0x00)
00        // ID de mensaje predeterminado SM
07        // Longitud SM (7 septetos)
C8329BFD06DDDF72  // Payload ("¡Hola!")

Interacciones con otros campos

  • UDHI (ESM) + DCS: Si UDHI está activado, asegúrese de que el DCS soporte UDH (ej. GSM-7 o 8-bit).
  • ESM Class + registered_delivery: Use ambos para solicitar recibos de entrega explícitamente.
  • Bits de prioridad + Bandera de prioridad: Algunos SMSCs priorizan mensajes basados en los bits ESM en lugar del campo de prioridad separado.

Errores comunes

  • Establecer UDHI sin incluir una Cabecera de Datos de Usuario válida.
  • Usar banderas de recibo de entrega (ESM=0x20) sin configurar registered_delivery.
  • Inconsistencia entre los bits de prioridad ESM y el campo independiente priority_flag.
Conclusión

La clase ESM es una herramienta poderosa para controlar el comportamiento de mensajes en SMPP. Su diseño de máscara de bits permite funciones como concatenación, recibos y priorización. Siempre verifique el soporte del SMSC para banderas avanzadas y pruebe las configuraciones exhaustivamente. Para detalles autorizados, consulte la especificación SMPP v3.4 o v5.0.

More information