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. Отличается от варианта тем, что позволяет напрямую работать с 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

СТАРТ!

Остается написать командную строчку для запуска программы. В моем примере это выглядело так (строка для запуска программы подчеркнута красным):

desc_us11

При данной командной строке, программа создала файл “ussd1.txt”. На картинке ниже Вы видите содержимое этого файла:

desc_us21

Формат файла уникально прост - записывается ответ, полученный от оператора сотовой связи.

Прошу обратить внимание на некоторые тонкости. Разные модели сотовых немного по разному трактуют и воспринимают (или не воспринимают) AT-команды. Поэтому не все может работать гладко и шоколадно. Если Ваша задача действительно заслуживает чтобы ее решить, то все возможно. Присылайте комментарии, описание конкретной области применения - если действительно это будет нужно, то договоримся.

Данная функция приема оттестирована на телефоне Sony Ericsson Z310i, присланном мне одним из пользователей программы специально для этих целей.

Комментарии к этому сообщению (34)

  1. Михаил

    С 3G модемом novacom 3.5G не работает USSD запрос. В ответе пишется сам запрос.

    ussd_SimpleSMS.log
    Дата и время: 27.02.2009 19:01:18
    Передаем USSD-запрос…
    ОТВЕТ: ,”*121#”,
    Сеанс USSD закончен.
    Дата и время: 27.02.2009 19:01:18

    Помогите, может я что-то не так делаю.

    testlog.log
    БЕСПЛАТНАЯ (ограниченная) версия v 2.2, http://www.SimpleSMS.ru
    Дата и время: 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.

  2. Разработчик

    С Михаилом решили этот вопрос по емайл.

  3. Евгений

    У меня аналогичная стуация с аналогичным модемом. Что делать ?

  4. Разработчик

    Недавно разбирался с этим вопросом. Поясню на примере - у меня оператор связи МТС, запрос баланса через USSD у него *100#. Программа обрабатывает этот запрос нормально и получает четкий ответ. Недавно взял специально для рассылок номер и у Билайна. Запрос баланса у Билайна *102#. И программа начала выдавать тоже самое, что и у Михаила - т.е. совсем не то, что ожидалось. Я естественно проверил эти же АТ-команды и через HyperTerminal (стандартная программа терминал, встроенная в Windows). Результат тот же…

    В итоге выяснилось, что если ответ от оператора на USSD-запрос идет только в кириллице и оператор не позаботился об альтернативной кодировке латиницей, то и получается такой глюк. И если тому же Билайну дать запрос не *102# , а дать #102# , то ответ придет на латинице и программа его обработает.

    Дальше этого я пока не стал углубляться, т.к. то, что хотел - а именно производить запрос баланса на Билайн, я получил. Возможно дело в дополнительных командах сотового по настройке (в не PDU режиме).

    Просто попробуйте вначале поставить не * , а #.

  5. Максим

    У меня GSM модем Fargo Maesto 100.
    На запрос USSD, запрос баланса, отвечает только на команду AT+CUSD=1,”#102#”,15. А программа делает запрос AT+CUSD=0,”#102#”,15. Что можно сделать?

  6. Разработчик

    Максим, день добрый! Сейчас добавил в программу ключ USSD2, и с помощью него можно будет задавать всю строку команды AT+CUSD, т.е. Вы сможете задать любой свой USSD запроc. На Вашем примере ключ запуска будет такой: USSD2=1,$#102#$,15
    но Вы уже увидели особенность - учитывая, что команда передается через командную строку символ ” (ковычки) должен быть заменен на любой другой, и я выбрал в качестве замены значок доллара $.
    Обновленную версию выложу часа через 3-4, если хотите быстрее - пришлите емайл, я Вам персонально вышлю сразу же.

  7. Максим

    В демо режиме какие ограничения? Или только вставка DEMO и все?

  8. Максим

    Дорый день! У меня 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).
    В чем дело?

  9. Разработчик

    Максим - пришлите логи программы на емайл simplesms@rateam.biz , на словах сложно понять в чем проблема. Вы не из Красноярска часом (судя по IP-адресу)? Если да, то можно будет встретиться, чтобы я глянул сам на эти вещи.

  10. Rumata

    модемчик novacom 3.5g так и не понял как решена проблема из первого комментария

  11. Разработчик

    Rumata - Вы комментарии пониже почитайте, там все разложено. Вам осталось только проверить на своем.

  12. Rumata

    пробовал разными способами и методами :) баланс на карте *100#

    USSD1=*100# нет
    USSD1=#100# нет
    USSD2=0,$*100#$,0 нет

    может я не правильно составляю USSD2 ?

  13. Разработчик

    Rumata , в 3-м примере Вы опечатались? Если нет, то неправильно:
    USSD2=0,$*100#$,0
    а правильно USSD2=0,$*100#$,15 и попробуйте заодно USSD2=0,$#100#$,15
    Если не поможет, то через программу HyperTerminal (она в Windows встроена “Пуск->Программы->Стандартные->Связь”) дайте модему команду:
    AT+CUSD=1,”#102#”,15

    У Михаила даже и через HyperTerminal все работало через раз. Если у Вас через HyperTerminal все будет нормально, то есть смысл разбираться.

  14. Стас

    Все-равно на модемах Novacom 3.5G НЕ РАБОТАЕТ!!!

  15. Разработчик

    Стас, а что именно не работает? Сам USSD запрос или программа? У меня просто нет такого модема, чтобы протестировать все самому и разобраться в чем загвоздка.

    Вижу не один человек мается с этим, поэтому предложение. Если кто готов заказать и оплатить для меня этот модем в Интернет-магазине (просто уже так делали), как только я его получу в руки, я смогу решить этот вопрос. Сделать это можно из любой страны. Если кто-то готов, то напишите на емайл, я вышлю свои данные для оформления доставки (предварительно - Россия, г.Красноярск). Если готов оплатить, но не знает как это “заказать в Интернет-магазине”, я покажу где это буду заказывать и сколько это стоит, переведете деньги мне, а я уже оплачу в магазине.

    Понимаю, что это стоит денег, но и мое время тоже его стоит. В качестве компенсации - любая моя программа на выбор SimpleSMS, ProfiSMS, AutoRingUp.

  16. Стас

    На сайте изготовителя модема говорят, что это его программная ошибка и обещали к февралю поправить ПО, чтобы модем стал понимать USSD запросы. Однако, это было год назад, сейчас никто на вопросы уже не отвечает… Сайт представительства разработчика в России http://www.novacom-wireless.ru/. Давайте бомбить их все вместе сообща, иначе наши модемчики так и будут в ответ получать свой собственный отправленный запрос…

  17. Стас

    Мой ussd_SimpleSMS.log
    Дата и время: 11.04.2009 16:58:45
    Передаем USSD-запрос…
    ОТВЕТ: ,”*100#”,
    Сеанс USSD закончен.
    Дата и время: 11.04.2009 16:58:45

    Мой ussd2.txt
    ,”*100#”,

    testlog.log
    SimpleSMS версия v 2.3.1, http://www.SimpleSMS.ru
    Дата и время: 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.

  18. Разработчик

    Понятно, Стас :) Будем надеяться, что разработчики модема что-нибудь сделают. Но все равно, если у меня появится возможность “поковырять” этот модем, то посмотрю, что он делает на самом деле.

  19. Стас

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

  20. Rumata

    проще взять тот же хуавей и прогу MDMA

    странно конечно что не получается, модем то USSD поддерживает

  21. sansanadmin

    … Разработчик , а как целый txt с USSD Вашей проге скормить )) , было бы не плохо

  22. Разработчик

    э….. сперва подумал, что результат USSD запроса надо по смс отправить…а тут нечто другое :)
    А речь идет об одном длинном USSD запросе или это разные запросы?

  23. Consul

    с помощью сервиса “SMS-Помощник”, отправив с мобильного телефона SMS с текстом 11 на номер 111.

  24. Евгений

    Здравствуйте!
    Пробовал simplesmslite с командой USSD2=1,$*100#$,15 на модеме zte mf 627. Настойчиво возвращает “,*100#,” вместо информации о балансе счета МТС. Пробовал различные варианты запроса, но то же самое. В гипертерминале в ответ на команду AT+CUSD=1,*100#,15 выдается OK и через пару секунд приходит строка, закодированная уникодом, где указан правильный баланс. В чем может быть проблема?

  25. Миахил

    Не работает отправка USSD c телефоном SE w300i. Может кто сталкивался, в чёи может быть проблема? Команды пробовал разные, например: USSD2=1,$#100#$,15; USSD2=0,$*100#$,15 и т.п. Результат одинаковый:
    Версия: version Lite, http://www.SimpleSMS.ru
    Дата и время: 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

  26. Сергей

    Добрый …! Пытаюсь сделать переадресайцию через ussd. ussd1=*21*xxxxxxxxxxx# Программа отвечает- Ошибка ussd запроса! отключились. Что-то делаю не так?

  27. Александр

    С 3G модемом novacom 3.5G не работает USSD запрос. В ответе пишется сам запрос.

    Вопрос тот-же что и у Михаила и Стаса.

    Кстати, а как решили с Михаилом?

  28. Гриша

    Здрасте купил новый телефон sony ericsson xperia 10i . пытабсь запросить баланс *100# .а выдаёт какие-то каракули…как с этим бороться?? ответье на почту т.к. сюда нет возможности заходить grifon18041991@mail.ru

  29. Разработчик

    Гриша, если Вы запросе баланса через программу SimpleSMS, то попробуйте новую версию программы и разные комбинации параметров.

  30. Dima

    Уважаемый Разработчик!
    Возможна ли работа программы по ussd-запросам на модеме huawei E1550?
    Пока никак не получается

  31. Dima

    Получилось!
    На мегафоне Huawei E1550 запрос баланса через параметр UssdPduA=1,$*100#$,15 - РАБОТАЕТ!! УРА!

  32. Разработчик

    Dima - посмотрите тут http://www.simplesms.ru/programma-otpravki-sms-243-09-2010/
    и если не получится, то пришлите файлы testlog после каждого запроса.

  33. Руслан

    Программа отправляет смс на короткие номера? к примеру 4566 и.т.п. без символов *#, если да то какие ключи нужны,
    и как будет выгледить набор.

    Спасибо!

  34. Разработчик

    Руслан, программа умеет отправлять смс на короткие номера. Внимательно изучите страницу http://www.simplesms.ru/nastrojka/otpravka-sms/

1 Ссылки на это сообщение

  1. Обновление до 2.3.1 (добавлен USSD2) | Отправить СМС

    [...] поступил вопрос от одного из пользователей (Максим). Я посчитал этот вопрос актуальным и дополнил [...]

Есть комментарии, вопросы, предложения? Напишите прямо сейчас!

О программе, смс и сайте

Данный сайт вырос из “домашней” странички, посвященной программе отправки смс с компьютера. Это было в 2005г. Основная задача программы SimpleSMS - автоматизация процесса отправки смс. СМС все чаще и чаще используется для информирования сотрудников, клиентов, знакомых. Основная задача сайта - информировать Вас о программе, создание обратной связи с пользователями и размещение тематических статей для людей, самостоятельно занимающихся автоматизацией.

Контакты

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

  • e-mail:  karm412@gmail.com
  • Viber | Telegram: +7 913 522 0928
  • телефон:  +7 913 522 0928 (оператор МТС , GMT+7)