Wprowadzenie do trybu PDU wiadomości SMS
Operatorzy sieci komórkowych i dostawcy usług SMS wykorzystują protokół SMS do przesyłania wiadomości SMS między elementami sieci. Protokół SMS umożliwia urządzeniom mobilnym wysyłanie i odbieranie SMS-ów. SMS wysłany przez urządzenie mobilne nazywany jest SMS-em pochodzącym od abonenta (MO). SMS odebrany przez urządzenie mobilne nazywany jest SMS-em kierowanym do abonenta (MT). Niniejszy przewodnik zawiera informacje na temat tego, jak telefony komórkowe kodują wiadomości SMS MO i MT, innymi słowy, jak formułują jednostki danych protokołu (PDU), aby wysyłać i odbierać wiadomości przez sieć.
Wprowadzenie
Tryb PDU umożliwia wysyłanie informacji binarnych w formacie 7-bitowym lub 8-bitowym. Jest to przydatne, jeśli musisz wysłać skompresowane dane, dane binarne lub chcesz stworzyć własne kodowanie znaków w strumieniu bitów binarnych. Jeśli wrócisz do starego kodowania Fernschreibera, to do przesłania tekstu alfanumerycznego wystarczy tylko 5 bitów. Dzięki kodowaniu 5-bitowemu możesz zawrzeć 224 znaki zamiast 160 znaków w trybie tekstowym 7-bitowym. Innym powodem może być wysyłanie danych całkowitych.
Jeśli chcesz mieć pełną kontrolę nad przesyłanymi danymi w trybie tekstowym, musisz zrozumieć tryb PDU, ponieważ istnieje kilka poleceń, w których możesz ustawić parametry numeryczne, które zmieniają sposób wysyłania i odbierania SMS-ów również w trybie tekstowym.
Należy pamiętać, że istnieje kilka różnic w rodzaju implementacji trybu PDU oraz w innych poleceniach AT.
Wiadomość SMS, zgodnie ze specyfikacją organizacji Etsi (dokumenty GSM 03.40 i GSM 03.38), może mieć długość do 160 znaków, gdzie każdy znak ma 7 bitów zgodnie z domyślnym alfabetem 7-bitowym. Wiadomości 8-bitowe (maks. 140 znaków) zwykle nie są widoczne w telefonach jako wiadomości tekstowe; zamiast tego są używane do przesyłania danych, np. w inteligentnych wiadomościach (obrazy i dzwonki) oraz do konfiguracji WAP przez OTA. Wiadomości 16-bitowe (maks. 70 znaków) są używane do wiadomości tekstowych w Unicode (UCS2), które są widoczne w większości telefonów. Wiadomość tekstowa 16-bitowa klasy 0 może w niektórych telefonach pojawić się jako Flash SMS (znany również jako migający SMS lub alert SMS).
Format PDU
Istnieją dwa sposoby wysyłania i odbierania wiadomości SMS: tryb tekstowy i tryb PDU (jednostka opisu protokołu). Tryb tekstowy (niedostępny w niektórych telefonach) to po prostu kodowanie strumienia bitów reprezentowanego przez tryb PDU. Alfabety mogą się różnić i istnieje kilka alternatyw kodowania podczas wyświetlania wiadomości SMS. Najczęstsze opcje to: "PCCP437", "PCDN", "8859-1", "IRA" i "GSM". Wszystkie są ustawiane za pomocą polecenia AT+CSCS, gdy odczytujesz wiadomość w aplikacji komputerowej. Jeśli odczytujesz wiadomość w telefonie, telefon wybierze odpowiednie kodowanie. Aplikacja zdolna do odczytywania przychodzących wiadomości SMS może więc używać trybu tekstowego lub PDU. Jeśli używany jest tryb tekstowy, aplikacja jest ograniczona do zestawu wstępnie ustawionych opcji kodowania. W niektórych przypadkach to po prostu nie wystarcza. Jeśli używany jest tryb PDU, można zaimplementować dowolne kodowanie.
Odbieranie wiadomości w trybie PDU
Ciąg PDU zawiera nie tylko wiadomość, ale także wiele metainformacji o nadawcy, jego centrum usług SMS, znaczniku czasu itp. Wszystko to jest w postaci szesnastkowych oktetów lub dziesiętnych półoktetów. Poniższy ciąg to to, co otrzymałem na Nokia 6110 podczas wysyłania wiadomości zawierającej "hellohello" z www.mtn.co.za.
07 |
917238010010F5 |
040BC87238880900F100009930925161958003C16010 |
Ta sekwencja oktetów składa się z trzech części: początkowego oktetu wskazującego długość informacji SMSC ("07"), samej informacji SMSC ("917238010010F5") oraz części SMS_DELIVER (określonej przez ETSI w GSM 03.40).
! Uwaga: na niektórych telefonach (np. Ericsson 888?) pierwsze trzy (pokolorowane) części są pomijane podczas wyświetlania wiadomości w trybie PDU !
Oktet(y) | Opis |
---|---|
07 |
Długość informacji SMSC (w tym przypadku 7 oktetów) |
91 |
Typ adresu SMSC. (91 oznacza międzynarodowy format numeru telefonu) |
72 38 01 00 10 F5 |
Numer centrum usług (w dziesiętnych półoktetach). Długość numeru telefonu jest nieparzysta (11), więc dodano końcowe F, aby utworzyć poprawne oktety. Numer telefonu tego centrum usług to "+27831000015". Patrz poniżej. |
04 |
Pierwszy oktet tej wiadomości SMS-DELIVER. |
0B |
Długość adresu. Długość numeru nadawcy (0B hex = 11 dec) |
C8 |
Typ adresu numeru nadawcy |
72 38 88 09 00 F1 |
Numer nadawcy (dziesiętne półoktety), z końcowym F |
00 |
TP-PID. Identyfikator protokołu. |
00 |
TP-DCS Schemat kodowania danych |
99 30 92 51 61 95 80 |
TP-SCTS. Znacznik czasu (półoktety) |
0A |
TP-UDL. Długość danych użytkownika, długość wiadomości. Pole TP-DCS wskazywało dane 7-bitowe, więc długość tutaj to liczba septetów (10). Jeśli pole TP-DCS było ustawione na dane 8-bitowe lub Unicode, długość byłaby liczbą oktetów (9). |
E8329BFD4697D9EC37 |
TP-UD. Wiadomość "hellohello", 8-bitowe oktety reprezentujące dane 7-bitowe. |
Wszystkie powyższe oktety to szesnastkowe 8-bitowe oktety, z wyjątkiem numeru centrum usług, numeru nadawcy i znacznika czasu; są to dziesiętne półoktety. Część wiadomości na końcu ciągu PDU składa się z szesnastkowych 8-bitowych oktetów, ale te oktety reprezentują dane 7-bitowe (patrz poniżej). Półoktety są dziesiętne, a np. numer nadawcy uzyskuje się poprzez wewnętrzną zamianę półoktetów z "72 38 88 09 00 F1" na "27 83 88 90 00 1F". Długość numeru telefonu jest nieparzysta, więc nie można utworzyć poprawnej sekwencji oktetów z tego numeru. Dlatego dodano końcowe F. Znacznik czasu, po przeanalizowaniu, równa się "99 03 29 15 16 59 08", gdzie pierwsze 6 znaków reprezentuje datę, następne 6 reprezentuje czas, a ostatnie dwa reprezentują strefę czasową związaną z GMT.
Interpretacja 8-bitowych oktetów jako wiadomości 7-bitowych
Ta transformacja jest szczegółowo opisana w GSM 03.38, a przykład transformacji "hellohello" jest pokazany tutaj. Transformacja jest oparta na 7-bitowym domyślnym alfabecie, ale aplikacja zbudowana w trybie PDU może używać dowolnego kodowania znaków.
Wysyłanie wiadomości w trybie PDU
Poniższy przykład pokazuje, jak wysłać wiadomość "hellohello" w trybie PDU z Nokia 6110.
AT+CMGF=0 //Ustaw tryb PDU
AT+CSMS=0 //Sprawdź, czy modem obsługuje polecenia SMS
AT+CMGS=23 //Wyślij wiadomość, 23 oktety (z wyłączeniem dwóch początkowych zer) >0011000B916407281553F80000AA0AE8329BFD4697D9EC37W tej wiadomości jest 23 oktetów (46 'znaków'). Pierwszy oktet ("00") nie jest liczony, jest tylko wskaźnikiem długości dostarczonych informacji SMSC (0). Ciąg PDU składa się z następujących elementów:
Oktet(y) | Opis |
---|---|
00 |
Długość informacji SMSC. Tutaj długość wynosi 0, co oznacza, że należy użyć SMSC zapisanego w telefonie. Uwaga: Ten oktet jest opcjonalny. Na niektórych telefonach ten oktet należy pominąć! (Użycie SMSC zapisanego w telefonie jest wtedy domyślne) |
11 |
Pierwszy oktet wiadomości SMS-SUBMIT. |
00 |
TP-Message-Reference. Wartość "00" pozwala telefonowi samemu ustawić numer referencyjny wiadomości. |
0B |
Długość adresu. Długość numeru telefonu (11) |
91 |
Typ adresu. (91 oznacza międzynarodowy format numeru telefonu). |
6407281553F8 |
Numer telefonu w półoktetach (46708251358). Długość numeru telefonu jest nieparzysta (11), więc dodano końcowe F, jakby numer telefonu był "46708251358F". Użycie nieznanego formatu (tj. Typu adresu 81 zamiast 91) dałoby sekwencję oktetów numeru telefonu 7080523185 (0708251358). Zauważ, że ma to długość 10 (A), która jest parzysta. |
00 |
TP-PID. Identyfikator protokołu |
00 |
TP-DCS. Schemat kodowania danych. Ta wiadomość jest zakodowana zgodnie z domyślnym alfabetem 7-bitowym. Wartość "02" zamiast "00" wskazywałaby, że pole TP-User-Data tej wiadomości powinno być interpretowane jako 8-bitowe, a nie 7-bitowe (używane np. w smart messaging, OTA provisioning itp.). |
AA |
TP-Validity-Period. "AA" oznacza 4 dni. Uwaga: Ten oktet jest opcjonalny, patrz bity 4 i 3 pierwszego oktetu |
0A |
TP-User-Data-Length. Długość wiadomości. Pole TP-DCS wskazywało dane 7-bitowe, więc długość tutaj to liczba septetów (10). Jeśli pole TP-DCS było ustawione na dane 8-bitowe lub Unicode, długość byłaby liczbą oktetów. |
E8329BFD4697D9EC3 7 |
TP-User-Data. Te oktety reprezentują wiadomość "hellohello". Jak dokonać transformacji z 7-bitowych septetów na oktety, pokazano tutaj |
Wprowadzenie do trybu tekstowego SMS
Usługa krótkich wiadomości SMS, zdefiniowana w standardzie cyfrowej telefonii komórkowej GSM 900 / 1800 / 1900, ma kilka unikalnych cech:
Pojedyncza krótka wiadomość może mieć do 160 znaków (kodowanych 7-bitowo) lub 140 znaków (kodowanych 8-bitowo) tekstu. Te 140 /160 znaków może składać się ze słów, liczb lub kombinacji alfanumerycznych. Obsługiwane są również krótkie wiadomości niezawierające tekstu (np. w formacie binarnym). Więcej o tym trybie binarnym znajdziesz pod linkiem Tryb PDU.
Usługa krótkich wiadomości to usługa typu store and forward, czyli krótkie wiadomości nie są wysyłane bezpośrednio od nadawcy do odbiorcy, ale zawsze przez centrum SMS (SMSC). Każda sieć telefonii komórkowej obsługująca SMS ma jedno lub więcej centrów wiadomości do obsługi i zarządzania krótkimi wiadomościami. Więcej o SMSC możesz przeczytać pod linkiem SMSC.
Usługa krótkich wiadomości oferuje potwierdzenie dostarczenia wiadomości. Oznacza to, że w przeciwieństwie do pagera, użytkownicy nie wysyłają po prostu krótkiej wiadomości i ufają, że zostanie dostarczona. Zamiast tego nadawca krótkiej wiadomości może otrzymać wiadomość zwrotną informującą, czy krótka wiadomość została dostarczona, czy nie. Domyślny parametr fabryczny tego potwierdzenia od nadawcy SMS do odbiorcy w większości modemów GSM jest wyłączony, więc nie otrzymasz potwierdzenia od odbiorcy. Jeśli go włączysz, otrzymasz potwierdzenie, że SMSC otrzymał wiadomość, a po dostarczeniu krótkiej wiadomości do odbiorcy otrzymasz dodatkową, drugą wiadomość (SMS zwrotny), że wiadomość została dostarczona do telefonu GSM lub modemu. W tej automatycznie generowanej wiadomości zakodowana jest data i czas dostarczenia. Potwierdzenie, schemat kodowania, czas przechowywania krótkiej wiadomości w SMSC i wiele więcej można ustawić za pomocą polecenia AT+CSMP.
Innym sposobem jest wysłanie prefiksu z wiadomością tekstową. Te prefiksy nie są takie same u różnych operatorów GSM na świecie. U niemieckiego operatora Vodafone należy dodać *N#, a u operatora T-Mobil *T#. Notacja z AT+CSMP jest taka sama we wszystkich SMSC. Obsługa z prefiksem *T# lub *N# była lub jest konieczna, jeśli chcesz otrzymać potwierdzenie przy wysyłaniu SMS za pomocą ręcznego telefonu GSM. Nie wszystkie telefony komórkowe mogą włączyć bit potwierdzenia.
Jeśli chcesz zrozumieć 3 parametry tego polecenia, musisz zrozumieć SMS w trybie PDU. Innym ważnym poleceniem jest AT+CNMI. Mówi modemowi GSM, jak obsługiwać przychodzącą krótką wiadomość.
Krótkie wiadomości mogą być wysyłane i odbierane jednocześnie z połączeniami głosowymi, danymi i faksowymi GSM. Jest to możliwe, ponieważ podczas gdy połączenia głosowe, dane i faksowe przejmują dedykowany kanał radiowy na czas trwania połączenia, krótkie wiadomości przesyłane są ponad kanałem radiowym za pomocą ścieżki sygnalizacyjnej. Dlatego użytkownicy SMS rzadko, jeśli w ogóle, otrzymują sygnał zajętości, jak to może się zdarzyć w godzinach szczytu w sieci. Jeśli włączysz jednoczesne odbieranie SMS podczas połączenia danych, otrzymasz ciąg SMS podczas połączenia faksowego lub danych.
Dostępne są sposoby wysyłania wielu krótkich wiadomości. Łączenie SMS (łączenie kilku krótkich wiadomości) i kompresja SMS (uzyskanie więcej niż 160 znaków informacji w jednej krótkiej wiadomości) zostały zdefiniowane i włączone do standardów GSM SMS. Nie wszystkie możliwe funkcje są zaimplementowane przez wszystkich operatorów GSM na świecie. Pojedyncza wiadomość powinna działać wszędzie.
Aby korzystać z usługi krótkich wiadomości, użytkownicy potrzebują odpowiednich subskrypcji i sprzętu, w szczególności:
Subskrypcji sieci telefonii komórkowej obsługującej SMS. W Niemczech operatorzy GSM włączają tę usługę w każdym rodzaju subskrypcji.
Korzystanie z SMS musi być włączone dla tego użytkownika (niektórzy operatorzy sieci komórkowych udzielają automatycznego dostępu do SMS, inni pobierają miesięczną opłatę i wymagają wyraźnej zgody na korzystanie z usługi). W Niemczech jest to zawsze włączone.
Telefon komórkowy lub modem GSM obsługujący SMS. Dziś jest to obsługiwane przez każdy telefon GSM lub modem GSM.
Wiedza, jak wysłać lub przeczytać krótką wiadomość za pomocą konkretnego modelu telefonu komórkowego lub modemu GSM. Implementacja nie jest taka sama w każdym urządzeniu. Nie wszystkie telefony GSM, karty modemowe PCMIA lub modemy GSM oferują wszystkie funkcje opisane w ETSI.
Miejsce docelowe, do którego można wysłać krótką wiadomość lub z którego można ją odebrać, to zwykle inny telefon komórkowy, ale może to być również faks lub adres e-mail. W niektórych sieciach GSM możliwe jest przekonwertowanie krótkiej wiadomości na faks lub e-mail.
More information
- Protokół SMS wyjaśniony
- Wprowadzenie do trybu PDU SMS