Az SMPP SM Length mező kiszámítása
Az SMPP protokollban a sm_length
mező a short_message
mezőben található rövid üzenet tartalmának hosszát adja meg bájtban, olyan PDU-kban, mint a submit_sm
, deliver_sm
és data_sm
.
Mező részletei
- Mező neve: sm_length
- Méret: 1 bájt (előjel nélküli egész szám)
- Tartomány: 0–254 (az SMPP 3.4 által megengedett maximum)
- Hely: Közvetlenül a
short_message
mező előtt - Cél: A
short_message
adattartalom bájtjainak számát jelzi
Kulcsfontosságú viselkedés
A sm_length
értéke a használt kódolástól függ:
Kódolás | Karakterek száma SMS-enként | Bájt méret | Megjegyzések |
---|---|---|---|
GSM 7-bit | Legfeljebb 160 | Legfeljebb 140 | Csomagolt bitek; a tényleges bájtméret a tartalomtól függ |
UCS2 | Legfeljebb 70 | 2 × a karakterek száma | Minden karakter 2 bájt |
8-bit bináris | N/A | Legfeljebb 140 | Nyers bájthossz |
Példa: ASCII üzenet
Egy egyszerű üzenet alapértelmezett 7 bites kódolással:
Szöveg: "Hello" Kódolás: GSM 7-bit Csomagolt bájtok (Hex): C8 32 9B FD 06 Bájthossz: 5 sm_length: 5
Példa: UCS2 kódolt üzenet
Egy Unicode üzenet UCS2 kódolással (data_coding = 0x08):
Szöveg: "Hi" UCS2 Hex: 0048 0069 Bájt tömb: 00 48 00 69 Bájthossz: 4 sm_length: 4
SMPP PDU példa (submit_sm)
0000003B // Parancs hossza (59 bájt) 00000004 // Parancs azonosító: submit_sm 00000000 // Parancs állapot 00000001 // Sorszám 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" UCS2-ben
Fontos megjegyzések
- A
sm_length
a bájthosszra utal, nem a karakterek számára. - Ha az üzenet tartalma több üzenetre van felosztva (összefűzés), minden résznek saját
sm_length
értéke van. - Ne keverjük össze a
sm_length
értékét a teljes üzenet hosszával (PDU hossz).
Üzenet felosztás és összefűzés
Ha egy üzenet meghaladja a maximális adattartalom méretét, akkor UDH (User Data Header) segítségével részekre osztják. Az ilyen esetekben a sm_length
magában foglalja az UDH-t is:
Példa: UDH (6 bájt) + 67 UCS2 bájt = 73 sm_length = 73
Összegzés
A sm_length
mező kritikus fontosságú az SMPP üzenetküldésben, mert meghatározza, hogy az SMSC hány bájtot olvasson az üzenet törzséhez. A kódolás hatásának megértése biztosítja a pontos és sikeres üzenetkézbesítést.
Hivatkozások
- SMPP 3.4 specifikáció
- GSM 03.38 karakterkészlet
- Unicode UCS2 kódolás
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field