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)

Figura 1 - Setarea câmpului ESM class

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
Notă: Multe SMSC-uri ignoră biții rezervați (1-0). Nivelurile de prioritate (biții 3-2) depind de rețea.

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