Cum să configurezi câmpul ESM Class în SMPP
Setări ESM class în Ozeki SMS Gateway
Ozeki SMS Gateway îți permite să configurezi manual câmpul ESM class (Figura 1)
Ce este câmpul ESM Class?
Extended Service Message (ESM) Class în SMPP este un câmp de 1 octet în PDU-urile SMPP care controlează funcții avansate de manipulare a mesajelor.
Este utilizat în operațiunile submit_sm
, deliver_sm
și data_sm
pentru a specifica:
- Tipuri de mesaje (de ex., SMS, confirmare de livrare)
- Comportamentul confirmărilor de livrare
- Prezența UDH (User Data Header)
- Indicatori de prioritate și rutare
Structura și masca de biți a ESM Class
ESM class este o mască de biți în care fiecare bit sau grup de biți activează funcții specifice:
Biți | Descriere |
---|---|
7 | Mod de mesagerie: 0 = Implicit, 1 = Datagramă |
6 | Tip de mesaj: 0 = Normal, 1 = Confirmare de livrare |
5 | Indicator UDHI: 1 = UDH prezent în payload |
4 | Cale de răspuns: 1 = Cerută cale de răspuns |
3-2 | Prioritate mesaj (00 = Normală, 01 = Interactivă, 10 = Urgentă, 11 = De urgență) |
1-0 | Rezervat |
Valori comune ale ESM Class
ESM (Hex) | Binar | Descriere |
---|---|---|
0x00 | 00000000 | Implicit (fără manipulare specială) |
0x04 | 00000100 | Flag UDHI setat (UDH prezent) |
0x08 | 00001000 | Cale de răspuns cerută |
0x20 | 00100000 | Confirmare de livrare (bit 6 = 1) |
0x30 | 00110000 | Prioritate urgentă + confirmare de livrare |
0x60 | 01100000 | Mod datagramă + confirmare de livrare |
Cazuri de utilizare cheie
1. SMS concatenat (Flag UDHI)
Când trimiți mesaje multiparte, setează bitul 5 (UDHI=1) și include un User Data Header (UDH) în payload. Exemplu pentru un mesaj în 3 părți:
ESM Class: 0x40 (binary 01000000: UDHI activat) Payload: 05 00 03 02 01 // UDH (5 bytes: IEI=00, IEDL=03, partea 1 din 2) C8329BFD06 // Payload GSM-7 ("Bună")
2. Cereri de confirmare de livrare
Setează bitul 6 (0x20) pentru a cere o confirmare de livrare. Adesea combinat cu câmpul registered_delivery
:
ESM Class: 0x20 (binary 00100000) registered_delivery: 0x01 (cerere confirmare)
3. Mesagerie prioritară
Folosește biții 3-2 pentru a prioritiza mesajele. Exemplu pentru prioritate urgentă:
ESM Class: 0x10 (binary 00010000: Prioritate urgentă)
Exemple de PDU-uri SMPP
Exemplul 1: SMS de bază (ESM=0x00)
0000001D // Lungime comandă (29 bytes) 00000004 // ID comandă (SubmitSM) 00000001 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Destinație TON 00 // Destinație NPI 36353433323100 // Adresă destinație ("654321") 00 // ESM Class (0x00: Implicit) 00 // Protocol ID (PID) 00 // Prioritate 00 // Programare timp livrare 00 // Perioadă de valabilitate 00 // Livrare înregistrată 00 // Înlocuire-dacă-prezent 00 // Codare date (DCS=0x00) 00 // ID mesaj implicit SM 07 // Lungime SM (7 septeți) C8329BFD06DDDF72 // Payload ("Bună!")
Exemplul 2: SMS concatenat (ESM=0x40)
00000025 // Lungime comandă (37 bytes) 00000004 // ID comandă (SubmitSM) 00000002 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Destinație TON 00 // Destinație NPI 36353433323100 // Adresă destinație ("654321") 40 // ESM Class (0x40: UDHI activat) 00 // Protocol ID (PID) 00 // Prioritate 00 // Programare timp livrare 00 // Perioadă de valabilitate 00 // Livrare înregistrată 00 // Înlocuire-dacă-prezent 00 // Codare date (DCS=0x00) 00 // ID mesaj implicit SM 0C // Lungime SM (12 bytes) 0500030201C8329BFD06DDDF72 // UDH + "Bună" (Partea 1/2)
Exemplul 3: Confirmare de livrare (ESM=0x20)
0000001D // Lungime comandă (29 bytes) 00000004 // ID comandă (SubmitSM) 00000003 // Număr de secvență 00 // Sursă TON 00 // Sursă NPI 736F7572636500 // Adresă sursă ("source") 00 // Destinație TON 00 // Destinație NPI 36353433323100 // Adresă destinație ("654321") 20 // ESM Class (0x20: Confirmare de livrare) 00 // Protocol ID (PID) 00 // Prioritate 00 // Programare timp livrare 00 // Perioadă de valabilitate 01 // Livrare înregistrată (cerere confirmare) 00 // Înlocuire-dacă-prezent 00 // Codare date (DCS=0x00) 00 // ID mesaj implicit SM 07 // Lungime SM (7 septeți) C8329BFD06DDDF72 // Payload ("Bună!")
Interacțiuni cu alte câmpuri
- UDHI (ESM) + DCS: Dacă UDHI este setat, asigură-te că DCS suportă UDH (de ex., GSM-7 sau 8-bit).
- ESM Class + registered_delivery: Folosește ambele pentru a cere explicit confirmări de livrare.
- Biți de prioritate + Flag de prioritate: Unele SMSC-uri prioritizează mesajele pe baza biților ESM în locul câmpului separat de prioritate.
Capcane comune
- Setarea UDHI fără a include un User Data Header valid.
- Folosirea flagurilor de confirmare de livrare (ESM=0x20) fără a seta
registered_delivery
. - Neconcordanța biților de prioritate ESM cu câmpul separat
priority_flag
.
Concluzie
Clasa ESM este un instrument puternic pentru controlul comportamentului mesajelor în SMPP. Design-ul său bazat pe mască de biți permite funcții precum concatenarea, confirmările de primire și prioritizarea. Verificați întotdeauna suportul SMSC pentru flag-uri avansate și testați configurațiile în detaliu. Pentru detalii autorizate, consultați specificația SMPP v3.4 sau v5.0.
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