Entendiendo el campo PID en SMPP

¿Qué es el campo PID en SMPP?

El Identificador de Protocolo (PID) 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. Identifica el protocolo utilizado por el sistema originador o proporciona instrucciones especiales para el manejo de mensajes. El campo PID se define en las operaciones submit_sm, deliver_sm y data_sm y es crítico para:

  • Especificar protocolos de capa superior (ej. X.400, Telnet)
  • Activar tipos de mensajes especiales (ej. notificaciones de buzón de voz)
  • Manejar reemplazo de mensajes (ej. sobrescribir mensajes existentes)

Estructura y máscara de bits del PID

El PID es una máscara de bits donde bits específicos controlan el comportamiento del protocolo. Su estructura sigue las especificaciones GSM 03.40:

Bits Descripción
7-5 Tipo de Protocolo: Indica el protocolo (ej. GSM, Telex o SMS).
4-0 Instrucciones/Banderas: Manejo especial (ej. reemplazar mensaje, buzón de voz).

Valores clave del PID y su interpretación

PID (Hex) Binario Descripción
0x00 00000000 Predeterminado (sin protocolo especial)
0x01 00000001 Telex (obsoleto)
0x03 00000011 X.400 (obsoleto)
0x40 01000000 Mensaje de llamada de retorno (manejo de tarjeta SIM)
0x41 01000001 Reemplazar Mensaje Corto (sobrescribir existente)
0x42 01000010 Notificación de buzón de voz
0x7F 01111111 Reservado para uso futuro
Nota: Valores como 0x40–0x7F son específicos de la red y pueden variar según el SMSC. Siempre verifica con tu proveedor.

Casos de uso y escenarios

1. Reemplazo de mensaje (PID=0x41)

Se utiliza para sobrescribir un mensaje existente almacenado en el dispositivo del destinatario. Común en sistemas OTP (Contraseña de Un Solo Uso) donde una nueva contraseña reemplaza la anterior.

2. Notificación de buzón de voz (PID=0x42)

Activa una alerta visual/audible en el dispositivo del destinatario para un nuevo mensaje de voz. El cuerpo del SMS suele estar vacío, ya que el PID en sí es el activador.

3. Descarga de datos en SIM (PID=0x40)

Indica a la tarjeta SIM que procese el mensaje (ej. actualizar configuraciones predefinidas).

Ejemplos de PDUs de SMPP con PID

Ejemplo 1: PID predeterminado (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 (PID=0x00)
00        // Bandera de prioridad
00        // Tiempo de entrega programado
00        // Período de validez
00        // Entrega registrada
00        // Reemplazar-si-presente
00        // Esquema de codificación de datos (DCS=0x00)
00        // ID de mensaje predeterminado SM
07        // Longitud SM (7 septetos)
C8329BFD06DDDF72  // Carga útil ("¡Hola!")
    

Ejemplo 2: Notificación de buzón de voz (PID=0x42)

0000001D  // Longitud del comando (29 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
42        // ID de Protocolo (PID=0x42: Buzón de voz)
00        // Bandera de 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
00        // Longitud SM (0 bytes: Sin carga útil)
    

Ejemplo 3: Reemplazar mensaje existente (PID=0x41)

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
41        // ID de Protocolo (PID=0x41: Reemplazar)
00        // Bandera de prioridad
00        // Tiempo de entrega programado
00        // Período de validez
01        // Entrega registrada (se solicita acuse 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 ("Nuevo OTP: 1234")
    

Interacción del PID con TP-Protocol-Identifier (GSM)

En redes GSM, el PID se mapea al TP-Protocol-Identifier en los TPDUs de SMS. Algunos mapeos clave incluyen:

  • 0x41: Comando de reemplazo (GSM 03.40 TP-PID=0x41)
  • 0x42: Buzón de voz (GSM 03.40 TP-PID=0x42)

Errores comunes

  • Usar valores de PID reservados (ej. 0x7F) sin soporte del SMSC.
  • Incompatibilidad entre PID y DCS (ej. usar codificación UCS2 para datos SIM).
  • Ignorar reglas específicas de la red (ej. PID=0x40 puede requerir configuración especial del SMSC).

Conclusión

El campo PID es esencial para el enrutamiento y manejo avanzado de SMS. Aunque a menudo se establece en 0x00 (predeterminado), sus valores especializados permiten funciones como reemplazo de mensajes, actualizaciones de SIM y alertas de buzón de voz. Siempre prueba las configuraciones de PID con tu SMSC y consulta las especificaciones GSM 03.40 o SMPP v5.0 para un comportamiento preciso.

More information