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:
Valor | TON | Descripción |
---|---|---|
0 | Desconocido | Formato desconocido |
1 | Internacional | El número incluye código de país |
2 | Nacional | Formato de número local |
5 | Alfanumérico | Se utiliza para nombres de remitente como "MiEmpresa" |
Indicador de Plan de Numeración (NPI)
Este campo indica el formato de numeración. Valores comunes:
Valor | NPI | Descripción |
---|---|---|
0 | Desconocido | Formato desconocido |
1 | ISDN (E.164) | Formato estándar internacional de número de teléfono |
3 | Datos | Red 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
- 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