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