Pochopenie poľa PID v SMPP
Čo je pole PID v SMPP?
Protokolový identifikátor (PID) v SMPP (Short Message Peer-to-Peer Protocol) je 1-bajtové pole v rámci SMPP PDU (Protocol Data Units).
Identifikuje protokol používaný zdrojovým systémom alebo poskytuje špeciálne inštrukcie pre spracovanie správy. Pole PID je definované v operáciách
submit_sm, deliver_sm a data_sm a je kritické pre:
- Špecifikáciu protokolov vyšších vrstiev (napr. X.400, Telnet)
- Spustenie špeciálnych typov správ (napr. notifikácie o hlasovej pošte)
- Spracovanie nahradenia správy (napr. prepísanie existujúcich správ)
Štruktúra PID a bitová maska
PID je bitová maska, kde špecifické bity ovládajú správanie protokolu. Jeho štruktúra je v súlade so špecifikáciami GSM 03.40:
| Bity | Popis |
|---|---|
| 7-5 | Typ protokolu: Označuje protokol (napr. GSM, Telex alebo SMS). |
| 4-0 | Inštrukcie/Vlajky: Špeciálne spracovanie (napr. nahradenie správy, hlasová pošta). |
Kľúčové hodnoty PID a ich interpretácia
| PID (Hex) | Binárne | Popis |
|---|---|---|
| 0x00 | 00000000 | Predvolené (žiadny špeciálny protokol) |
| 0x01 | 00000001 | Telex (zastarané) |
| 0x03 | 00000011 | X.400 (zastarané) |
| 0x40 | 01000000 | Správa o spätnom volaní (spracovanie SIM karty) |
| 0x41 | 01000001 | Nahradiť krátku správu (prepísať existujúcu) |
| 0x42 | 01000010 | Notifikácia o hlasovej pošte |
| 0x7F | 01111111 | Rezervované pre budúce použitie |
Prípady použitia a scenáre
1. Nahradenie správy (PID=0x41)
Používa sa na prepísanie existujúcej správy uloženej na zariadení príjemcu. Bežné v systémoch OTP (One-Time Password), kde nové heslo nahradí staré.
2. Notifikácia o hlasovej pošte (PID=0x42)
Spustí vizuálny/auditívny alert na zariadení príjemcu pre novú hlasovú poštu. Telo SMS je často prázdne, pretože samotné PID je spúšťač.
3. Sťahovanie dát SIM (PID=0x40)
Inštruuje SIM kartu, aby spracovala správu (napr. aktualizácia prednastavených nastavení).
Príklady SMPP PDU s PID
Príklad 1: Predvolené PID (0x00)
0000001D // Dĺžka príkazu (29 bajtov)
00000004 // ID príkazu (SubmitSM)
00000001 // Poradové číslo
00 // Zdrojový TON
00 // Zdrojový NPI
736F7572636500 // Zdrojová adresa ("source")
00 // Cieľový TON
00 // Cieľový NPI
36353433323100 // Cieľová adresa ("654321")
00 // Trieda ESM
00 // Protokolový ID (PID=0x00)
00 // Vlajka priority
00 // Čas plánovaného doručenia
00 // Platnosť
00 // Registrované doručenie
00 // Nahradiť, ak je prítomné
00 // Schéma kódovania dát (DCS=0x00)
00 // Predvolené ID správy SM
07 // Dĺžka SM (7 septetov)
C8329BFD06DDDF72 // Payload ("Hello!")
Príklad 2: Notifikácia o hlasovej pošte (PID=0x42)
0000001D // Dĺžka príkazu (29 bajtov)
00000004 // ID príkazu (SubmitSM)
00000002 // Poradové číslo
00 // Zdrojový TON
00 // Zdrojový NPI
736F7572636500 // Zdrojová adresa ("source")
00 // Cieľový TON
00 // Cieľový NPI
36353433323100 // Cieľová adresa ("654321")
00 // Trieda ESM
42 // Protokolový ID (PID=0x42: Hlasová pošta)
00 // Vlajka priority
00 // Čas plánovaného doručenia
00 // Platnosť
00 // Registrované doručenie
00 // Nahradiť, ak je prítomné
00 // Kódovanie dát (DCS=0x00)
00 // Predvolené ID správy SM
00 // Dĺžka SM (0 bajtov: Žiadny payload)
Príklad 3: Nahradenie existujúcej správy (PID=0x41)
0000001D // Dĺžka príkazu (29 bajtov)
00000004 // ID príkazu (SubmitSM)
00000003 // Poradové číslo
00 // Zdrojový TON
00 // Zdrojový NPI
736F7572636500 // Zdrojová adresa ("source")
00 // Cieľový TON
00 // Cieľový NPI
36353433323100 // Cieľová adresa ("654321")
00 // Trieda ESM
41 // Protokolový ID (PID=0x41: Nahradiť)
00 // Vlajka priority
00 // Čas plánovaného doručenia
00 // Platnosť
01 // Registrované doručenie (požadovaný potvrdenie)
00 // Nahradiť, ak je prítomné
00 // Kódovanie dát (DCS=0x00)
00 // Predvolené ID správy SM
07 // Dĺžka SM (7 septetov)
C8329BFD06DDDF72 // Payload ("Nové OTP: 1234")
Interakcia PID s TP-Protocol-Identifier (GSM)
V sieťach GSM sa PID mapuje na TP-Protocol-Identifier v SMS TPDU. Kľúčové mapovania zahŕňajú:
- 0x41: Príkaz na nahradenie (GSM 03.40 TP-PID=0x41)
- 0x42: Hlasová pošta (GSM 03.40 TP-PID=0x42)
Bežné úskalia
- Použitie rezervovaných hodnôt PID (napr. 0x7F) bez podpory SMSC.
- Nesúlad PID a DCS (napr. použitie UCS2 kódovania pre dáta SIM).
- Ignorovanie pravidiel špecifických pre sieť (napr. PID=0x40 môže vyžadovať špeciálnu konfiguráciu SMSC).
Záver
Pole PID je nevyhnutné pre pokročilé smerovanie a spracovanie SMS. Hoci je často nastavené na 0x00 (predvolené), jeho špecializované hodnoty umožňujú funkcie ako nahradenie správy, aktualizácie SIM a upozornenia na hlasovú poštu. Vždy testujte konfiguráciu PID s vaším SMSC a pre presné správanie sa odporúča pozrieť špecifikácie GSM 03.40 alebo SMPP v5.0.