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.