Kako postaviti podatke u SMPP SM polje

U SMPP (Short Message Peer-to-Peer), Short Message (SM) sadržaj je stvarni tekst (ili binarni podaci) SMS poruke koja se prenosi. Da bi se osigurala ispravna interpretacija ovog sadržaja, polje data_coding u PDU igra ključnu ulogu jer označava format kodiranja poruke.

Uobičajena SMPP kodiranja

Polje data_coding je 1 bajt i obaveštava SMSC kako da interpretira sadržaj poruke.

HexDecimalKodiranjeOpis
0x000GSM 7-bit podrazumevanoStandardni SMS skup karaktera
0x011ASCII8-bit ASCII (Latin-1 podskup)
0x033Latin-1 (ISO 8859-1)Zapadnoevropski skup karaktera
0x088UCS2Unicode (16-bit, big-endian)
0x044BinarnoNeobrađeni 8-bit binarni podaci

Primeri kodiranih poruka

1. GSM 7-bit (data_coding = 0x00)

Standardno SMS kodiranje. Efikasno (do 160 karaktera u jednoj poruci).

Tekst: "Hello"
GSM 7-bit Packed: C8 32 9B FD 06

2. UCS2 (data_coding = 0x08)

Koristi se za ne-latinučke skripte (npr. arapski, kineski, emoji). Podržava 70 karaktera po poruci.

Tekst: "مرحبا"
UCS2 Hex: 0645 0631 062D 0628 0627
Bajtovi (hex): 06 45 06 31 06 2D 06 28 06 27

3. ASCII (data_coding = 0x01)

Samo osnovni latinički karakteri, manje efikasno u pogledu prostora od GSM 7-bit.

Tekst: "Hello"
ASCII Hex: 48 65 6C 6C 6F

SMPP PDU primer sa UCS2 kodiranjem

Evo SMPP submit_sm PDU-a koji nosi Unicode poruku:

0000004B  // Dužina komande (75 bajtova)
00000004  // ID komande (submit_sm)
00000000  // Status komande
00000001  // Redni broj sekvence
74657374  // service_type: "test"
01        // source_addr_ton: Međunarodni
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 bajtova
06450631  // Poruka u UCS2 (npr. "مر")
062D0628

Kodiranje i spajanje

Duge poruke se dele na delove koristeći UDH (User Data Header). Ovo smanjuje maksimalnu veličinu sadržaja:

  • GSM 7-bit: 160 → 153 karaktera po delu
  • UCS2: 70 → 67 karaktera po delu

Primer UDH-a za deo poruke:

05 00 03 CC 02 01
// 05: dužina zaglavlja
// 00 03: IEI za spajanje
// CC: Referenca poruke
// 02: ukupno delova
// 01: trenutni deo

Sažetak

SMPP pruža fleksibilne opcije kodiranja kroz polje data_coding. Ispravno kodiranje osigurava kompatibilnost širom globalnih mreža, posebno kada se radi sa višejezičkim tekstom ili binarnim podacima. Programeri moraju uskladiti tipove kodiranja sa sadržajem i očekivanim primalacima kako bi izbegli oštećenje poruka.

Reference

  • SMPP 3.4 Specifikacija
  • GSM 03.38 Skup karaktera
  • Unicode Standard

More information