Zrozumienie pola PID w SMPP
Co to jest pole PID w SMPP?
Identyfikator Protokołu (PID) w SMPP (Short Message Peer-to-Peer Protocol) to 1-bajtowe pole w ramach PDU (Protocol Data Units) SMPP.
Identyfikuje protokół używany przez system źródłowy lub dostarcza specjalne instrukcje dotyczące obsługi wiadomości. Pole PID jest zdefiniowane w operacjach
submit_sm
, deliver_sm
i data_sm
i jest kluczowe dla:
- Określania protokołów wyższych warstw (np. X.400, Telnet)
- Wyzwalania specjalnych typów wiadomości (np. powiadomień o poczcie głosowej)
- Obsługi zastępowania wiadomości (np. nadpisywanie istniejących wiadomości)
Struktura PID i maska bitowa
PID to maska bitowa, w której określone bity kontrolują zachowanie protokołu. Jego struktura jest zgodna ze specyfikacjami GSM 03.40:
Bity | Opis |
---|---|
7-5 | Typ protokołu: Wskazuje protokół (np. GSM, Telex lub SMS). |
4-0 | Instrukcje/Flagi: Specjalna obsługa (np. zastąpienie wiadomości, poczta głosowa). |
Kluczowe wartości PID i ich interpretacja
PID (Hex) | Binarnie | Opis |
---|---|---|
0x00 | 00000000 | Domyślne (brak specjalnego protokołu) |
0x01 | 00000001 | Telex (przestarzałe) |
0x03 | 00000011 | X.400 (przestarzałe) |
0x40 | 01000000 | Wiadomość zwrotnego połączenia (obsługa karty SIM) |
0x41 | 01000001 | Zastąpienie wiadomości SMS (nadpisanie istniejącej) |
0x42 | 01000010 | Powiadomienie o poczcie głosowej |
0x7F | 01111111 | Zarezerwowane do przyszłego użycia |
Przypadki użycia i scenariusze
1. Zastępowanie wiadomości (PID=0x41)
Używane do nadpisania istniejącej wiadomości przechowywanej na urządzeniu odbiorcy. Częste w systemach OTP (One-Time Password), gdzie nowe hasło zastępuje stare.
2. Powiadomienie o poczcie głosowej (PID=0x42)
Wyzwala wizualne/dźwiękowe powiadomienie na urządzeniu odbiorcy o nowej wiadomości głosowej. Treść SMS jest często pusta, ponieważ sam PID jest wyzwalaczem.
3. Pobieranie danych SIM (PID=0x40)
Instruuje kartę SIM do przetworzenia wiadomości (np. aktualizacja wstępnie skonfigurowanych ustawień).
Przykładowe PDU SMPP z PID
Przykład 1: Domyślny PID (0x00)
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000001 // Numer sekwencji 00 // Źródłowy TON 00 // Źródłowy NPI 736F7572636500 // Adres źródłowy ("source") 00 // Docelowy TON 00 // Docelowy NPI 36353433323100 // Adres docelowy ("654321") 00 // Klasa ESM 00 // Identyfikator protokołu (PID=0x00) 00 // Flaga priorytetu 00 // Czas dostarczenia 00 // Okres ważności 00 // Zarejestrowana dostawa 00 // Zastąpienie, jeśli obecne 00 // Schemat kodowania danych (DCS=0x00) 00 // Domyślny ID wiadomości SM 07 // Długość SM (7 septetów) C8329BFD06DDDF72 // Ładunek ("Hello!")
Przykład 2: Powiadomienie o poczcie głosowej (PID=0x42)
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000002 // Numer sekwencji 00 // Źródłowy TON 00 // Źródłowy NPI 736F7572636500 // Adres źródłowy ("source") 00 // Docelowy TON 00 // Docelowy NPI 36353433323100 // Adres docelowy ("654321") 00 // Klasa ESM 42 // Identyfikator protokołu (PID=0x42: Poczta głosowa) 00 // Flaga priorytetu 00 // Czas dostarczenia 00 // Okres ważności 00 // Zarejestrowana dostawa 00 // Zastąpienie, jeśli obecne 00 // Kodowanie danych (DCS=0x00) 00 // Domyślny ID wiadomości SM 00 // Długość SM (0 bajtów: Brak ładunku)
Przykład 3: Zastąpienie istniejącej wiadomości (PID=0x41)
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000003 // Numer sekwencji 00 // Źródłowy TON 00 // Źródłowy NPI 736F7572636500 // Adres źródłowy ("source") 00 // Docelowy TON 00 // Docelowy NPI 36353433323100 // Adres docelowy ("654321") 00 // Klasa ESM 41 // Identyfikator protokołu (PID=0x41: Zastąpienie) 00 // Flaga priorytetu 00 // Czas dostarczenia 00 // Okres ważności 01 // Zarejestrowana dostawa (żądanie potwierdzenia) 00 // Zastąpienie, jeśli obecne 00 // Kodowanie danych (DCS=0x00) 00 // Domyślny ID wiadomości SM 07 // Długość SM (7 septetów) C8329BFD06DDDF72 // Ładunek ("Nowe OTP: 1234")
Interakcja PID z TP-Protocol-Identifier (GSM)
W sieciach GSM PID jest mapowany na TP-Protocol-Identifier
w TPDU SMS. Kluczowe mapowania obejmują:
- 0x41: Polecenie zastąpienia (GSM 03.40 TP-PID=0x41)
- 0x42: Poczta głosowa (GSM 03.40 TP-PID=0x42)
Częste pułapki
- Używanie zarezerwowanych wartości PID (np. 0x7F) bez wsparcia SMSC.
- Niezgodność PID i DCS (np. użycie kodowania UCS2 dla danych SIM).
- Ignorowanie specyficznych dla sieci zasad (np. PID=0x40 może wymagać specjalnej konfiguracji SMSC).
Podsumowanie
Pole PID jest kluczowe dla zaawansowanego routingu i obsługi SMS. Choć często ustawiane na 0x00 (domyślne), jego specjalne wartości umożliwiają funkcje takie jak zastępowanie wiadomości, aktualizacje SIM i powiadomienia o poczcie głosowej. Zawsze testuj konfiguracje PID z SMSC i odwołuj się do specyfikacji GSM 03.40 lub SMPP v5.0 dla dokładnego zachowania.
More information
- Jak skonfigurować pole Typ usługi SMPP
- Jak skonfigurować pola numerów telefonów SMPP
- Jak skonfigurować pole klasy ESM SMPP
- Jak skonfigurować pole PID SMPP
- Jak skonfigurować pole priorytetu SMPP
- Jak skonfigurować pole zaplanowanego czasu SMPP
- Jak skonfigurować pole okresu ważności SMPP
- Jak skonfigurować pole zarejestrowanej dostawy SMPP
- Jak skonfigurować pole Zastąp jeśli obecne SMPP
- Jak skonfigurować pole sm_default_msg_id
- Jak skonfigurować pole DCS SMPP
- Jak obliczyć pole długości wiadomości SMPP
- Jak umieścić dane w polu SM SMPP