Razumevanje SMPP PID polja

Šta 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). Ono identifikuje protokol korišćen od strane izvornog sistema ili daje posebne instrukcije za rukovanje porukama. PID polje je definisano u submit_sm, deliver_sm, i data_sm operacijama i kritično je za:

  • Određivanje protokola višeg sloja (npr. X.400, Telnet)
  • Pokretanje posebnih tipova poruka (npr. obaveštenja o govornoj pošti)
  • Rukovanje zamjenom poruka (npr. prepisivanje postojećih poruka)

Struktura PID-a i bitmask

PID je bitmask gde specifični bitovi kontrolišu 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 Instrukcije/Flagovi: Posebno rukovanje (npr. zamena poruke, govorna pošta).

Ključne PID vrednosti i interpretacija

PID (Hex) Binarno Opis
0x00 00000000 Podrazumevano (bez posebnog protokola)
0x01 00000001 Telex (zastarelo)
0x03 00000011 X.400 (zastarelo)
0x40 01000000 Poruka povratnog poziva (rukovanje SIM karticom)
0x41 01000001 Zamena kratke poruke (prepisivanje postojeće)
0x42 01000010 Obaveštenje o govornoj pošti
0x7F 01111111 Rezervisano za buduću upotrebu
Napomena: Vrednosti poput 0x40–0x7F su specifične za mrežu i mogu varirati u zavisnosti od SMSC. Uvek proverite sa svojim provajderom.

Primeri upotrebe i scenariji

1. Zamena poruke (PID=0x41)

Koristi se za prepisivanje postojeće poruke sačuvane na uređaju primaoca. Uobičajeno u OTP (One-Time Password) sistemima gde novi password zamenjuje stari.

2. Obaveštenje o govornoj pošti (PID=0x42)

Pokreće vizuelni/zvučni alarm na uređaju primaoca za novu govornu poštu. Telo SMS-a je često prazno, jer sam PID je okidač.

3. Preuzimanje podataka na SIM (PID=0x40)

Instruiše SIM karticu da obradi poruku (npr. ažuriranje unapred konfigurisanih postavki).

Primeri SMPP PDU sa PID-om

Primer 1: Podrazumevani PID (0x00)

0000001D  // Dužina komande (29 bajtova)
00000004  // ID komande (SubmitSM)
00000001  // Redni broj sekvence
00        // Source TON
00        // Source NPI
736F7572636500  // Source Address ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Destination Address ("654321")
00        // ESM Class
00        // Protocol ID (PID=0x00)
00        // Priority Flag
00        // Schedule Delivery Time
00        // Validity Period
00        // Registered Delivery
00        // Replace-if-Present
00        // Data Coding Scheme (DCS=0x00)
00        // SM Default Message ID
07        // SM Length (7 septeta)
C8329BFD06DDDF72  // Payload ("Zdravo!")

Primer 2: Obaveštenje o govornoj pošti (PID=0x42)

0000001D  // Dužina komande (29 bajtova)
00000004  // ID komande (SubmitSM)
00000002  // Redni broj sekvence
00        // Source TON
00        // Source NPI
736F7572636500  // Source Address ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Destination Address ("654321")
00        // ESM Class
42        // Protocol ID (PID=0x42: Govorna pošta)
00        // Priority Flag
00        // Schedule Delivery Time
00        // Validity Period
00        // Registered Delivery
00        // Replace-if-Present
00        // Data Coding (DCS=0x00)
00        // SM Default Message ID
00        // SM Length (0 bajtova: Bez sadržaja)

Primer 3: Zamena postojeće poruke (PID=0x41)

0000001D  // Dužina komande (29 bajtova)
00000004  // ID komande (SubmitSM)
00000003  // Redni broj sekvence
00        // Source TON
00        // Source NPI
736F7572636500  // Source Address ("source")
00        // Dest TON
00        // Dest NPI
36353433323100  // Destination Address ("654321")
00        // ESM Class
41        // Protocol ID (PID=0x41: Zamena)
00        // Priority Flag
00        // Schedule Delivery Time
00        // Validity Period
01        // Registered Delivery (zahtevan prijem)
00        // Replace-if-Present
00        // Data Coding (DCS=0x00)
00        // SM Default Message ID
07        // SM Length (7 septeta)
C8329BFD06DDDF72  // Payload ("Novi OTP: 1234")

Interakcija PID-a sa TP-Protocol-Identifier (GSM)

U GSM mrežama, PID se mapira na TP-Protocol-Identifier u SMS TPDU. Ključna mapiranja uključuju:

  • 0x41: Komanda zamene (GSM 03.40 TP-PID=0x41)
  • 0x42: Govorna pošta (GSM 03.40 TP-PID=0x42)

Uobičajene greške

  • Korišćenje rezervisanih PID vrednosti (npr. 0x7F) bez podrške SMSC.
  • Neusklađenost PID-a i DCS (npr. korišćenje UCS2 kodiranja za SIM podatke).
  • Ignorisanje mrežno specifičnih pravila (npr. PID=0x40 može zahtevati posebnu konfiguraciju SMSC).

Zaključak

PID polje je ključno za napredno rutiranje i rukovanje SMS porukama. Iako je često postavljeno na 0x00 (podrazumevano), njegove specijalizovane vrednosti omogućavaju funkcije poput zamene poruka, ažuriranja SIM-a i obaveštenja o govornoj pošti. Uvek testirajte PID konfiguracije sa svojim SMSC i konsultujte GSM 03.40 ili SMPP v5.0 specifikacije za precizno ponašanje.

More information