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).

Figura 1 - Codificación DCS de SMPP

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.

More information