Jump to content

    
Sign in to follow this  
Radik_1983

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

Recommended Posts

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

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

Edited by RadikX

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

 

Share this post


Link to post
Share on other sites

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

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

Edited by RadikX

Share this post


Link to post
Share on other sites

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Edited by RadikX

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

>>> Почему только команда 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 задаем формат, а затем последний параметр действует в зависимости от того что задано.

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this