Jak obliczyć pole SM Length w SMPP
W protokole SMPP pole sm_length
określa długość w bajtach treści wiadomości krótkiej zawartej w polu short_message
PDU, takich jak submit_sm
, deliver_sm
i data_sm
.
Szczegóły pola
- Nazwa pola: sm_length
- Rozmiar: 1 bajt (liczba całkowita bez znaku)
- Zakres: 0–254 (maksymalna wartość dopuszczalna w SMPP 3.4)
- Lokalizacja: Bezpośrednio przed polem
short_message
- Cel: Określa liczbę bajtów w ładunku
short_message
Kluczowe zachowanie
Wartość sm_length
zależy od użytego kodowania:
Kodowanie | Znaki na SMS | Rozmiar w bajtach | Uwagi |
---|---|---|---|
GSM 7-bit | Do 160 | Do 140 | Spakowane bity; rzeczywisty rozmiar w bajtach zależy od treści |
UCS2 | Do 70 | 2 × liczba znaków | Każdy znak to 2 bajty |
8-bit binary | N/A | Do 140 | Surowe bajty |
Przykład: Wiadomość ASCII
Prosta wiadomość z domyślnym kodowaniem 7-bitowym:
Tekst: "Hello" Kodowanie: GSM 7-bit Spakowane bajty (Hex): C8 32 9B FD 06 Długość w bajtach: 5 sm_length: 5
Przykład: Wiadomość zakodowana w UCS2
Wiadomość Unicode z kodowaniem UCS2 (data_coding = 0x08):
Tekst: "Hi" UCS2 Hex: 0048 0069 Tablica bajtów: 00 48 00 69 Długość w bajtach: 4 sm_length: 4
Przykład PDU SMPP (submit_sm)
0000003B // Długość polecenia (59 bajtów) 00000004 // ID polecenia: submit_sm 00000000 // Status polecenia 00000001 // Numer sekwencyjny 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" w UCS2
Ważne uwagi
sm_length
odnosi się do długości w bajtach, a nie liczby znaków.- Jeśli treść wiadomości jest podzielona na wiele części (konkatenacja), każda część ma własne
sm_length
. - Nie należy mylić
sm_length
z całkowitą długością wiadomości (długość PDU).
Podział i konkatenacja wiadomości
Gdy wiadomość przekracza maksymalny rozmiar ładunku, jest dzielona na części przy użyciu UDH (User Data Header). W takich przypadkach sm_length
obejmuje również UDH:
Przykład: UDH (6 bajtów) + 67 bajtów UCS2 = 73 sm_length = 73
Podsumowanie
Pole sm_length
jest kluczowe w komunikacji SMPP, ponieważ definiuje, ile bajtów SMSC powinno odczytać dla właściwej treści wiadomości. Zrozumienie, jak kodowanie wpływa na to pole, zapewnia dokładne i skuteczne dostarczanie wiadomości.
Referencje
- Specyfikacja SMPP 3.4
- Zestaw znaków GSM 03.38
- Kodowanie Unicode UCS2
More information
- Jak skonfigurować pole Typ usługi SMPP
- Jak skonfigurować pola numerów telefonów SMPP
- Jak skonfigurować pole klasy ESM SMPP
- Jak skonfigurować pole PID SMPP
- Jak skonfigurować pole priorytetu SMPP
- Jak skonfigurować pole zaplanowanego czasu SMPP
- Jak skonfigurować pole okresu ważności SMPP
- Jak skonfigurować pole zarejestrowanej dostawy SMPP
- Jak skonfigurować pole Zastąp jeśli obecne SMPP
- Jak skonfigurować pole sm_default_msg_id
- Jak skonfigurować pole DCS SMPP
- Jak obliczyć pole długości wiadomości SMPP
- Jak umieścić dane w polu SM SMPP