Entendendo o Campo PID do SMPP
O que é o Campo PID do SMPP?
O Identificador de Protocolo (PID) no SMPP (Short Message Peer-to-Peer Protocol) é um campo de 1 byte dentro dos PDUs (Unidades de Dados de Protocolo) do SMPP.
Ele identifica o protocolo usado pelo sistema de origem ou fornece instruções especiais para o tratamento da mensagem. O campo PID é definido nas operações
submit_sm
, deliver_sm
e data_sm
e é crítico para:
- Especificar protocolos de camada superior (ex: X.400, Telnet)
- Acionar tipos especiais de mensagem (ex: notificações de correio de voz)
- Tratar substituição de mensagens (ex: sobrescrever mensagens existentes)
Estrutura e Máscara de Bits do PID
O PID é uma máscara de bits onde bits específicos controlam o comportamento do protocolo. Sua estrutura segue as especificações GSM 03.40:
Bits | Descrição |
---|---|
7-5 | Tipo de Protocolo: Indica o protocolo (ex: GSM, Telex ou SMS). |
4-0 | Instruções/Flags: Tratamento especial (ex: substituir mensagem, correio de voz). |
Valores Principais do PID e Interpretação
PID (Hex) | Binário | Descrição |
---|---|---|
0x00 | 00000000 | Padrão (nenhum protocolo especial) |
0x01 | 00000001 | Telex (obsoleto) |
0x03 | 00000011 | X.400 (obsoleto) |
0x40 | 01000000 | Mensagem de retorno de chamada (tratamento pelo cartão SIM) |
0x41 | 01000001 | Substituir Mensagem Curta (sobrescrever existente) |
0x42 | 01000010 | Notificação de correio de voz |
0x7F | 01111111 | Reservado para uso futuro |
Casos de Uso e Cenários
1. Substituição de Mensagem (PID=0x41)
Usado para sobrescrever uma mensagem existente armazenada no dispositivo do destinatário. Comum em sistemas de OTP (Senha de Uso Único) onde uma nova senha substitui a anterior.
2. Notificação de Correio de Voz (PID=0x42)
Aciona um alerta visual/audível no dispositivo do destinatário para um novo correio de voz. O corpo do SMS geralmente está vazio, pois o próprio PID é o acionador.
3. Download de Dados para o SIM (PID=0x40)
Instrui o cartão SIM a processar a mensagem (ex: atualizar configurações pré-definidas).
Exemplos de PDUs SMPP com PID
Exemplo 1: PID Padrão (0x00)
0000001D // Comprimento do Comando (29 bytes) 00000004 // ID do Comando (SubmitSM) 00000001 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 00 // Classe ESM 00 // ID de Protocolo (PID=0x00) 00 // Flag de Prioridade 00 // Tempo de Agendamento de Entrega 00 // Período de Validade 00 // Entrega Registrada 00 // Substituir-se-Presente 00 // Esquema de Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 07 // Comprimento SM (7 septets) C8329BFD06DDDF72 // Conteúdo ("Olá!")
Exemplo 2: Notificação de Correio de Voz (PID=0x42)
0000001D // Comprimento do Comando (29 bytes) 00000004 // ID do Comando (SubmitSM) 00000002 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 00 // Classe ESM 42 // ID de Protocolo (PID=0x42: Correio de Voz) 00 // Flag de Prioridade 00 // Tempo de Agendamento de Entrega 00 // Período de Validade 00 // Entrega Registrada 00 // Substituir-se-Presente 00 // Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 00 // Comprimento SM (0 bytes: Sem conteúdo)
Exemplo 3: Substituir Mensagem Existente (PID=0x41)
0000001D // Comprimento do Comando (29 bytes) 00000004 // ID do Comando (SubmitSM) 00000003 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 00 // Classe ESM 41 // ID de Protocolo (PID=0x41: Substituir) 00 // Flag de Prioridade 00 // Tempo de Agendamento de Entrega 00 // Período de Validade 01 // Entrega Registrada (recibo solicitado) 00 // Substituir-se-Presente 00 // Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 07 // Comprimento SM (7 septets) C8329BFD06DDDF72 // Conteúdo ("Nova OTP: 1234")
Interação do PID com TP-Protocol-Identifier (GSM)
Em redes GSM, o PID mapeia para o TP-Protocol-Identifier
nos TPDUs de SMS. Mapeamentos-chave incluem:
- 0x41: Comando de Substituição (GSM 03.40 TP-PID=0x41)
- 0x42: Correio de Voz (GSM 03.40 TP-PID=0x42)
Armadilhas Comuns
- Usar valores reservados do PID (ex: 0x7F) sem suporte do SMSC.
- Incompatibilidade entre PID e DCS (ex: usar codificação UCS2 para dados do SIM).
- Ignorar regras específicas da rede (ex: PID=0x40 pode exigir configuração especial no SMSC).
Conclusão
O campo PID é essencial para roteamento e tratamento avançado de SMS. Embora frequentemente definido como 0x00 (padrão), seus valores especializados permitem recursos como substituição de mensagens, atualizações do SIM e alertas de correio de voz. Sempre teste configurações de PID com seu SMSC e consulte as especificações GSM 03.40 ou SMPP v5.0 para comportamento preciso.
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