Как правильно представлять класс сообщений в SMPP - PullRequest
8 голосов
/ 14 октября 2011

В настоящее время я пытаюсь выяснить, как классы sms правильно представлены в SMPP.Тем не менее, сейчас я полностью сбит с толку стандартом и его документацией.

В обычных смс мы имеем

  • Class0: Flash-смс, которые отображаются на дисплее
  • Class1: обычные SMS-сообщения для хранения на SIM-карте или внутри устройства

Глядя на спецификацию SMPP, я сначала нахожу параметр data_coding в операции submit_sm, которая используется дляустановить DCS, отправленный через MAP.Насколько я понимаю, если мы хотим явно установить класс сообщения, нам нужно установить первые четыре бита этого параметра равными единице, затем два бита, указывающие кодирование, и затем еще два бита, указывающие класс сообщения.Таким образом, для SMS-сообщений Class1 мы установим 1111xx01.Пока это правильно?

Если мы попытаемся установить этот DCS, однако в настоящее время мы также устанавливаем кодирование данных на «8-битные данные».Кажется, несколько телефонов не могут этого понять.Указано ли это где-нибудь, и мы можем просто изменить это, или это специальная кодировка, необходимая при отправке других классов сообщений.

Больше путаницы возникает, когда мы пытаемся использовать рекомендованный SMPPv3.4 способ установки класса Message.,Начиная с версии 3.4 в операции submit_sm имеется необязательный параметр, который называется dest_addr_subunit.Согласно стандарту этот параметр должен быть установлен в 0 для неизвестного, 1 для MS-Display, 2 для мобильного оборудования и т. Д. Если я смотрю на это, кажется, что параметры смещены на один по сравнению с классами сообщений GSM.Class0 кодируется как 1, Class1 кодируется как 2 и так далее.Это правильно или за этим стоит более сложное отображение?

Кроме того, если мы установим dest_addr_subunit, нам все равно придется также устанавливать DCS или мы можем просто оставить этот параметр в значении по умолчанию?

1 Ответ

10 голосов
/ 27 января 2012

Я рекомендую прочитать 3GPP TS 23.038 спецификацию с подробным описанием DCS (Схема кодирования данных).

В случае, если биты DCS 7654 равны 00xx, следует проверить DCS для бит 4 значение.

  • бит 4 == 0 - нет класса сообщения для этого сообщения (биты 1 и 0 зарезервированы)
  • бит 4 == 1 - биты 1и 0 содержит класс сообщения

Таким образом, вы должны установить data_coding SMPP параметр в соответствии со спецификацией 3GPP TS 23.038 для правильной обработки message_class.

По умолчанию SMS-сообщение GSMне имеет message_class, и это не то же самое, что message_class = 1.

...