Cómo configurar los campos de número de teléfono en SMPP

SMPP (Short Message Peer-to-Peer) es un protocolo utilizado por sistemas de telecomunicaciones para intercambiar mensajes SMS entre SMSC (Centros de Servicio de Mensajes Cortos) y ESMEs (Entidades Externas de Mensajería Corta). Un componente clave del protocolo es cómo codifica los números de teléfono (direcciones de origen y destino) en la PDU (Unidad de Datos de Protocolo) de SMPP.

Parámetros de dirección en SMPP

Los campos clave utilizados para definir un número de teléfono en SMPP son:

  • addr_ton (Tipo de Número)
  • addr_npi (Indicador de Plan de Numeración)
  • address_range o source_addr/destination_addr

Tipo de Número (TON)

Este campo define el formato del número. Los valores comunes incluyen:

ValorTONDescripción
0DesconocidoFormato desconocido
1InternacionalEl número incluye código de país
2NacionalFormato de número local
5AlfanuméricoSe utiliza para nombres de remitente como "MiEmpresa"

Indicador de Plan de Numeración (NPI)

Este campo indica el formato de numeración. Valores comunes:

ValorNPIDescripción
0DesconocidoFormato desconocido
1ISDN (E.164)Formato estándar internacional de número de teléfono
3DatosRed de datos (X.121)

Codificación de una dirección

Al codificar un número de teléfono en SMPP, el sistema envía el número como una cadena terminada en nulo en ASCII, acompañada de los valores TON y NPI apropiados.

Ejemplo:

Número de teléfono: +14155552671
TON: 1 (Internacional)
NPI: 1 (ISDN/E.164)
Codificado como: 31 34 31 35 35 35 35 32 36 37 31 00  (ASCII "14155552671" + NULL)

Ejemplo de PDU SMPP

A continuación se muestra un ejemplo de una PDU submit_sm que incluye un número de destino:

0000003F  // Longitud del comando (63 bytes)
00000004  // ID del comando (submit_sm)
00000000  // Estado del comando
00000001  // Número de secuencia
74657374  // service_type: "test"
01        // source_addr_ton: Internacional
01        // source_addr_npi: ISDN
31323334  // source_addr: "1234" (ASCII)
00        // Terminador NULL
01        // dest_addr_ton: Internacional
01        // dest_addr_npi: ISDN
2B393138  // destination_addr: "+918123456789" (ASCII, sin +)
31323334
35363738
3900      // Terminador NULL
00        // esm_class
00        // protocol_id
00        // priority_flag
00        // schedule_delivery_time (nulo)
00        // validity_period (nulo)
00        // registered_delivery
00        // replace_if_present_flag
00        // data_coding (GSM por defecto)
00        // sm_default_msg_id
0D        // sm_length (13)
48656C6C  // Mensaje corto ("Hello, World!")
6F2C2057
6F726C64
2100

Ejemplo de remitente alfanumérico

Cuando se utiliza un nombre de remitente alfanumérico (común para SMS masivos unidireccionales):

Remitente: "MiMarca"
TON: 5 (Alfanumérico)
NPI: 0 (Desconocido o irrelevante)
Codificado: Cadena ASCII "MiMarca" + terminador NULL

Notas importantes

  • Los ID de remitente alfanuméricos deben tener 11 caracteres o menos.
  • Las direcciones alfanuméricas no son compatibles en todos los países.
  • Siempre coincida TON y NPI correctamente con su formato de dirección para evitar problemas de enrutamiento.

Conclusión

La codificación de números en SMPP es fundamental para garantizar la entrega adecuada de mensajes. Al configurar correctamente TON, NPI y codificar la dirección en ASCII (terminada en nulo), los desarrolladores pueden garantizar la compatibilidad con SMSC y redes móviles.

More information