USSD-запрос
USSD-запрос и получение ответа (flash).
Это специфичная функция, в отличие например от отправки СМС, но тоже может оказаться полезной. Итак, имеем компьютер и подключенный к нему сотовый телефон.
Что же мы можем получить полезного от этой функции? Вы часто смотрите баланс своего сотового телефона? Для этого как правило и используется USSD-запрос. Например, запрос баланса для номера от МТС выглядит так *100# , т.е. именно это сочетание Вы набираете на клавишах своего сотового и нажимаете кнопку вызова. В ответ Вам на экране высвечивается текущий баланс Вашего счета.
Данная функция добавлена в программу по просьбе одного из пользователей. Я буду Вам очень признателен, если Вы пришлете мне для чего используете эту функцию именно Вы. Я же пока вижу только для контроля баланса счета, хотя у разных операторов могут быть довольно интересные USSD-команды. По сути алгоритм прост - Ваша программа через SimpleSMS передает USSD-запрос, получает ответ в текстовый файл и далее анализирует содержимое этого файла.
В процессе получения СМС программа формирует лог-файл (не путать с техническим лог-файлом!). Имя этого файла по умолчанию ussd_SimpleSMS.log (добавляется приставка “ussd_” к имени, заданному в INI-файле - см. Настройка).
ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ.
1. INI=ИМЯ_ФАЙЛА_НАСТРОЕК - если Вы используете другое имя файла настроек программы, отличный от имени файла, принятого по умолчанию. Например,INI=test1.ini ;
2a. USSD1=КОМАНДА - указывает программе, что требуется выполнить USSD-запрос со строкой КОМАНДА, например USSD1=*100#1 - это получение баланса
2b. USSD2=ПОЛНАЯ СТРОКА USSD - указывает программе, что требуется выполнить USSD-запрос со строкой ПОЛНАЯ СТРОКА USSD. Отличается от варианта 2а тем, что позволяет напрямую работать с AT-командой AT+CUSD. И чтобы запросить, например тот же баланс у МТС, нужно написать USSD2=0,$*100#$,15 , что соответствует AT-команде AT+CUSD=0,“*100#“,15. Внимание, особенность - учитывая, что команда передается через командную строку символ “ (ковычки) должен быть заменен на значок доллара $.
3. UssdPduR=ПОЛНАЯ СТРОКА USSD - указывает программе, что требуется выполнить USSD-запрос со строкой ПОЛНАЯ СТРОКА USSD. Аналогична параметру USSD2 . Появилась ввиду того, что например модему Huawei e1550 эту команду надо передавать в закодированном виде. Параметр можно писать либо UssdPduR , либо UssdPduL - в зависимости от языка (Rусский или Lатиница) ответа оператора. Или использовать универсальный UssdPduA - тогда программа сама определит кодировку ответа. Например, чтобы посмотреть баланс у МТС нужно запустить так:
Simplesms UssdPduR=1,*100#,15
А для Мегафона вот так: Simplesms UssdPduA=1,$*100#$,15
4. RMSG=ИМЯ_ФАЙЛА_ДЛЯ_СОХРАНЕНИЯ_ОТВЕТА - если Вы хотите задать свое имя файла для сохранения ответа, например, RMSG=ussd1.txt. Иначе программа сама присвоит имя файла в формате: СОМ-порт_ussd.txt
СТАРТ!
Остается написать командную строчку для запуска программы. В моем примере это выглядело так (строка для запуска программы подчеркнута красным):
При данной командной строке, программа создала файл “ussd1.txt”. На картинке ниже Вы видите содержимое этого файла:
Формат файла уникально прост - записывается ответ, полученный от оператора сотовой связи.
Прошу обратить внимание на некоторые тонкости. Разные модели сотовых немного по разному трактуют и воспринимают (или не воспринимают) AT-команды. Поэтому не все может работать гладко и шоколадно. Если Ваша задача действительно заслуживает чтобы ее решить, то все возможно. Присылайте комментарии, описание конкретной области применения - если действительно это будет нужно, то договоримся.
Данная функция приема оттестирована на телефоне Sony Ericsson Z310i, присланном мне одним из пользователей программы специально для этих целей.
Комментарии к этому сообщению (34)
1 Ссылки на это сообщение
-
Обновление до 2.3.1 (добавлен USSD2) | Отправить СМС (Апрель 8th, 2009 at 18:31)
[...] поступил вопрос от одного из пользователей (Максим). Я посчитал этот вопрос актуальным и дополнил [...]
С 3G модемом novacom 3.5G не работает USSD запрос. В ответе пишется сам запрос.
ussd_SimpleSMS.log
Дата и время: 27.02.2009 19:01:18
Передаем USSD-запрос…
ОТВЕТ: ,”*121#”,
Сеанс USSD закончен.
Дата и время: 27.02.2009 19:01:18
Помогите, может я что-то не так делаю.
testlog.loghttp://www.SimpleSMS.ru
БЕСПЛАТНАЯ (ограниченная) версия v 2.2,
Дата и время: 27.02.2009 19:01:18
параметры:
USSD1=*121#
[USSD1] команда USSD-запроса = *121#
0 READMOBIL дата и время… 27.02.2009 19:01:18
1 READMOBIL S=
OK
AT
OK
.
2 READMOBIL совпало =OK.
0 READMOBIL дата и время… 27.02.2009 19:01:18
1 READMOBIL S=AT+CUSD=0,”*121#”,15
OK
.
2 READMOBIL совпало =OK.
С Михаилом решили этот вопрос по емайл.
У меня аналогичная стуация с аналогичным модемом. Что делать ?
Недавно разбирался с этим вопросом. Поясню на примере - у меня оператор связи МТС, запрос баланса через USSD у него *100#. Программа обрабатывает этот запрос нормально и получает четкий ответ. Недавно взял специально для рассылок номер и у Билайна. Запрос баланса у Билайна *102#. И программа начала выдавать тоже самое, что и у Михаила - т.е. совсем не то, что ожидалось. Я естественно проверил эти же АТ-команды и через HyperTerminal (стандартная программа терминал, встроенная в Windows). Результат тот же…
В итоге выяснилось, что если ответ от оператора на USSD-запрос идет только в кириллице и оператор не позаботился об альтернативной кодировке латиницей, то и получается такой глюк. И если тому же Билайну дать запрос не *102# , а дать #102# , то ответ придет на латинице и программа его обработает.
Дальше этого я пока не стал углубляться, т.к. то, что хотел - а именно производить запрос баланса на Билайн, я получил. Возможно дело в дополнительных командах сотового по настройке (в не PDU режиме).
Просто попробуйте вначале поставить не * , а #.
У меня GSM модем Fargo Maesto 100.
На запрос USSD, запрос баланса, отвечает только на команду AT+CUSD=1,”#102#”,15. А программа делает запрос AT+CUSD=0,”#102#”,15. Что можно сделать?
Максим, день добрый! Сейчас добавил в программу ключ USSD2, и с помощью него можно будет задавать всю строку команды AT+CUSD, т.е. Вы сможете задать любой свой USSD запроc. На Вашем примере ключ запуска будет такой: USSD2=1,$#102#$,15
но Вы уже увидели особенность - учитывая, что команда передается через командную строку символ ” (ковычки) должен быть заменен на любой другой, и я выбрал в качестве замены значок доллара $.
Обновленную версию выложу часа через 3-4, если хотите быстрее - пришлите емайл, я Вам персонально вышлю сразу же.
В демо режиме какие ограничения? Или только вставка DEMO и все?
Дорый день! У меня GSM модемы Fargo Maesto 100 и
Siemens MC35i Terminal.
Ни один с программой правельно не работает.
Fargo Maesto 100 возникают проблемы с подключением по СОМ порту и по USSD-запросу дает ERROR.
Siemens MC35i по USSD-запросу дает ERROR.
В HyperTerminal-е при выполнении команды AT+CUSD=1,”#102#”,15 дают ответ нормально. (VT100 115200 8-N-1).
В чем дело?
Максим - пришлите логи программы на емайлsimplesms@rateam.biz , на словах сложно понять в чем проблема. Вы не из Красноярска часом (судя по IP-адресу)? Если да, то можно будет встретиться, чтобы я глянул сам на эти вещи.
модемчик novacom 3.5g так и не понял как решена проблема из первого комментария
Rumata - Вы комментарии пониже почитайте, там все разложено. Вам осталось только проверить на своем.
пробовал разными способами и методами :) баланс на карте *100#
USSD1=*100# нет
USSD1=#100# нет
USSD2=0,$*100#$,0 нет
может я не правильно составляю USSD2 ?
Rumata , в 3-м примере Вы опечатались? Если нет, то неправильно:
USSD2=0,$*100#$,0
а правильно USSD2=0,$*100#$,15 и попробуйте заодно USSD2=0,$#100#$,15
Если не поможет, то через программу HyperTerminal (она в Windows встроена “Пуск->Программы->Стандартные->Связь”) дайте модему команду:
AT+CUSD=1,”#102#”,15
У Михаила даже и через HyperTerminal все работало через раз. Если у Вас через HyperTerminal все будет нормально, то есть смысл разбираться.
Все-равно на модемах Novacom 3.5G НЕ РАБОТАЕТ!!!
Стас, а что именно не работает? Сам USSD запрос или программа? У меня просто нет такого модема, чтобы протестировать все самому и разобраться в чем загвоздка.
Вижу не один человек мается с этим, поэтому предложение. Если кто готов заказать и оплатить для меня этот модем в Интернет-магазине (просто уже так делали), как только я его получу в руки, я смогу решить этот вопрос. Сделать это можно из любой страны. Если кто-то готов, то напишите на емайл, я вышлю свои данные для оформления доставки (предварительно - Россия, г.Красноярск). Если готов оплатить, но не знает как это “заказать в Интернет-магазине”, я покажу где это буду заказывать и сколько это стоит, переведете деньги мне, а я уже оплачу в магазине.
Понимаю, что это стоит денег, но и мое время тоже его стоит. В качестве компенсации - любая моя программа на выбор SimpleSMS, ProfiSMS, AutoRingUp.
На сайте изготовителя модема говорят, что это его программная ошибка и обещали к февралю поправить ПО, чтобы модем стал понимать USSD запросы. Однако, это было год назад, сейчас никто на вопросы уже не отвечает… Сайт представительства разработчика в Россииhttp://www.novacom-wireless.ru/ . Давайте бомбить их все вместе сообща, иначе наши модемчики так и будут в ответ получать свой собственный отправленный запрос…
Мой ussd_SimpleSMS.log
Дата и время: 11.04.2009 16:58:45
Передаем USSD-запрос…
ОТВЕТ: ,”*100#”,
Сеанс USSD закончен.
Дата и время: 11.04.2009 16:58:45
Мой ussd2.txt
,”*100#”,
testlog.loghttp://www.SimpleSMS.ru
SimpleSMS версия v 2.3.1,
Дата и время: 11.04.2009 16:58:44
параметры:
USSD2=0,$*100#$,15
RMSG=ussd2.txt
[USSD2] команда USSD-запроса = 0,”*100#”,15
0 READMOBIL дата и время… 11.04.2009 16:58:44
1 READMOBIL S=
OK
AT
OK
.
2 READMOBIL совпало =OK.
на сотовый:
0 READMOBIL дата и время… 11.04.2009 16:58:44
1 FASTREADMOBIL S=.
0 READMOBIL дата и время… 11.04.2009 16:58:44
1 READMOBIL S=AT+CGSN
357198015550206
OK
.
2 READMOBIL совпало =OK.
ПОЛНЫЙ ответ от сотового, ОСТАТОК:.+.AT+CGSN
357198015550206
OK
0 READMOBIL дата и время… 11.04.2009 16:58:45
1 READMOBIL S=AT+CUSD=0,”*100#”,15
OK
.
2 READMOBIL совпало =OK.
Понятно, Стас :) Будем надеяться, что разработчики модема что-нибудь сделают. Но все равно, если у меня появится возможность “поковырять” этот модем, то посмотрю, что он делает на самом деле.
Если получится, думаю многие будут благодарны. А если и нет, то спасибо хоть за попытки…
проще взять тот же хуавей и прогу MDMA
странно конечно что не получается, модем то USSD поддерживает
… Разработчик , а как целый txt с USSD Вашей проге скормить )) , было бы не плохо
э….. сперва подумал, что результат USSD запроса надо по смс отправить…а тут нечто другое :)
А речь идет об одном длинном USSD запросе или это разные запросы?
с помощью сервиса “SMS-Помощник”, отправив с мобильного телефона SMS с текстом 11 на номер 111.
Здравствуйте!
Пробовал simplesmslite с командой USSD2=1,$*100#$,15 на модеме zte mf 627. Настойчиво возвращает “,*100#,” вместо информации о балансе счета МТС. Пробовал различные варианты запроса, но то же самое. В гипертерминале в ответ на команду AT+CUSD=1,*100#,15 выдается OK и через пару секунд приходит строка, закодированная уникодом, где указан правильный баланс. В чем может быть проблема?
Не работает отправка USSD c телефоном SE w300i. Может кто сталкивался, в чёи может быть проблема? Команды пробовал разные, например: USSD2=1,$#100#$,15; USSD2=0,$*100#$,15 и т.п. Результат одинаковый:http://www.SimpleSMS.ru
Версия: version Lite,
Дата и время: 26.07.2009 20:01:33
параметры:
USSD2=1,$#100#$,15
[USSD2] команда USSD-запроса = 1,”#100#”,15
0 READMOBIL дата и время… 26.07.2009 20:01:34
1 READMOBIL S=ATZ
OK
.
2 READMOBIL совпало =OK.
0 READMOBIL дата и время… 26.07.2009 20:01:34
1 READMOBIL S=AT+CUSD=1,”#100#”,15
ERROR
.
3 READMOBIL ERROR! => OK.
Через HyperTerminal тоже не работает, но если выполняю at+cusd=? - то:
at+cusd=?
+CUSD: (0-2)
OK
Добрый …! Пытаюсь сделать переадресайцию через ussd. ussd1=*21*xxxxxxxxxxx# Программа отвечает- Ошибка ussd запроса! отключились. Что-то делаю не так?
С 3G модемом novacom 3.5G не работает USSD запрос. В ответе пишется сам запрос.
Вопрос тот-же что и у Михаила и Стаса.
Кстати, а как решили с Михаилом?
Здрасте купил новый телефон sony ericsson xperia 10i . пытабсь запросить баланс *100# .а выдаёт какие-то каракули…как с этим бороться?? ответье на почту т.к. сюда нет возможности заходитьgrifon18041991@mail.ru
Гриша, если Вы запросе баланса через программу SimpleSMS, то попробуйте новую версию программы и разные комбинации параметров.
Уважаемый Разработчик!
Возможна ли работа программы по ussd-запросам на модеме huawei E1550?
Пока никак не получается
Получилось!
На мегафоне Huawei E1550 запрос баланса через параметр UssdPduA=1,$*100#$,15 - РАБОТАЕТ!! УРА!
Dima - посмотрите тутhttp://www.simplesms.ru/programma-otpravki-sms-243-09-2010/
и если не получится, то пришлите файлы testlog после каждого запроса.
Программа отправляет смс на короткие номера? к примеру 4566 и.т.п. без символов *#, если да то какие ключи нужны,
и как будет выгледить набор.
Спасибо!
Руслан, программа умеет отправлять смс на короткие номера. Внимательно изучите страницуhttp://www.simplesms.ru/nastrojka/otpravka-sms/