Kako izračunati polje SMPP SM Length

V protokolu SMPP polje sm_length določa dolžino v bajtih vsebine kratkega sporočila, ki je vključena v polje short_message PDU-jev, kot so submit_sm, deliver_sm in data_sm.

Podrobnosti polja

  • Ime polja: sm_length
  • Velikost: 1 bajt (neznano število)
  • Obseg: 0–254 (največ, kar dovoljuje SMPP 3.4)
  • Lokacija: Neposredno pred poljem short_message
  • Namen: Označuje število bajtov v nosilcu short_message

Ključno vedenje

Vrednost sm_length je odvisna od uporabljenega kodiranja:

KodiranjeZnakov na SMSVelikost v bajtihOpombe
GSM 7-bit Do 160 Do 140 Pakirani biti; dejanska velikost v bajtih je odvisna od vsebine
UCS2 Do 70 2 × število znakov Vsak znak je 2 bajta
8-bitno binarno N/A Do 140 Surova dolžina v bajtih

Primer: Sporočilo v ASCII

Preprost sporočil z uporabo privzetega 7-bitnega kodiranja:

Besedilo: "Hello"
Kodiranje: GSM 7-bit
Pakirani bajti (Hex): C8 32 9B FD 06
Dolžina v bajtih: 5
sm_length: 5

Primer: Sporočilo kodirano z UCS2

Unicode sporočilo z uporabo kodiranja UCS2 (data_coding = 0x08):

Besedilo: "Hi"
UCS2 Hex: 0048 0069
Bajtni niz: 00 48 00 69
Dolžina v bajtih: 4
sm_length: 4

Primer SMPP PDU (submit_sm)

0000003B  // Dolžina ukaza (59 bajtov)
00000004  // ID ukaza: submit_sm
00000000  // Status ukaza
00000001  // Zaporedna številka
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" v UCS2

Pomembne opombe

  • sm_length se nanaša na dolžino v bajtih, ne na število znakov.
  • Če je vsebina sporočila razdeljena na več sporočil (združevanje), ima vsak del svoj sm_length.
  • Ne zamenjujte sm_length s skupno dolžino sporočila (dolžina PDU).

Razdeljevanje in združevanje sporočil

Ko sporočilo presega največjo dovoljeno velikost nosilca, se razdeli na dele z uporabo UDH (User Data Header). V takih primerih sm_length vključuje tudi UDH:

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

Zaključek

Polje sm_length je ključnega pomena pri sporočilih SMPP, saj določa, koliko bajtov naj SMSC prebere za dejansko telo sporočila. Razumevanje, kako kodiranje vpliva na to polje, zagotavlja natančno in uspešno dostavo sporočil.

Reference

  • Specifikacija SMPP 3.4
  • Nabor znakov GSM 03.38
  • Kodiranje Unicode UCS2

More information