Înțelegerea câmpului SMPP PID
Ce este câmpul SMPP PID?
Identificatorul de protocol (PID) în SMPP (Short Message Peer-to-Peer Protocol) este un câmp de 1 octet din cadrul PDU-urilor SMPP (Unități de Date de Protocol).
Acesta identifică protocolul utilizat de sistemul de origine sau oferă instrucțiuni speciale pentru gestionarea mesajelor. Câmpul PID este definit în operațiunile
submit_sm
, deliver_sm
și data_sm
și este critic pentru:
- Specificarea protocoalelor de nivel superior (de ex., X.400, Telnet)
- Declanșarea tipurilor speciale de mesaje (de ex., notificări de mesagerie vocală)
- Gestionarea înlocuirii mesajelor (de ex., suprascrierea mesajelor existente)
Structura PID și masca de biți
PID este o mască de biți în care anumiți biți controlează comportamentul protocolului. Structura sa este aliniată cu specificațiile GSM 03.40:
Biți | Descriere |
---|---|
7-5 | Tipul de protocol: Indică protocolul (de ex., GSM, Telex sau SMS). |
4-0 | Instrucțiuni/Steaguri: Gestionare specială (de ex., înlocuire mesaj, mesagerie vocală). |
Valori PID cheie și interpretarea lor
PID (Hex) | Binar | Descriere |
---|---|---|
0x00 | 00000000 | Implicit (fără protocol special) |
0x01 | 00000001 | Telex (învechit) |
0x03 | 00000011 | X.400 (învechit) |
0x40 | 01000000 | Mesaj de returnare apel (gestionare card SIM) |
0x41 | 01000001 | Înlocuire mesaj scurt (suprascriere mesaj existent) |
0x42 | 01000010 | Notificare mesagerie vocală |
0x7F | 01111111 | Rezervat pentru utilizare viitoare |
Cazuri de utilizare și scenarii
1. Înlocuire mesaj (PID=0x41)
Utilizat pentru a suprascrie un mesaj existent stocat pe dispozitivul destinatarului. Comun în sistemele OTP (One-Time Password) unde un nou parolă înlocuiește cea veche.
2. Notificare mesagerie vocală (PID=0x42)
Declanșează o alertă vizuală/audibilă pe dispozitivul destinatarului pentru o nouă mesagerie vocală. Corpul SMS-ului este adesea gol, deoarece PID-ul în sine este declanșatorul.
3. Descărcare date SIM (PID=0x40)
Instruiește cardul SIM să proceseze mesajul (de ex., actualizarea setărilor preconfigurate).
Exemple de PDU-uri SMPP cu PID
Exemplul 1: PID implicit (0x00)
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000001 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Adresă destinație ("654321") 00 // Clasă ESM 00 // ID protocol (PID=0x00) 00 // Steag prioritate 00 // Timp livrare programată 00 // Perioadă valabilitate 00 // Livrare înregistrată 00 // Înlocuire-dacă-prezent 00 // Schema de codare date (DCS=0x00) 00 // ID mesaj implicit SM 07 // Lungime SM (7 septeți) C8329BFD06DDDF72 // Conținut ("Bună!")
Exemplul 2: Notificare mesagerie vocală (PID=0x42)
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000002 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Adresă destinație ("654321") 00 // Clasă ESM 42 // ID protocol (PID=0x42: Mesagerie vocală) 00 // Steag prioritate 00 // Timp livrare programată 00 // Perioadă valabilitate 00 // Livrare înregistrată 00 // Înlocuire-dacă-prezent 00 // Codare date (DCS=0x00) 00 // ID mesaj implicit SM 00 // Lungime SM (0 octeți: Fără conținut)
Exemplul 3: Înlocuire mesaj existent (PID=0x41)
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000003 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Adresă destinație ("654321") 00 // Clasă ESM 41 // ID protocol (PID=0x41: Înlocuire) 00 // Steag prioritate 00 // Timp livrare programată 00 // Perioadă valabilitate 01 // Livrare înregistrată (confirmare solicitată) 00 // Înlocuire-dacă-prezent 00 // Codare date (DCS=0x00) 00 // ID mesaj implicit SM 07 // Lungime SM (7 septeți) C8329BFD06DDDF72 // Conținut ("OTP nou: 1234")
Interacțiunea PID cu TP-Protocol-Identifier (GSM)
În rețelele GSM, PID corespunde cu TP-Protocol-Identifier
din TPDU-urile SMS. Corespondențe cheie includ:
- 0x41: Comandă de înlocuire (GSM 03.40 TP-PID=0x41)
- 0x42: Mesagerie vocală (GSM 03.40 TP-PID=0x42)
Capcane comune
- Utilizarea valorilor PID rezervate (de ex., 0x7F) fără suport SMSC.
- Neconcordanță între PID și DCS (de ex., utilizarea codării UCS2 pentru date SIM).
- Ignorarea regulilor specifice rețelei (de ex., PID=0x40 poate necesita configurație specială SMSC).
Concluzie
Câmpul PID este esențial pentru rutarea și gestionarea avansată a SMS-urilor. Deși este adesea setat la 0x00 (implicit), valorile sale specializate permit funcții precum înlocuirea mesajelor, actualizările SIM și alertele de mesagerie vocală. Testați întotdeauna configurațiile PID cu SMSC-ul dvs. și consultați specificațiile GSM 03.40 sau SMPP v5.0 pentru comportament precis.
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field