Kako izračunati SMPP SM Length polje

U SMPP protokolu, polje sm_length određuje dužinu 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čen ceo broj)
  • Opseg: 0–254 (maksimum dozvoljen u SMPP 3.4)
  • Lokacija: Neposredno ispred polja short_message
  • Svrha: Označava broj bajtova u short_message sadržaju

Ključno ponašanje

Vrednost sm_length zavisi od korišćenog kodiranja:

KodiranjeKaraktera po SMS-uVeličina u bajtovimaNapomene
GSM 7-bit Do 160 Do 140 Pakirani bitovi; stvarna veličina u bajtovima zavisi od sadržaja
UCS2 Do 70 2 × broj karaktera Svaki karakter je 2 bajta
8-bit binarno N/A Do 140 Sirova dužina u bajtovima

Primer: ASCII poruka

Jednostavna poruka koristeći podrazumevano 7-bitno kodiranje:

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

Primer: UCS2 kodirana poruka

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

Tekst: "Hi"
UCS2 Hex: 0048 0069
Bajt niz: 00 48 00 69
Dužina u bajtovima: 4
sm_length: 4

SMPP PDU primer (submit_sm)

0000003B  // Dužina komande (59 bajtova)
00000004  // ID komande: submit_sm
00000000  // Status komande
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 dužinu u bajtovima, ne na broj karaktera.
  • Ako je sadržaj poruke podeljen na više poruka (konkatenacija), svaki deo ima svoj sm_length.
  • Ne mešati sm_length sa ukupnom dužinom poruke (PDU dužina).

Podela i spajanje poruka

Kada poruka premašuje maksimalnu veličinu sadržaja, deli se na delove koristeći UDH (User Data Header). sm_length u takvim slučajevima uključuje i UDH:

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

Zaključak

Polje sm_length je ključno u SMPP porukama jer definiše koliko bajtova SMSC treba da pročita za stvarni sadržaj poruke. Razumevanje kako kodiranje utiče na ovo polje obezbeđuje tačnu i uspešnu isporuku poruka.

Reference

  • SMPP 3.4 Specifikacija
  • GSM 03.38 Skup karaktera
  • Unikod UCS2 Kodiranje

More information