Ako vypočítať pole SM Length v SMPP

V protokole SMPP pole sm_length určuje dĺžku obsahu krátkej správy v bytoch, ktorý sa nachádza v poli short_message PDU, ako sú submit_sm, deliver_sm a data_sm.

Detaily poľa

  • Názov poľa: sm_length
  • Veľkosť: 1 bajt (nezáporné celé číslo)
  • Rozsah: 0–254 (maximálne povolené v SMPP 3.4)
  • Umiestnenie: Priamo pred pole short_message
  • Účel: Určuje počet bajtov v náplni short_message

Kľúčové správanie

Hodnota sm_length závisí od použitého kódovania:

KódovanieZnaky na SMSVeľkosť v bytochPoznámky
GSM 7-bit Až 160 Až 140 Zbalené bity; skutočná veľkosť v bytoch závisí od obsahu
UCS2 Až 70 2 × počet znakov Každý znak má 2 bajty
8-bit binárne N/A Až 140 Surová dĺžka v bytoch

Príklad: Správa v ASCII

Jednoduchá správa s predvoleným 7-bitovým kódovaním:

Text: "Hello"
Kódovanie: GSM 7-bit
Zbalené bajty (Hex): C8 32 9B FD 06
Dĺžka v bytoch: 5
sm_length: 5

Príklad: Správa kódovaná v UCS2

Unicode správa s kódovaním UCS2 (data_coding = 0x08):

Text: "Hi"
UCS2 Hex: 0048 0069
Bajtové pole: 00 48 00 69
Dĺžka v bytoch: 4
sm_length: 4

Príklad PDU v SMPP (submit_sm)

0000003B  // Dĺžka príkazu (59 bajtov)
00000004  // ID príkazu: submit_sm
00000000  // Stav príkazu
00000001  // Poradové číslo
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

Dôležité poznámky

  • sm_length sa vzťahuje na dĺžku v bytoch, nie na počet znakov.
  • Ak je obsah správy rozdelený do viacerých častí (zreťazenie), každá časť má svoje vlastné sm_length.
  • Nezamieňajte sm_length s celkovou dĺžkou správy (dĺžka PDU).

Rozdelenie a zreťazenie správ

Keď správa prekročí maximálnu veľkosť náplne, je rozdelená na časti pomocou UDH (User Data Header). V takýchto prípadoch sm_length zahŕňa aj UDH:

Príklad: UDH (6 bajtov) + 67 bajtov UCS2 = 73
sm_length = 73

Záver

Pole sm_length je kritické v SMPP komunikácii, pretože definuje, koľko bajtov má SMSC prečítať pre skutočný obsah správy. Pochopenie toho, ako kódovanie ovplyvňuje toto pole, zaisťuje presné a úspešné doručenie správ.

Referencie

  • Špecifikácia SMPP 3.4
  • Znaková sada GSM 03.38
  • Kódovanie Unicode UCS2

More information