Înțelegerea câmpului SMPP PID

Ce este câmpul SMPP PID?

Identificatorul de protocol (PID) în SMPP (Short Message Peer-to-Peer Protocol) este un câmp de 1 octet din cadrul PDU-urilor SMPP (Unități de Date de Protocol). Acesta identifică protocolul utilizat de sistemul de origine sau oferă instrucțiuni speciale pentru gestionarea mesajelor. Câmpul PID este definit în operațiunile submit_sm, deliver_sm și data_sm și este critic pentru:

  • Specificarea protocoalelor de nivel superior (de ex., X.400, Telnet)
  • Declanșarea tipurilor speciale de mesaje (de ex., notificări de mesagerie vocală)
  • Gestionarea înlocuirii mesajelor (de ex., suprascrierea mesajelor existente)

Structura PID și masca de biți

PID este o mască de biți în care anumiți biți controlează comportamentul protocolului. Structura sa este aliniată cu specificațiile GSM 03.40:

Biți Descriere
7-5 Tipul de protocol: Indică protocolul (de ex., GSM, Telex sau SMS).
4-0 Instrucțiuni/Steaguri: Gestionare specială (de ex., înlocuire mesaj, mesagerie vocală).

Valori PID cheie și interpretarea lor

PID (Hex) Binar Descriere
0x00 00000000 Implicit (fără protocol special)
0x01 00000001 Telex (învechit)
0x03 00000011 X.400 (învechit)
0x40 01000000 Mesaj de returnare apel (gestionare card SIM)
0x41 01000001 Înlocuire mesaj scurt (suprascriere mesaj existent)
0x42 01000010 Notificare mesagerie vocală
0x7F 01111111 Rezervat pentru utilizare viitoare
Notă: Valorile precum 0x40–0x7F sunt specifice rețelei și pot varia în funcție de SMSC. Verificați întotdeauna cu furnizorul dvs.

Cazuri de utilizare și scenarii

1. Înlocuire mesaj (PID=0x41)

Utilizat pentru a suprascrie un mesaj existent stocat pe dispozitivul destinatarului. Comun în sistemele OTP (One-Time Password) unde un nou parolă înlocuiește cea veche.

2. Notificare mesagerie vocală (PID=0x42)

Declanșează o alertă vizuală/audibilă pe dispozitivul destinatarului pentru o nouă mesagerie vocală. Corpul SMS-ului este adesea gol, deoarece PID-ul în sine este declanșatorul.

3. Descărcare date SIM (PID=0x40)

Instruiește cardul SIM să proceseze mesajul (de ex., actualizarea setărilor preconfigurate).

Exemple de PDU-uri SMPP cu PID

Exemplul 1: PID implicit (0x00)

0000001D  // Lungime comandă (29 de octeți)
00000004  // ID comandă (SubmitSM)
00000001  // Număr de secvență
00        // Sursă TON
00        // Sursă NPI
736F7572636500  // Adresă sursă ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Adresă destinație ("654321")
00        // Clasă ESM
00        // ID protocol (PID=0x00)
00        // Steag prioritate
00        // Timp livrare programată
00        // Perioadă valabilitate
00        // Livrare înregistrată
00        // Înlocuire-dacă-prezent
00        // Schema de codare date (DCS=0x00)
00        // ID mesaj implicit SM
07        // Lungime SM (7 septeți)
C8329BFD06DDDF72  // Conținut ("Bună!")
    

Exemplul 2: Notificare mesagerie vocală (PID=0x42)

0000001D  // Lungime comandă (29 de octeți)
00000004  // ID comandă (SubmitSM)
00000002  // Număr de secvență
00        // Sursă TON
00        // Sursă NPI
736F7572636500  // Adresă sursă ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Adresă destinație ("654321")
00        // Clasă ESM
42        // ID protocol (PID=0x42: Mesagerie vocală)
00        // Steag prioritate
00        // Timp livrare programată
00        // Perioadă valabilitate
00        // Livrare înregistrată
00        // Înlocuire-dacă-prezent
00        // Codare date (DCS=0x00)
00        // ID mesaj implicit SM
00        // Lungime SM (0 octeți: Fără conținut)
    

Exemplul 3: Înlocuire mesaj existent (PID=0x41)

0000001D  // Lungime comandă (29 de octeți)
00000004  // ID comandă (SubmitSM)
00000003  // Număr de secvență
00        // Sursă TON
00        // Sursă NPI
736F7572636500  // Adresă sursă ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Adresă destinație ("654321")
00        // Clasă ESM
41        // ID protocol (PID=0x41: Înlocuire)
00        // Steag prioritate
00        // Timp livrare programată
00        // Perioadă valabilitate
01        // Livrare înregistrată (confirmare solicitată)
00        // Înlocuire-dacă-prezent
00        // Codare date (DCS=0x00)
00        // ID mesaj implicit SM
07        // Lungime SM (7 septeți)
C8329BFD06DDDF72  // Conținut ("OTP nou: 1234")
    

Interacțiunea PID cu TP-Protocol-Identifier (GSM)

În rețelele GSM, PID corespunde cu TP-Protocol-Identifier din TPDU-urile SMS. Corespondențe cheie includ:

  • 0x41: Comandă de înlocuire (GSM 03.40 TP-PID=0x41)
  • 0x42: Mesagerie vocală (GSM 03.40 TP-PID=0x42)

Capcane comune

  • Utilizarea valorilor PID rezervate (de ex., 0x7F) fără suport SMSC.
  • Neconcordanță între PID și DCS (de ex., utilizarea codării UCS2 pentru date SIM).
  • Ignorarea regulilor specifice rețelei (de ex., PID=0x40 poate necesita configurație specială SMSC).

Concluzie

Câmpul PID este esențial pentru rutarea și gestionarea avansată a SMS-urilor. Deși este adesea setat la 0x00 (implicit), valorile sale specializate permit funcții precum înlocuirea mesajelor, actualizările SIM și alertele de mesagerie vocală. Testați întotdeauna configurațiile PID cu SMSC-ul dvs. și consultați specificațiile GSM 03.40 sau SMPP v5.0 pentru comportament precis.

More information