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
Observação: Valores como 0x40–0x7F são específicos da rede e podem variar conforme o SMSC. Sempre verifique com seu provedor.

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