Jak vypočítat pole SM Length v SMPP

V protokolu SMPP pole sm_length určuje délku obsahu krátké zprávy v bajtech, který je obsažen v poli short_message PDU, jako jsou submit_sm, deliver_sm a data_sm.

Podrobnosti pole

  • Název pole: sm_length
  • Velikost: 1 bajt (nezáporné celé číslo)
  • Rozsah: 0–254 (maximální povoleno SMPP 3.4)
  • Umístění: Přímo před polem short_message
  • Účel: Udává počet bajtů v obsahu short_message

Klíčové chování

Hodnota sm_length závisí na použité kodování:

KódováníZnaky na SMSVelikost v bajtechPoznámky
GSM 7-bit Až 160 Až 140 Zabalené bity; skutečná velikost závisí na obsahu
UCS2 Až 70 2 × počet znaků Každý znak má 2 bajty
8-bit binární N/A Až 140 Surová délka v bajtech

Příklad: ASCII zpráva

Jednoduchá zpráva s výchozím 7-bitovým kódováním:

Text: "Hello"
Kódování: GSM 7-bit
Zabalení bajtů (Hex): C8 32 9B FD 06
Délka v bajtech: 5
sm_length: 5

Příklad: UCS2 kódovaná zpráva

Unicode zpráva s kódováním UCS2 (data_coding = 0x08):

Text: "Hi"
UCS2 Hex: 0048 0069
Pole bajtů: 00 48 00 69
Délka v bajtech: 4
sm_length: 4

Příklad SMPP PDU (submit_sm)

0000003B  // Délka příkazu (59 bajtů)
00000004  // ID příkazu: submit_sm
00000000  // Stav příkazu
00000001  // Pořadové čí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 odkazuje na délku v bajtech, ne na počet znaků.
  • Pokud je obsah zprávy rozdělen do více zpráv (konkatenace), každá část má své vlastní sm_length.
  • Nepleťte si sm_length s celkovou délkou zprávy (délka PDU).

Dělení a spojování zpráv

Když zpráva překročí maximální velikost obsahu, je rozdělena na části pomocí UDH (User Data Header). V takových případech sm_length zahrnuje také UDH:

Příklad: UDH (6 bajtů) + 67 UCS2 bajtů = 73
sm_length = 73

Závěr

Pole sm_length je v SMPP zprávách klíčové, protože definuje, kolik bajtů by měl SMSC přečíst pro tělo zprávy. Porozumění tomu, jak kódování ovlivňuje toto pole, zajišťuje přesné a úspěšné doručení zprávy.

Reference

  • Specifikace SMPP 3.4
  • Znaková sada GSM 03.38
  • Kódování Unicode UCS2

More information