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:
Valor | TON | Descrição |
---|---|---|
0 | Desconhecido | Formato desconhecido |
1 | Internacional | Número inclui código do país |
2 | Nacional | Formato de número local |
5 | Alfanumérico | Usado para nomes de remetentes como "MinhaEmpresa" |
Indicador de Plano de Numeração (NPI)
Este campo indica o formato de numeração. Valores comuns:
Valor | NPI | Descrição |
---|---|---|
0 | Desconhecido | Formato desconhecido |
1 | ISDN (E.164) | Formato padrão internacional de número de telefone |
3 | Dados | Rede 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
- Como configurar o campo Tipo de serviço SMPP
- Como configurar os campos de número de telefone SMPP
- Como configurar o campo Classe ESM do SMPP
- Como configurar o campo PID do SMPP
- Como configurar o campo de prioridade do SMPP
- Como configurar o campo de tempo agendado do SMPP
- Como configurar o campo de período de validade do SMPP
- Como configurar o campo de entrega registrada do SMPP
- Como configurar o campo Substituir se presente do SMPP
- Como configurar o campo sm_default_msg_id
- Como configurar o campo DCS do SMPP
- Como calcular o campo de comprimento SM do SMPP
- Como inserir dados no campo SM SMPP