Como configurar os campos de número de telefone no SMPP

SMPP (Short Message Peer-to-Peer) é um protocolo usado por sistemas de telecomunicações para trocar mensagens SMS entre SMSCs (Short Message Service Centers) e ESMEs (External Short Messaging Entities). Um componente chave do protocolo é como ele codifica números de telefone (endereços de origem e destino) no PDU (Protocol Data Unit) do SMPP.

Parâmetros de Endereço no SMPP

Os campos principais usados para definir um número de telefone no SMPP são:

  • addr_ton (Tipo de Número)
  • addr_npi (Indicador de Plano de Numeração)
  • address_range ou source_addr/destination_addr

Tipo de Número (TON)

Este campo define o formato do número. Valores comuns incluem:

ValorTONDescrição
0DesconhecidoFormato desconhecido
1InternacionalNúmero inclui código do país
2NacionalFormato de número local
5AlfanuméricoUsado para nomes de remetentes como "MinhaEmpresa"

Indicador de Plano de Numeração (NPI)

Este campo indica o formato de numeração. Valores comuns:

ValorNPIDescrição
0DesconhecidoFormato desconhecido
1ISDN (E.164)Formato padrão internacional de número de telefone
3DadosRede de dados (X.121)

Codificando um Endereço

Ao codificar um número de telefone no SMPP, o sistema envia o número como uma string ASCII terminada em nulo, acompanhada pelos valores apropriados de TON e NPI.

Exemplo:

Número de telefone: +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)

Exemplo de PDU SMPP

Abaixo está um exemplo de um PDU submit_sm que inclui um número de destino:

0000003F  // Comprimento do Comando (63 bytes)
00000004  // ID do Comando (submit_sm)
00000000  // Status do Comando
00000001  // Número de Sequência
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, sem +)
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 (padrão GSM)
00        // sm_default_msg_id
0D        // sm_length (13)
48656C6C  // Mensagem curta ("Hello, World!")
6F2C2057
6F726C64
2100

Exemplo de Remetente Alfanumérico

Ao usar um nome de remetente alfanumérico (comum para SMS em massa unidirecional):

Remetente: "MinhaMarca"
TON: 5 (Alfanumérico)
NPI: 0 (Desconhecido ou irrelevante)
Codificado: String ASCII "MinhaMarca" + terminador NULL

Notas Importantes

  • IDs de remetentes alfanuméricos devem ter 11 caracteres ou menos.
  • Endereços alfanuméricos não são suportados em todos os países.
  • Sempre combine TON e NPI corretamente com o formato do endereço para evitar problemas de roteamento.

Conclusão

A codificação de números no SMPP é crítica para garantir a entrega adequada das mensagens. Ao definir os valores corretos de TON, NPI e codificar o endereço corretamente em ASCII (terminado em nulo), os desenvolvedores podem garantir compatibilidade com SMSCs e redes móveis.

More information