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)
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 |
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.
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.