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 SMS | Velikost v bajtech | Pozná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
- Jak nakonfigurovat pole Typ služby SMPP
- Jak nakonfigurovat pole Telefonní čísla SMPP
- Jak nakonfigurovat pole Třída ESM SMPP
- Jak nakonfigurovat pole PID SMPP
- Jak nakonfigurovat pole Priorita SMPP
- Jak nakonfigurovat pole Naplánovaný čas SMPP
- Jak nakonfigurovat pole Platnost SMPP
- Jak nakonfigurovat pole Registrované doručení SMPP
- Jak nakonfigurovat pole Nahradit pokud existuje SMPP
- Jak nakonfigurovat pole sm_default_msg_id
- Jak nakonfigurovat pole DCS SMPP
- Jak vypočítat pole Délka SM SMPP
- Jak vložit data do pole SMPP SM