Kako izračunati SMPP SM Length polje

U SMPP protokolu, polje sm_length određuje duljinu u bajtima sadržaja kratke poruke koji se nalazi u polju short_message PDU-ova kao što su submit_sm, deliver_sm i data_sm.

Detalji polja

  • Naziv polja: sm_length
  • Veličina: 1 bajt (neoznačeni cijeli broj)
  • Raspon: 0–254 (maksimalno dopušteno u SMPP 3.4)
  • Lokacija: Neposredno ispred polja short_message
  • Svrha: Označava broj bajtova u teretu short_message

Ključno ponašanje

Vrijednost sm_length ovisi o korištenom kodiranju:

KodiranjeZnakova po SMS-uVeličina u bajtovimaNapomene
GSM 7-bit Do 160 Do 140 Pakirani bitovi; stvarna veličina u bajtovima ovisi o sadržaju
UCS2 Do 70 2 × broj znakova Svaki znak je 2 bajta
8-bitni binarni N/A Do 140 Sirova duljina u bajtovima

Primjer: ASCII poruka

Jednostavna poruka koristeći zadano 7-bitno kodiranje:

Tekst: "Hello"
Kodiranje: GSM 7-bit
Pakirani bajtovi (Hex): C8 32 9B FD 06
Duljina u bajtovima: 5
sm_length: 5

Primjer: UCS2 kodirana poruka

Unicode poruka koristeći UCS2 kodiranje (data_coding = 0x08):

Tekst: "Hi"
UCS2 Hex: 0048 0069
Bajtni niz: 00 48 00 69
Duljina u bajtovima: 4
sm_length: 4

Primjer SMPP PDU-a (submit_sm)

0000003B  // Duljina naredbe (59 bajtova)
00000004  // ID naredbe: submit_sm
00000000  // Status naredbe
00000001  // Redni broj
00        // service_type
01        // source_addr_ton
01        // source_addr_npi
31323334  // source_addr ("1234")
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
04        // sm_length: 4
00480069  // short_message: "Hi" u UCS2

Važne napomene

  • sm_length se odnosi na duljinu u bajtovima, a ne na broj znakova.
  • Ako je sadržaj poruke podijeljen na više poruka (spajanje), svaki dio ima svoj sm_length.
  • Ne brkajte sm_length s ukupnom duljinom poruke (PDU duljina).

Dijeljenje i spajanje poruka

Kada poruka premašuje maksimalnu veličinu tereta, dijeli se na dijelove koristeći UDH (User Data Header). sm_length u takvim slučajevima uključuje i UDH:

Primjer: UDH (6 bajtova) + 67 UCS2 bajtova = 73
sm_length = 73

Zaključak

Polje sm_length je ključno u SMPP porukama jer definira koliko bajtova SMSC treba pročitati za stvarno tijelo poruke. Razumijevanje kako kodiranje utječe na ovo polje osigurava točnu i uspješnu isporuku poruka.

Reference

  • SMPP 3.4 Specifikacija
  • GSM 03.38 Skup znakova
  • Unicode UCS2 Kodiranje

More information