Porozumění poli SMPP PID

Co je pole SMPP PID?

Protokolový identifikátor (PID) v SMPP (Short Message Peer-to-Peer Protocol) je 1bajtové pole v rámci SMPP PDU (Protocol Data Units). Identifikuje protokol používaný zdrojovým systémem nebo poskytuje speciální instrukce pro zpracování zprávy. Pole PID je definováno v operacích submit_sm, deliver_sm a data_sm a je klíčové pro:

  • Specifikaci protokolů vyšších vrstev (např. X.400, Telnet)
  • Aktivaci speciálních typů zpráv (např. upozornění na hlasovou poštu)
  • Zpracování nahrazení zprávy (např. přepsání existujících zpráv)

Struktura PID a bitová maska

PID je bitová maska, kde specifické bity řídí chování protokolu. Jeho struktura odpovídá specifikacím GSM 03.40:

Bity Popis
7-5 Typ protokolu: Určuje protokol (např. GSM, Telex nebo SMS).
4-0 Instrukce/Příznaky: Speciální zpracování (např. nahrazení zprávy, hlasová pošta).

Klíčové hodnoty PID a jejich interpretace

PID (Hex) Binární Popis
0x00 00000000 Výchozí (žádný speciální protokol)
0x01 00000001 Telex (zastaralé)
0x03 00000011 X.400 (zastaralé)
0x40 01000000 Zpráva pro zpětné volání (zpracování SIM karty)
0x41 01000001 Nahrazení krátké zprávy (přepsání existující)
0x42 01000010 Upozornění na hlasovou poštu
0x7F 01111111 Rezervováno pro budoucí použití
Poznámka: Hodnoty jako 0x40–0x7F jsou specifické pro síť a mohou se lišit podle SMSC. Vždy ověřte u svého poskytovatele.

Případy použití a scénáře

1. Nahrazení zprávy (PID=0x41)

Používá se k přepsání existující zprávy uložené na zařízení příjemce. Běžné v systémech OTP (One-Time Password), kde nové heslo nahrazuje staré.

2. Upozornění na hlasovou poštu (PID=0x42)

Spouští vizuální/zvukové upozornění na zařízení příjemce pro novou hlasovou poštu. Tělo SMS je často prázdné, protože samotné PID je spouštěčem.

3. Stažení dat na SIM (PID=0x40)

Instruuje SIM kartu ke zpracování zprávy (např. aktualizace přednastavených nastavení).

Příklady SMPP PDU s PID

Příklad 1: Výchozí PID (0x00)

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000001  // Pořadové číslo
00        // Zdrojový TON
00        // Zdrojový NPI
736F7572636500  // Zdrojová adresa ("source")
00        // Cílový TON
00        // Cílový NPI
36353433323100  // Cílová adresa ("654321")
00        // Třída ESM
00        // Protokolový ID (PID=0x00)
00        // Příznak priority
00        // Čas plánovaného doručení
00        // Platnost
00        // Registrované doručení
00        // Nahradit-pokud-je-přítomno
00        // Schéma kódování dat (DCS=0x00)
00        // Výchozí ID zprávy SM
07        // Délka SM (7 septetů)
C8329BFD06DDDF72  // Datová část ("Hello!")
    

Příklad 2: Upozornění na hlasovou poštu (PID=0x42)

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000002  // Pořadové číslo
00        // Zdrojový TON
00        // Zdrojový NPI
736F7572636500  // Zdrojová adresa ("source")
00        // Cílový TON
00        // Cílový NPI
36353433323100  // Cílová adresa ("654321")
00        // Třída ESM
42        // Protokolový ID (PID=0x42: Hlasová pošta)
00        // Příznak priority
00        // Čas plánovaného doručení
00        // Platnost
00        // Registrované doručení
00        // Nahradit-pokud-je-přítomno
00        // Kódování dat (DCS=0x00)
00        // Výchozí ID zprávy SM
00        // Délka SM (0 bajtů: Žádná datová část)
    

Příklad 3: Nahrazení existující zprávy (PID=0x41)

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000003  // Pořadové číslo
00        // Zdrojový TON
00        // Zdrojový NPI
736F7572636500  // Zdrojová adresa ("source")
00        // Cílový TON
00        // Cílový NPI
36353433323100  // Cílová adresa ("654321")
00        // Třída ESM
41        // Protokolový ID (PID=0x41: Nahradit)
00        // Příznak priority
00        // Čas plánovaného doručení
00        // Platnost
01        // Registrované doručení (vyžádáno potvrzení)
00        // Nahradit-pokud-je-přítomno
00        // Kódování dat (DCS=0x00)
00        // Výchozí ID zprávy SM
07        // Délka SM (7 septetů)
C8329BFD06DDDF72  // Datová část ("Nové OTP: 1234")
    

Interakce PID s TP-Protocol-Identifier (GSM)

V sítích GSM se PID mapuje na TP-Protocol-Identifier v SMS TPDU. Klíčová mapování zahrnují:

  • 0x41: Příkaz nahradit (GSM 03.40 TP-PID=0x41)
  • 0x42: Hlasová pošta (GSM 03.40 TP-PID=0x42)

Běžné problémy

  • Použití rezervovaných hodnot PID (např. 0x7F) bez podpory SMSC.
  • Nesoulad PID a DCS (např. použití UCS2 kódování pro data SIM).
  • Ignorování pravidel specifických pro síť (např. PID=0x40 může vyžadovat speciální konfiguraci SMSC).

Závěr

Pole PID je nezbytné pro pokročilé směrování a zpracování SMS. I když je často nastaveno na 0x00 (výchozí), jeho specializované hodnoty umožňují funkce jako nahrazení zprávy, aktualizace SIM a upozornění na hlasovou poštu. Vždy testujte konfiguraci PID s vaším SMSC a pro přesné chování se řiďte specifikacemi GSM 03.40 nebo SMPP v5.0.

More information