Î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 |
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.