Jak skonfigurować pole ESM Class w SMPP

Ustawienia klasy ESM w Ozeki SMS Gateway

Ozeki SMS Gateway umożliwia ręczną konfigurację pola klasy ESM (Rysunek 1)

Rysunek 1 - Ustawienie pola klasy ESM

Co to jest pole klasy ESM?

Rozszerzona klasa wiadomości usługowej (ESM) w SMPP to 1-bajtowe pole w PDU SMPP, które kontroluje zaawansowane funkcje obsługi wiadomości. Jest używane w operacjach submit_sm, deliver_sm i data_sm do określenia:

  • Typów wiadomości (np. SMS, potwierdzenie dostarczenia)
  • Zachowania potwierdzenia dostarczenia
  • Obecności nagłówka UDH (User Data Header)
  • Priorytetu wiadomości i flag routingu

Struktura klasy ESM i maska bitowa

Klasa ESM to maska bitowa, w której każdy bit lub grupa bitów aktywuje określone funkcje:

Bity Opis
7 Tryb wiadomości: 0 = Domyślny, 1 = Datagram
6 Typ wiadomości: 0 = Normalny, 1 = Potwierdzenie dostarczenia
5 Wskaźnik UDHI: 1 = UDH obecny w ładunku
4 Ścieżka odpowiedzi: 1 = Żądana ścieżka odpowiedzi
3-2 Priorytet wiadomości (00 = Normalny, 01 = Interaktywny, 10 = Pilny, 11 = Nagły)
1-0 Zarezerwowane

Typowe wartości klasy ESM

ESM (Hex) Binarnie Opis
0x00 00000000 Domyślne (brak specjalnej obsługi)
0x04 00000100 Flaga UDHI ustawiona (UDH obecny)
0x08 00001000 Żądana ścieżka odpowiedzi
0x20 00100000 Potwierdzenie dostarczenia (bit 6 = 1)
0x30 00110000 Priorytet pilny + potwierdzenie dostarczenia
0x60 01100000 Tryb datagramu + potwierdzenie dostarczenia
Uwaga: Wiele SMSC ignoruje zarezerwowane bity (1-0). Poziomy priorytetu (bity 3-2) zależą od sieci.

Kluczowe przypadki użycia

1. Złożone SMS-y (flaga UDHI)

Podczas wysyłania wiadomości wieloczęściowych ustaw bit 5 (UDHI=1) i dołącz nagłówek danych użytkownika (UDH) do ładunku. Przykład dla wiadomości 3-częściowej:

Klasa ESM: 0x40 (binarnie 01000000: UDHI włączone)
Ładunek: 
05 00 03 02 01  // UDH (5 bajtów: IEI=00, IEDL=03, część 1 z 2)
C8329BFD06       // Ładunek GSM-7 ("Hello")

2. Żądania potwierdzenia dostarczenia

Ustaw bit 6 (0x20), aby zażądać potwierdzenia dostarczenia. Często łączone z polem registered_delivery:

Klasa ESM: 0x20 (binarnie 00100000)
registered_delivery: 0x01 (żądanie potwierdzenia)

3. Wiadomości priorytetowe

Użyj bitów 3-2, aby nadać priorytet wiadomościom. Przykład dla priorytetu pilnego:

Klasa ESM: 0x10 (binarnie 00010000: Priorytet pilny)

Przykładowe PDU SMPP

Przykład 1: Podstawowy SMS (ESM=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 (0x00: Domyślna)
00        // ID protokołu (PID)
00        // Priorytet
00        // Czas dostarczenia harmonogramu
00        // Okres ważności
00        // Zarejestrowana dostawa
00        // Zamień-jeśli-obecny
00        // Kodowanie danych (DCS=0x00)
00        // Domyślny ID wiadomości SM
07        // Długość SM (7 septetów)
C8329BFD06DDDF72  // Ładunek ("Hello!")

Przykład 2: Złożony SMS (ESM=0x40)

00000025  // Długość polecenia (37 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")
40        // Klasa ESM (0x40: UDHI włączone)
00        // ID protokołu (PID)
00        // Priorytet
00        // Czas dostarczenia harmonogramu
00        // Okres ważności
00        // Zarejestrowana dostawa
00        // Zamień-jeśli-obecny
00        // Kodowanie danych (DCS=0x00)
00        // Domyślny ID wiadomości SM
0C        // Długość SM (12 bajtów)
0500030201C8329BFD06DDDF72  // UDH + "Hello" (Część 1/2)

Przykład 3: Potwierdzenie dostarczenia (ESM=0x20)

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")
20        // Klasa ESM (0x20: Potwierdzenie dostarczenia)
00        // ID protokołu (PID)
00        // Priorytet
00        // Czas dostarczenia harmonogramu
00        // Okres ważności
01        // Zarejestrowana dostawa (żądanie potwierdzenia)
00        // Zamień-jeśli-obecny
00        // Kodowanie danych (DCS=0x00)
00        // Domyślny ID wiadomości SM
07        // Długość SM (7 septetów)
C8329BFD06DDDF72  // Ładunek ("Hello!")

Interakcje z innymi polami

  • UDHI (ESM) + DCS: Jeśli UDHI jest ustawione, upewnij się, że DCS obsługuje UDH (np. GSM-7 lub 8-bitowy).
  • Klasa ESM + registered_delivery: Użyj obu, aby wyraźnie zażądać potwierdzenia dostarczenia.
  • Bity priorytetu + flaga priorytetu: Niektóre SMSC ustalają priorytet wiadomości na podstawie bitów ESM zamiast osobnego pola priorytetu.

Typowe pułapki

  • Ustawienie UDHI bez dołączenia prawidłowego nagłówka danych użytkownika.
  • Używanie flag potwierdzenia dostarczenia (ESM=0x20) bez ustawienia registered_delivery.
  • Niezgodność bitów priorytetu ESM z osobnym polem priority_flag.
Podsumowanie

Klasa ESM to potężne narzędzie do kontrolowania zachowania wiadomości w SMPP. Jej projekt oparty na bitmasce umożliwia funkcje takie jak łączenie, potwierdzenia odbioru i priorytetyzację. Zawsze sprawdzaj wsparcie SMSC dla zaawansowanych flag i dokładnie testuj konfiguracje. W celu uzyskania autorytatywnych szczegółów, odwołaj się do specyfikacji SMPP w wersji 3.4 lub 5.0.

More information