Jak umieścić dane w polu SM SMPP
W SMPP (Short Message Peer-to-Peer), ładunek wiadomości krótkiej (SM) to rzeczywisty tekst (lub dane binarne) przesyłanej wiadomości SMS. Aby zapewnić prawidłową interpretację tej zawartości, pole data_coding w PDU odgrywa kluczową rolę, wskazując format kodowania wiadomości.
Typowe kodowania SMPP
Pole data_coding
ma rozmiar 1 bajta i informuje SMSC, jak interpretować ładunek wiadomości.
Hex | Dziesiętny | Kodowanie | Opis |
---|---|---|---|
0x00 | 0 | GSM 7-bit domyślne | Standardowy zestaw znaków SMS |
0x01 | 1 | ASCII | 8-bitowe ASCII (podzbiór Latin-1) |
0x03 | 3 | Latin-1 (ISO 8859-1) | Zachodnioeuropejski zestaw znaków |
0x08 | 8 | UCS2 | Unicode (16-bit, big-endian) |
0x04 | 4 | Binarny | Surowe dane binarne 8-bitowe |
Przykłady zakodowanych wiadomości
1. GSM 7-bit (data_coding = 0x00)
Standardowe kodowanie SMS. Efektywne (do 160 znaków w jednej wiadomości).
Tekst: "Hello" GSM 7-bit Packed: C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
Używane dla skryptów niełacińskich (np. arabski, chiński, emoji). Obsługuje 70 znaków na wiadomość.
Tekst: "مرحبا" UCS2 Hex: 0645 0631 062D 0628 0627 Bajty (hex): 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
Tylko podstawowe znaki łacińskie, mniej efektywne niż GSM 7-bit.
Tekst: "Hello" ASCII Hex: 48 65 6C 6C 6F
Przykład PDU SMPP z kodowaniem UCS2
Oto PDU submit_sm
SMPP przenoszące wiadomość Unicode:
0000004B // Długość polecenia (75 bajtów) 00000004 // ID polecenia (submit_sm) 00000000 // Status polecenia 00000001 // Numer sekwencji 74657374 // service_type: "test" 01 // source_addr_ton: Międzynarodowy 01 // source_addr_npi: ISDN 31323334 // source_addr: "1234" (ASCII) 00 01 // dest_addr_ton 01 // dest_addr_npi 35363738 // destination_addr: "5678" 00 00 // esm_class 00 // protocol_id 00 // priority_flag 00 // schedule_delivery_time 00 // validity_period 00 // registered_delivery 00 // replace_if_present_flag 08 // data_coding: UCS2 00 // sm_default_msg_id 0A // sm_length: 10 bajtów 06450631 // Wiadomość w UCS2 (np. "مر") 062D0628
Kodowanie i konkatenacja
Długie wiadomości są dzielone na części przy użyciu UDH (User Data Header). Zmniejsza to maksymalny rozmiar ładunku:
- GSM 7-bit: 160 → 153 znaków na część
- UCS2: 70 → 67 znaków na część
Przykład UDH dla części wiadomości:
05 00 03 CC 02 01 // 05: długość nagłówka // 00 03: IEI konkatenacji // CC: Referencja wiadomości // 02: całkowita liczba części // 01: bieżąca część
Podsumowanie
SMPP zapewnia elastyczne opcje kodowania poprzez pole data_coding
. Właściwe kodowanie zapewnia kompatybilność w globalnych sieciach, szczególnie przy obsłudze tekstów wielojęzycznych lub danych binarnych. Programiści muszą dopasować typy kodowania do treści i oczekiwanych odbiorców, aby uniknąć uszkodzenia wiadomości.
Referencje
- Specyfikacja SMPP 3.4
- Zestaw znaków GSM 03.38
- Standard Unicode
More information
- Jak skonfigurować pole Typ usługi SMPP
- Jak skonfigurować pola numerów telefonów SMPP
- Jak skonfigurować pole klasy ESM SMPP
- Jak skonfigurować pole PID SMPP
- Jak skonfigurować pole priorytetu SMPP
- Jak skonfigurować pole zaplanowanego czasu SMPP
- Jak skonfigurować pole okresu ważności SMPP
- Jak skonfigurować pole zarejestrowanej dostawy SMPP
- Jak skonfigurować pole Zastąp jeśli obecne SMPP
- Jak skonfigurować pole sm_default_msg_id
- Jak skonfigurować pole DCS SMPP
- Jak obliczyć pole długości wiadomości SMPP
- Jak umieścić dane w polu SM SMPP