El campo DCS de SMPP (y la codificación de caracteres en SMPP)
Esta página ofrece información sobre cómo codificar el campo DCS de SMPP.
¿Cómo codifica Ozeki SMS Gateway el campo DCS de SMPP?
En la mayoría de los escenarios, no es necesario configurar manualmente el campo DCS de las PDUs de SMPP. Ozeki SMS Gateway lo hace por ti. Para controlar cómo Ozeki SMS Gateway realiza la codificación, puedes configurar el alfabeto predeterminado en el formulario de configuración del cliente SMPP (Figura 1).
En este formulario, puedes establecer el conjunto de caracteres preferido o pedirle a Ozeki SMS Gateway que use un valor fijo para el parámetro DCS en la PDU del SMS.
¿Qué es el campo DCS de SMPP?
El Esquema de Codificación de Datos (DCS) en SMPP (Protocolo de Mensajes Cortos entre Pares) es un campo de 1 byte dentro de las PDUs (Unidades de Datos de Protocolo) de SMPP. Define cómo se codifica la carga útil del mensaje, permitiendo su correcta interpretación por parte del receptor. El DCS especifica:
- Codificación de caracteres (ej. GSM-7, UCS2, binario de 8 bits)
- Clase de mensaje (ej. SMS Flash)
- Banderas de compresión
Estructura y máscara de bits del DCS
El DCS es una máscara de bits donde cada grupo de bits tiene un propósito específico:
| Bits | Descripción |
|---|---|
| 7-6 | Grupo de Codificación: Determina el tipo de codificación general. |
| 5-4 | Alfabeto: Especifica el conjunto de caracteres (si Grupo de Codificación = 00). |
| 3-0 | Clase de Mensaje/Banderas: Indica el tipo de mensaje (ej. Flash) o compresión. |
Valores del Grupo de Codificación
| Grupo de Codificación (Bits 7-6) | Descripción |
|---|---|
| 00 | Codificación de Datos General (alfabeto especificado en bits 5-4) |
| 01 | Reservado |
| 10 | Codificación UCS2 (16 bits) |
| 11 | Codificación de Datos/Clase de Mensaje (ej. SMS Flash) |
Ejemplos de valores DCS
| DCS (Hex) | Descripción | Binario |
|---|---|---|
| 0x00 | Alfabeto GSM-7 Predeterminado | 00000000 |
| 0x04 | Datos Binarios de 8 bits | 00000100 |
| 0x08 | UCS2 (Unicode) | 00001000 |
| 0x10 | SMS Flash (GSM-7) | 00010000 |
| 0xF0 | SMS Flash (UCS2) | 11110000 |
Ejemplos de PDUs de SMPP con DCS
Ejemplo 1: SubmitSM con codificación GSM-7 (DCS=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 // 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 // Mensaje Corto ("Hello!")
Ejemplo 2: SubmitSM con codificación UCS2 (DCS=0x08)
00000024 // Longitud del Comando (36 bytes)
00000004 // ID del 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 // Prioridad
00 // Tiempo de Entrega Programado
00 // Período de Validez
00 // Entrega Registrada
00 // Reemplazar-si-Presente
08 // Codificación de Datos (DCS=0x08)
00 // ID de Mensaje Predeterminado SM
0C // Longitud SM (12 bytes)
00480065006C006C006F0021 // "Hello!" en UCS2
Ejemplo 3: SMS Flash (DCS=0x10)
0000001D // Longitud del Comando (29 bytes)
00000004 // ID del Comando (SubmitSM)
00000003 // 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 // Prioridad
00 // Tiempo de Entrega Programado
00 // Período de Validez
00 // Entrega Registrada
00 // Reemplazar-si-Presente
10 // Codificación de Datos (DCS=0x10: SMS Flash)
00 // ID de Mensaje Predeterminado SM
07 // Longitud SM (7 septetos)
C8329BFD06DDDF72 // Mensaje Corto ("Hello!")
Conclusión
El campo DCS es crítico para garantizar que los mensajes SMS se codifiquen y muestren correctamente. Las implementaciones pueden variar, por lo que se recomienda consultar la especificación SMPP (v3.4 o v5.0) para detalles precisos sobre la máscara de bits. El uso adecuado del DCS evita errores de codificación y garantiza compatibilidad entre SMSCs.