Az SMPP PID mező megértése
Mi az SMPP PID mező?
A Protocol Identifier (PID) az SMPP (Short Message Peer-to-Peer Protocol) protokollban egy 1 bájtos mező az SMPP PDU-k (Protocol Data Units) belül.
Azonosítja a forrásrendszer által használt protokollt, vagy speciális utasításokat ad az üzenetkezeléshez. A PID mező a
submit_sm, deliver_sm és data_sm műveletekben van definiálva, és kritikus szerepet játszik a következőkben:
- Magasabb rétegbeli protokollok meghatározása (pl. X.400, Telnet)
- Speciális üzenettípusok aktiválása (pl. hangpostával kapcsolatos értesítések)
- Üzenetfelülírás kezelése (pl. meglévő üzenetek felülírása)
A PID szerkezete és bitmaszkja
A PID egy bitmaszk, ahol bizonyos bitek szabályozzák a protokoll viselkedését. Szerkezete a GSM 03.40 specifikációval összhangban van:
| Bitek | Leírás |
|---|---|
| 7-5 | Protokoll típus: A protokollt jelöli (pl. GSM, Telex vagy SMS). |
| 4-0 | Utasítások/Flag-ek: Speciális kezelés (pl. üzenet felülírása, hangposta). |
Kulcsfontosságú PID értékek és értelmezésük
| PID (Hex) | Bináris | Leírás |
|---|---|---|
| 0x00 | 00000000 | Alapértelmezett (nincs speciális protokoll) |
| 0x01 | 00000001 | Telex (elavult) |
| 0x03 | 00000011 | X.400 (elavult) |
| 0x40 | 01000000 | Visszahívási üzenet (SIM kártya kezelés) |
| 0x41 | 01000001 | Üzenet felülírása (meglévő üzenet felülírása) |
| 0x42 | 01000010 | Hangposta értesítés |
| 0x7F | 01111111 | Fenntartva a jövőbeli használatra |
Használati esetek és forgatókönyvek
1. Üzenet felülírása (PID=0x41)
A címzett eszközén tárolt meglévő üzenet felülírására szolgál. Gyakori az OTP (One-Time Password) rendszerekben, ahol az új jelszó felülírja a régit.
2. Hangposta értesítés (PID=0x42)
Vizuális/hangos riasztást vált ki a címzett eszközén egy új hangposta érkezésekor. Az SMS törzse gyakran üres, mivel maga a PID váltja ki a riasztást.
3. SIM adatletöltés (PID=0x40)
Utasítja a SIM kártyát az üzenet feldolgozására (pl. előre beállított beállítások frissítése).
Példa SMPP PDU-k PID-del
1. példa: Alapértelmezett PID (0x00)
0000001D // Parancs hossza (29 bájt)
00000004 // Parancs azonosító (SubmitSM)
00000001 // Sorszám
00 // Forrás TON
00 // Forrás NPI
736F7572636500 // Forráscím ("source")
00 // Cél TON
00 // Cél NPI
36353433323100 // Címzett cím ("654321")
00 // ESM osztály
00 // Protokoll azonosító (PID=0x00)
00 // Prioritás flag
00 // Ütemezett kézbesítési idő
00 // Érvényességi időtartam
00 // Regisztrált kézbesítés
00 // Felülírás, ha jelen van
00 // Adatkódolási séma (DCS=0x00)
00 // SM alapértelmezett üzenet azonosító
07 // SM hossz (7 szettes)
C8329BFD06DDDF72 // Tartalom ("Hello!")
2. példa: Hangposta értesítés (PID=0x42)
0000001D // Parancs hossza (29 bájt)
00000004 // Parancs azonosító (SubmitSM)
00000002 // Sorszám
00 // Forrás TON
00 // Forrás NPI
736F7572636500 // Forráscím ("source")
00 // Cél TON
00 // Cél NPI
36353433323100 // Címzett cím ("654321")
00 // ESM osztály
42 // Protokoll azonosító (PID=0x42: Hangposta)
00 // Prioritás flag
00 // Ütemezett kézbesítési idő
00 // Érvényességi időtartam
00 // Regisztrált kézbesítés
00 // Felülírás, ha jelen van
00 // Adatkódolás (DCS=0x00)
00 // SM alapértelmezett üzenet azonosító
00 // SM hossz (0 bájt: Nincs tartalom)
3. példa: Meglévő üzenet felülírása (PID=0x41)
0000001D // Parancs hossza (29 bájt)
00000004 // Parancs azonosító (SubmitSM)
00000003 // Sorszám
00 // Forrás TON
00 // Forrás NPI
736F7572636500 // Forráscím ("source")
00 // Cél TON
00 // Cél NPI
36353433323100 // Címzett cím ("654321")
00 // ESM osztály
41 // Protokoll azonosító (PID=0x41: Felülírás)
00 // Prioritás flag
00 // Ütemezett kézbesítési idő
00 // Érvényességi időtartam
01 // Regisztrált kézbesítés (visszaigazolás kért)
00 // Felülírás, ha jelen van
00 // Adatkódolás (DCS=0x00)
00 // SM alapértelmezett üzenet azonosító
07 // SM hossz (7 szettes)
C8329BFD06DDDF72 // Tartalom ("New OTP: 1234")
A PID és a TP-Protocol-Identifier (GSM) kapcsolata
A GSM hálózatokban a PID a TP-Protocol-Identifier-re képeződik le az SMS TPDU-kban. Fontos leképezések:
- 0x41: Felülírási parancs (GSM 03.40 TP-PID=0x41)
- 0x42: Hangposta (GSM 03.40 TP-PID=0x42)
Gyakori buktatók
- Fenntartott PID értékek használata (pl. 0x7F) SMSC támogatás nélkül.
- A PID és a DCS eltérése (pl. UCS2 kódolás használata SIM adatokhoz).
- Hálózatspecifikus szabályok figyelmen kívül hagyása (pl. a PID=0x40 speciális SMSC konfigurációt igényelhet).
Összegzés
A PID mező elengedhetetlen a fejlett SMS-útválasztáshoz és -kezeléshez. Bár gyakran 0x00-ra (alapértelmezett) van állítva, speciális értékei lehetővé teszik olyan funkciókat, mint az üzenetfelülírás, SIM frissítések és hangposta értesítések. Mindig tesztelje a PID beállításokat az SMSC-vel, és a pontos viselkedésért tekintse meg a GSM 03.40 vagy SMPP v5.0 specifikációkat.