Перейти к содержанию
    

USSD: подробности

Хотелось бы сделать сервис в модеме на основе SIM900 для удаленного (через СМС или GPRS) управления USSD запросами. Допустим надо отписаться от рекламы или взять доверительный платеж. Нигде не смог найти ни максимальный размер отправляемого запроса, ни принимаемого ответа. Какое максимальное время ожидание ответа? Уважаемые знатоки, подскажите еще как организуются многошаговые USSD запросы, в которых требуются ответные действия пользователей?

В порицание SimCom'а: вышла atc v1.06, а формат ответа так и не вставили.

Изменено пользователем RadikX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В ответ на запрос баланса приходит ответ в кодировке UCS2. Параметр dcs (3-й) = 72. По стандарту GSM 03.40, как я понимаю, это соответсвует "Reserved coding groups". Где я ошибаюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эти вопросы не к модулю, а к операторскому серверу USSD - как они его сделали, так и будет работать.

А модуль только отправит рядок цифр, да получит ответ.

 

Как вариант, если оператор поддерживает - делайте через STK

В презенташке SIM900_ATC_Training(English).pdf есть пример, а далее к оператору.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что не очень понятно, как задавать третий параметр (dcs) и на что он влияет.

допустим, я хочу получить ответ в юникоде.. По логике он долже быть 8. На разных операторах ответ приходит в разных кодировках (обычном 8-ми битовом и UCS2). Задание или незадание этого параметра, а также его значение абсолютно ни на что не влияет. Кто-нибудь видел такую ситуацию на других модемах?

Изменено пользователем RadikX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>>допустим, я хочу получить ответ в юникоде..

 

А оператор не хочет. Смотрим сюда, хоть и было давно, но актуальность не потеряло.

У некоторых операторов это еще и на SMS распространяется - сталкивались уже что конвертят русский в транслит.

http://forum.sgh.ru/topic36665.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что примечательно. некоторые операторы (2 из 5 мною проверенных) отсылают dcs даже не в числовом виде: "00 FF" :wacko:

 

Но вопрос остается открытым: телефон ведь отображает информацию правильно для любых операторов!

Изменено пользователем RadikX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не все телефоны и не любых. Особенно если покопаться в старых моделях.

Просто в телефонах в софте сделан упор на сервис и там вполне могут править "заезды" операторов.

В модулях же такого нет - инфу отдают как пришла, а ты сам с ней что хочешь то и делай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вариант 146% возвращения ответа в UCS2:

Отправить текст запроса в формате юникода без указания dcs. CMGF=1 - почему-то обязательно. Предполагается, что можно отправить запрос и в PDU режиме?

При отправлении запроса в виде просто текста, предсказать формат ответа невозможно.

 

Перепроверил: наврал с CMGF - CUSD от нее не зависит, а зависит от CSMP="UCS2", что, наверно, логично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте поиск USSD по форуму - уже неоднократно бодались по этой теме.

Например здесь - "SIM900 баланс, Помогите как проверить баланс"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. По глюкам оператора все выяснилось. Здесь ничего не поделаешь - их много, всех не заборешь. Почему только команда CUSD использует параметры заданные командой CSCS, а не так как указано в документации из параметра dcs команды CUSD?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>> Почему только команда CUSD использует параметры заданные командой CSCS, а не так как указано в документации из параметра dcs команды CUSD?

 

открываем GSM 07.07

 

+CUSD

 

<str>: string type USSD-string (when <str> parameter is not given, network is not interrogated):

 

if <dcs> indicates that GSM 03.38 default alphabet is used:

 

- if TE character set other than "HEX" (refer command Select TE Character Set +CSCS) :ME/TA converts GSM alphabet into current TE character set according to rules of GSM 07.05

- if TE character set is "HEX": ME/TA converts each 7-bit character of GSM alphabet into two IRA character long hexadecimal number (e.g. character Π (GSM 23) is presented as 17 (IRA 49 and 55))

- if <dcs> indicates that 8-bit data coding scheme is used: ME/TA converts each 8-bit octet into two IRA character long hexadecimal number (e.g. octet with integer value 42 is presented to TE as two characters 2A (IRA 50 and 65))

 

<dcs>: see GSM 03.38 Cell Broadcast Data Coding Scheme in integer format (default 0)

 

Сначала в +CSCS задаем формат, а затем последний параметр действует в зависимости от того что задано.

Там дважды "если", поэтому оба условия должны выполняться. Ну и третье "если" - это когда оператор зафиксировал формат и игнорирует то что просит устройство.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...