Kako staviti podatke u SMPP SM polje

U SMPP (Short Message Peer-to-Peer), sadržaj kratke poruke (SM) je stvarni tekst (ili binarni podaci) SMS poruke koja se prenosi. Kako 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 obavještava SMSC kako interpretirati sadržaj poruke.

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

Primjeri kodiranih poruka

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

Standardno SMS kodiranje. Učinkovito (do 160 znakova u jednoj poruci).

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

2. UCS2 (data_coding = 0x08)

Koristi se za nelatinske skripte (npr. arapski, kineski, emojije). Podržava 70 znakova 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čni znakovi, manje učinkovito od GSM 7-bit.

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

Primjer SMPP PDU s UCS2 kodiranjem

Evo SMPP submit_sm PDU-a koji prenosi Unicode poruku:

0000004B  // Duljina naredbe (75 bajtova)
00000004  // ID naredbe (submit_sm)
00000000  // Status naredbe
00000001  // Redni broj
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 dijele na dijelove koristeći UDH (User Data Header). Ovo smanjuje maksimalnu veličinu sadržaja:

  • GSM 7-bit: 160 → 153 znaka po dijelu
  • UCS2: 70 → 67 znakova po dijelu

Primjer UDH-a za dio poruke:

05 00 03 CC 02 01
// 05: duljina zaglavlja
// 00 03: IEI za spajanje
// CC: Referenca poruke
// 02: ukupno dijelova
// 01: trenutni dio

Sažetak

SMPP nudi fleksibilne opcije kodiranja kroz polje data_coding. Ispravno kodiranje osigurava kompatibilnost diljem globalnih mreža, posebno pri rukovanju višejezičnim tekstom ili binarnim podacima. Programeri moraju uskladiti vrste kodiranja sa sadržajem i očekivanim primateljima kako bi izbjegli oštećenje poruka.

Reference

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

More information