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
Napomena: Vrijednosti poput 0x40–0x7F su specifične za mrežu i mogu varirati ovisno o SMSC. Uvijek provjerite sa svojim pružateljem usluga.

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.

More information