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)
¿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 |
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
.
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
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field