Razumijevanje SMPP PID polja
Što je SMPP PID polje?
Protokol identifikator (PID) u SMPP (Short Message Peer-to-Peer Protocol) je 1-bajtno polje unutar SMPP PDU (Protocol Data Units).
Identificira protokol korišten od strane izvornog sustava ili daje posebne upute za rukovanje porukama. PID polje je definirano u
submit_sm, deliver_sm, i data_sm operacijama i ključno je za:
- Određivanje protokola višeg sloja (npr. X.400, Telnet)
- Pokretanje posebnih tipova poruka (npr. obavijesti o govornoj pošti)
- Rukovanje zamjenom poruka (npr. zamjena postojećih poruka)
Struktura PID-a i bitmask
PID je bitmask gdje specifični bitovi kontroliraju ponašanje protokola. Njegova struktura je usklađena sa GSM 03.40 specifikacijama:
| Bitovi | Opis |
|---|---|
| 7-5 | Tip protokola: Označava protokol (npr. GSM, Telex, ili SMS). |
| 4-0 | Upute/Zastavice: Posebno rukovanje (npr. zamjena poruke, govorna pošta). |
Ključne PID vrijednosti i interpretacija
| PID (Hex) | Binarno | Opis |
|---|---|---|
| 0x00 | 00000000 | Zadano (bez posebnog protokola) |
| 0x01 | 00000001 | Telex (zastarjelo) |
| 0x03 | 00000011 | X.400 (zastarjelo) |
| 0x40 | 01000000 | Poruka povratnog poziva (rukovanje SIM karticom) |
| 0x41 | 01000001 | Zamijeni kratku poruku (zamjena postojeće) |
| 0x42 | 01000010 | Obavijest o govornoj pošti |
| 0x7F | 01111111 | Rezervirano za buduću upotrebu |
Primjeri upotrebe i scenariji
1. Zamjena poruke (PID=0x41)
Koristi se za zamjenu postojeće poruke pohranjene na uređaju primatelja. Uobičajeno u OTP (One-Time Password) sustavima gdje nova lozinka zamjenjuje staru.
2. Obavijest o govornoj pošti (PID=0x42)
Pokreće vizualni/zvučni alarm na uređaju primatelja za novu govornu poštu. Tijelo SMS-a je često prazno, jer je sam PID okidač.
3. Preuzimanje podataka na SIM (PID=0x40)
Uputa SIM kartici za obradu poruke (npr. ažuriranje unaprijed postavljenih postavki).
Primjeri SMPP PDU-a s PID-om
Primjer 1: Zadani PID (0x00)
0000001D // Duljina naredbe (29 bajtova)
00000004 // ID naredbe (SubmitSM)
00000001 // Redni broj
00 // Izvorni TON
00 // Izvorni NPI
736F7572636500 // Izvorna adresa ("source")
00 // Odredišni TON
00 // Odredišni NPI
36353433323100 // Odredišna adresa ("654321")
00 // ESM klasa
00 // Protokol ID (PID=0x00)
00 // Zastavica prioriteta
00 // Vrijeme isporuke
00 // Valjanost
00 // Registrirana isporuka
00 // Zamijeni-ako-postoji
00 // Shema kodiranja podataka (DCS=0x00)
00 // Zadani ID poruke
07 // Duljina poruke (7 septeta)
C8329BFD06DDDF72 // Sadržaj ("Hello!")
Primjer 2: Obavijest o govornoj pošti (PID=0x42)
0000001D // Duljina naredbe (29 bajtova)
00000004 // ID naredbe (SubmitSM)
00000002 // Redni broj
00 // Izvorni TON
00 // Izvorni NPI
736F7572636500 // Izvorna adresa ("source")
00 // Odredišni TON
00 // Odredišni NPI
36353433323100 // Odredišna adresa ("654321")
00 // ESM klasa
42 // Protokol ID (PID=0x42: Govorna pošta)
00 // Zastavica prioriteta
00 // Vrijeme isporuke
00 // Valjanost
00 // Registrirana isporuka
00 // Zamijeni-ako-postoji
00 // Kodiranje podataka (DCS=0x00)
00 // Zadani ID poruke
00 // Duljina poruke (0 bajtova: Bez sadržaja)
Primjer 3: Zamjena postojeće poruke (PID=0x41)
0000001D // Duljina naredbe (29 bajtova)
00000004 // ID naredbe (SubmitSM)
00000003 // Redni broj
00 // Izvorni TON
00 // Izvorni NPI
736F7572636500 // Izvorna adresa ("source")
00 // Odredišni TON
00 // Odredišni NPI
36353433323100 // Odredišna adresa ("654321")
00 // ESM klasa
41 // Protokol ID (PID=0x41: Zamijeni)
00 // Zastavica prioriteta
00 // Vrijeme isporuke
00 // Valjanost
01 // Registrirana isporuka (potvrda zatražena)
00 // Zamijeni-ako-postoji
00 // Kodiranje podataka (DCS=0x00)
00 // Zadani ID poruke
07 // Duljina poruke (7 septeta)
C8329BFD06DDDF72 // Sadržaj ("Novi OTP: 1234")
Interakcija PID-a s TP-Protocol-Identifier (GSM)
U GSM mrežama, PID se preslikava na TP-Protocol-Identifier u SMS TPDU. Ključna preslikavanja uključuju:
- 0x41: Naredba zamjene (GSM 03.40 TP-PID=0x41)
- 0x42: Govorna pošta (GSM 03.40 TP-PID=0x42)
Uobičajene zamke
- Korištenje rezerviranih PID vrijednosti (npr. 0x7F) bez podrške SMSC-a.
- Neusklađenost PID-a i DCS-a (npr. korištenje UCS2 kodiranja za SIM podatke).
- Zanemarivanje mrežno specifičnih pravila (npr. PID=0x40 može zahtijevati posebnu konfiguraciju SMSC-a).
Zaključak
PID polje je ključno za napredno usmjeravanje i rukovanje SMS-ovima. Iako je često postavljeno na 0x00 (zadano), njegove specijalizirane vrijednosti omogućuju značajke poput zamjene poruka, ažuriranja SIM-a i obavijesti o govornoj pošti. Uvijek testirajte PID konfiguracije sa svojim SMSC-om i referirajte se na GSM 03.40 ili SMPP v5.0 specifikacije za precizno ponašanje.