Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите разабраться с проверкой беланса симки
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
олег_уфа_81
здравствуйте все. :-)

помогите разобраться со следующим вопросом:

я отправил USSD-запрос на проверку баланса и получил следующий ответ:

+CUSD: 0,"Vash balans 112,16 rub. ",15...

кто-нибудь знаеть что такое параметры ответа 0, ... и ,15? от чего они завися и стоит ли обращать на них внимание? :-) где можно про них почитать?

спасибо всем заранее.
Палыч
Цитата(олег_уфа_81 @ Oct 11 2008, 17:31) *
кто-нибудь знаеть что такое параметры ответа 0, ... и ,15?
Цитата из "SIM300 AT Command Set"
Цитата
AT+CUSD Unstructured supplementary service data

AT+CUSD=[<n>[,<str>[,<dcs>]]

<n> a numeric parameter which indicates control of the unstructured supplementary service data
0 disable the result code presentation in the TA
1 enable the result code presentation in the TA
2 cancel session (not applicable to read command response)
<str> string type USSD-string
<dcs> Cell Broadcast Data Coding Scheme in integer format (default 0)
олег_уфа_81
да, пдфке все именно так, но не уверен, что параметры, которые указываются в команде, отправляющей USSD запрос как-то связаны с ответом на него.... а речь идет именно об ответе. может служба поддержки МСТа даст ответ...

вчера поэкспериментировал с запросами... чото нет однозначночти...

например с разных симок МТСа ответ на запрос *100# приходит то в транслите, то в килилице...
с тех же самых симок МТС на запрос #100# приходить гарантированный транслит...

у приятеля на мегафоне *100# возвращает то транслит, то кирилицу.... в непрогназируемой последовательности... у меня на мегафоне только кирилица... #100# на мегафоне не работает вообще...

попытки переключить USSD запросы в транслит как рекомендовано на сайтах МТС и Мегафон вообще никакого эффекта не дали.... приходит подтвреджение, но проверка баланка как шла к кириллице, так и осталась в ней...

наверное не я один столкнулся с такими проблемами. поделитесь если не жалко кто и как решал эти вопросы. :-)
Beginning
По умолчанию на определённый номер симки SMS высылается в транслите. Операторы перестраховываются, мол некоторые телефоны не потдерживают кирилицу. Если вы точно знаете что, ваш телефон поддерживает кирилицу, Вы должны, точно сообщить об этом опрератору. Не знаю как в других сетях, но у МТС надо мослать SMS на номр центра сообщений "7770000" SMS-ку с содержанием "rus"
олег_уфа_81
Проблема в том, что мне нужен транслит. Делаю встраиваемое приложение и необходимо переодически проверять баланс симки. А проще всего это сделать когда сообщение приходит латиницей. разбирать кирилицу в семибитной кажется кодировки чото удовольствие ниже среднего...

все было бы хорошо.... только вот на кириллицу судя по всему перключиться можно, а на латиницу чото не получается.
edo
не совсем в тему - но в таких случаях кредитные тарифные планы рулят wink.gif

или, если кучка устройств - берём n+1 симку с общим балансом. n ставим в устройства, одна запасная, на ней же приодически контролруем баланс.
Beginning
Если нужен только транслит посылать надо "eng"
edo
угу. а завтра поменяют формат ответа или сам запрос - таких примеров сплошь и рядом.
олег_уфа_81
выходит особых вариантов нет. точнее он один: устанавливать в устройство уже подготовленную симку на которую USSD будут приходить уже в транслите а как это сделать - надо парить совего оператора, как я понимаю... что-то других вариантов я не вижу...

вот завтра и начну мучать службу поддержки нашего местного МТСа и мегафона :-) погляжу чо скажут :-)
Harbinger
Цитата(edo @ Oct 13 2008, 11:58) *
или, если кучка устройств - берём n+1 симку с общим балансом. n ставим в устройства, одна запасная, на ней же приодически контролруем баланс.
Или выбираем оператора с системой самообслуживания через Интернет и избавляемся от USSD вообще wink.gif
Beginning
Цитата
а завтра поменяют формат ответа или сам запрос

Поменять могут только то что между "", например к ответу на баланс, добавить рекламу. То что вне кавычек, поменятся не может, т.к. зависит от прошивки модема. Если для человека, то проблем нету, выводи всё что в кавычках. Если же, хочешь для автомата, то надо сделать интелектуальный поиск, мол ищиш р. и все цифры, что впереди и будет являтся балансом. Цифры это 0x30--x39 biggrin.gif
олег_уфа_81
Цитата(Beginning @ Oct 14 2008, 12:21) *
Поменять могут только то что между "", например к ответу на баланс, добавить рекламу. То что вне кавычек, поменятся не может, т.к. зависит от прошивки модема. Если для человека, то проблем нету, выводи всё что в кавычках. Если же, хочешь для автомата, то надо сделать интелектуальный поиск, мол ищиш р. и все цифры, что впереди и будет являтся балансом. Цифры это 0x30--x39 biggrin.gif


для человека. но хотелось бы и автомат. алгоритм мне подсказали. вопрос с тем как разобраться с кодировками...

сегодня вот мучал справочную службу нашего местного мегафона. для переключения ответов в латницу надо набрать *111*22# и перезагрузить мобилу... до этого ответы шли исключительно в кирилице, щас через раз. одно кирилица, одно транслит.... красата! :-) но уже полегче. тут есть из чего выбирать. только не пойму никак почему так не однозначно все? оперотор мне после команды *111*22# сообщает, что да, мол выбрана латиница... а результат 50 на 50. почему так и от чего зависит девчонки в службе поддержки не сказали. :-(


P.S. такое впечатление, что вообще ответ зависит от мобильника с которого шлется запрос.....
edo
Цитата(Beginning @ Oct 14 2008, 10:21) *
Поменять могут только то что между "", например к ответу на баланс, добавить рекламу. То что вне кавычек, поменятся не может, т.к. зависит от прошивки модема. Если для человека, то проблем нету, выводи всё что в кавычках. Если же, хочешь для автомата, то надо сделать интелектуальный поиск, мол ищиш р. и все цифры, что впереди и будет являтся балансом. Цифры это 0x30--x39 biggrin.gif
цифры говоришь... встречал ответы, в которых сумма бонуса ещё указывается. или израсходованная с начала месяца сумма.
билайн (кажется) не так давно выдавал что-то типа "Для проверки баланса используйте #101#".
Beginning
Ну у меня есть бонус. Вот сделал только что запрос. Выдало Balans=1201r и дальше чепуха. А насчёт номера USSD запроса, так я поступил просто. Этот самый номер в меню задаётся. Поменялся, возьми и ты поменяй.
Однозначно ОДНО: может изменится номер, но не форма, т.к. телефон должен ведь понять, что ему приходит. И человек тоже. Поэтому ответ всегда будет однообразным. Натравить алгоритм на пару ключевых особенностей, типа =, баланс, balans, цифры и т.п. Всё распознается.
Вобщем решайте сами. Не так страшен чёрт, как его рисуют. А по другую сторону, тоже сидят программеры, такиеже как вы, и думаю, с логикой у них должно быть всё в порядке.
edo
согласен - разобраться можно. но только вот зачем - если есть варианты не проверять баланс на самом устройстве.

как говорится "умный человек с достоинством выпутается из ситуации, в которую мудрый не попадёт"
Harbinger
Цитата(edo @ Oct 14 2008, 15:36) *
согласен - разобраться можно. но только вот зачем - если есть варианты не проверять баланс на самом устройстве.

Один из - использование операторского голосового меню. Звоните на устройство, оно соединяет в режиме конференции с оператором, ну и далее ручками по пунктикам меню... нудно, но верняк. При наличии DTMF-декодера в устройстве номер операторской службы тоже можно ручками набрать.
Но таких вариантов может и не быть (вот у нашего Киевстара нет). В принципе, возможно так: с некоего диспетчерского модема на устройство отсылается SMS с просьбой запросить состояние счёта (или же мобильное устройство делает запрос по расписанию или каким-то событиям) - потом "тело" ответного USSD тупо, "как есть", отсылается SMS-кой обратно на диспетчерский модем, а там уже производятся разборки... по крайней мере в случае неожиданностей не нужно апдейтить встроенное ПО мобильных устройств, только диспетчерское. Но тут тоже подводный камушек - в устройстве запросто может не хватить средств на отправку SMS! Отчасти спасает дистанционное пополнение баланса (перевод), опять же, если оператор поддерживает.

(Попутно... некоторые операторы ещё объём GPRS-трафика по USSD рассказывают... и тоже форматы самые разнообразные...)
олег_уфа_81
Цитата(edo @ Oct 14 2008, 18:36) *
согласен - разобраться можно. но только вот зачем - если есть варианты не проверять баланс на самом устройстве.

как говорится "умный человек с достоинством выпутается из ситуации, в которую мудрый не попадёт"



проверять баланс не в самом устройстве не всегда удобно. кто-то может забыть это сделать и т.д... так что чем меньше человеческого фактора тем лучше. не так ли? :-) поэтому лучше бы чтобы системка могла функционировать на автомате. и оптять же приятно когда тебе вежливо сообщают и у тебя не болит голова что там и как. :-)

уважаемые! мы слегка отклонились от темы. так знает кто-то точно или нет что за параметры 0 и 15 в ответе на USSD-запрос? :

+CUSD: 0,"Vash balans 112,16 rub. ",15 OK?
Harbinger
Цитата(олег_уфа_81 @ Oct 15 2008, 06:55) *
уважаемые! мы слегка отклонились от темы. так знает кто-то точно или нет что за параметры 0 и 15 в ответе на USSD-запрос? :

+CUSD: 0,"Vash balans 112,16 rub. ",15 OK?

Заглянув в компэловский талмуд, сообщаю: wink.gif
Первый параметр (который у Вас 0):
Цитата
0: от пользователя не требуется никаких действий (инициированные се-тью уведомления USSD или больше не требуется информация после операции, инициированной мобильным устройством)
1: от пользователя требуются дальнейшие действия (инициированный сетью запрос USSD или требуется информация после операции, инициированной мобильным устройством)
2: USSD отключены сетью
4: операция не поддерживается

Дальше "тело" ответного сообщения.
И последний параметр - кодировка:
Цитата
<dcs>: получаемая схема кодирования данных (GSM TS 03.38).


Для транслита 15, кириллица - 68 вроде (см. пример ниже). То есть расшифровать автоматически можно, используя этот параметр.
(Есть нюанс, SIM300 он не касается, но касается PIML-ов и некоторых других. Не могут определить конец сообщения, в итоге длина его достигает почти 600 байт sad.gif )

Вот примеры.
Life:
Цитата
+CUSD: 2,"Dlya otrymannya bonusa 50hrn zalyshylos vykorystaty 49hrn do 31.07. Balans 5.11hrn, bonus 0.00hrn. Vyhidni poslugy do 15.10.07 .",15


МТС-Украина:

+CUSD: 0,"3238205541482C2064656A7374766974656C656E20646F2032302E30362E323030382C20746
17269666E796A2070",68 - ерунда какая-то здесь отображается, да вроде понятно wink.gif

Билайн-Украина:
Цитата
+CUSD: 2,"Suma na rahunku: 3.32 grn, na ulublenyy nomer 0.0 sec, SMS: 10.0, diysni do 2007-08-10 00:00:00, SMS v mereji: 0.0. Rahunok diysnyy do 2008-01-06 13:19:43.",15


Киевстар-припейд:
Цитата
+CUSD: 2,"Na rahunku: 29.34 grn. Bonusy: 0.00 grn; 0 hvyl-UKR; akcia "12x12": 0.00 grn; 0.0 SMS.",15
олег_уфа_81
огромное спасибо. :-)

не совсем понял эту строку:

Для транслита 15, кириллица - 68 вроде (см. пример ниже). То есть расшифровать автоматически можно, используя этот параметр.
(Есть нюанс, SIM300 он не касается, но касается PIML-ов и некоторых других. Не могут определить конец сообщения, в итоге длина его достигает почти 600 байт sad.gif )

т.е. SIM300 может сам расшифровывать кирилические сообщения? или я не правильно понял? если может, то каким образом? ткните носом в документацию плз. :-)
Harbinger
Цитата(олег_уфа_81 @ Oct 15 2008, 11:56) *
т.е. SIM300 может сам расшифровывать кирилические сообщения? или я не правильно понял? если может, то каким образом? ткните носом в документацию плз. :-)
Нет, не сам, конечно... но можно расшифровать, вооружившись вот этим документом: GSM TS 03.38.
олег_уфа_81
спасибо огромное :-)

хочу ещё один момент уточнить: в документации симкома (SIM300D_ATC_V1.06) есть такое:

AT+CUSD=[<n>[,<str>[,<dcs>]], где

<n> a numeric parameter which indicates control of the unstructured supplementary service data
0 disable the result code presentation in the TA
1 enable the result code presentation in the TA
2 cancel session (not applicable to read command response)
<str> string type USSD-string
<dcs> Cell Broadcast Data Coding Scheme in integer format (default 0)

в этом этом же самом файле, правда в описании другой команды для <dcs> есть следующие параметры:

<dcs > integer: data coding scheme used for <text>.
The schemes used are as per GSM 03.38 for SMS.
0 7bit GSM default alphabet (packed)
4 8bit data
8 UCS2 alphabet

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

правильным ли будет такой запрос? :

AT+CUSD=1,"*100#",4

чтобы получить USSD-ответ проверки счета в латинице? не судите строго, если туплю. :-)
Dron_Gus
Я думаю это относится к кодировке отпраляемого запроса, а не ответа. Может не прав. Сейчас тоже с этим разбираюсь.
олег_уфа_81
здравствуйте, уважаемые. :-)

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

прогнал запросы которые у меня не шли в програме в гипертерпинале... и выяснилось, что при получении USSD проверки баланса в кирилице длинна, строки, возвращаемой модемом может достигать приблизительно 300 знаков, а возможно и больше... так что у меня бсе сводилось к банальному переполнению промежуточного буффера, в который я выдергваю данные из кольцевого, в который велятся данные с последовательного порта. такая вот загагулина.

с транслитом все работает замечательно и без проблем. а вот с кирилицей надо будет ещё поработать.

такая вот загогулина. всем спасибо, кто помогал. :-)
vinrom
Код

AT+CSCS="UCS2"
OK
AT+CUSD=0,"002A0031003000320023"
+CUSD: 0,"04110430043B0430043D044100200030002E0030003300200434043E043B043B002E00
200414043E002000330031002E00310032002E0030003800200413043E0432043E0440044F044904
3504350020043F04380441044C043C043E002D003100350020043A043E043F04350435043A002E04
18043D0444043E0020003000360030003400330034"

OK

Кодировку команды CUSD третьим параметром пробовал указывать, не помогло. Правда не СимКом, а сониерикссон т610 smile.gif
skaarj
на днях разбирался с проверкой счета через ussd, все замечательно получается, по ходу возник интересный врпрос:если в лайфе послать запрос *123#,приходит в ответ меню с приглашением выбрать пункт. на мобилке все просто- жмем соответствующую цифру и входим в следующий уровень меню. а как это правильно сделать с терминалки?
Палыч
Цитата(skaarj @ Jun 2 2009, 13:58) *
на мобилке все просто- жмем соответствующую цифру и входим в следующий уровень меню. а как это правильно сделать с терминалки?
Подозреваю, что выдать AT-команду формирования DTMF-сигнала, соответствующего клавише с цифрой.
Harbinger
Насколько помню, снова AT+CUSD, например, 2-й пункт: AT+CUSD=1,"2".
Память не подвела: smile.gif
Цитата
at+cusd=1,"*123#"at+cusd=1,"*123#"

+CUSD: 1,"1.Kontent bez mezh
2.Novi Igry
3.Shoker!
4.Otrymaite Pryzy
5.Internet
6.life:) Sotnya&Tysiacha
7.Perekaz balansu
8.MeloRing
9.Kartynky i melodii
10.lifebox bils",15
PLEASE SELECT

OK
at+cusd=1,"7"at+cusd=1,"7"

+CUSD: 1,"1.Akciya
2.Opys
3.Yak zapytaty perekaz balansu
4.Perekazaty balans
5.Vartist'
0.Nazad",15
PLEASE SELECT

OK
at+cusd=1,"5"at+cusd=1,"5"

+CUSD: 1,"SMS-zapyt z prohanniam pro perekaz balansu ne oplachuiet'sia. Vartist' odnogo uspishnogo perekazu balansu stanovyt' 0,70 hrn (z PDV, bez PF).
0. Nazad",15
PLEASE SELECT

OK
at+cusd=1,"0"at+cusd=1,"0"

+CUSD: 1,"1.Akciya
2.Opys
3.Yak zapytaty perekaz balansu
4.Perekazaty balans
5.Vartist'
0.Nazad",15
PLEASE SELECT

OK

На повторы команд в одной строке внимания не обращайте - это Easyport так эхо отображает.
(off) Попутно выяснил, что повысилась стоимость перевода. Хотя бы SMS-кой известили, что ли...
skaarj
о, спасибо большое! оказывается, все время бродил вокруг да околоsmile.gif
Harbinger
Однако не без "ложки дёгтя". USSD-меню может тасоваться оператором произвольным образом, и не факт, что нужный пункт не будет в любой момент перемещён или переименован. sad.gif С лайфовским меню, кроме того, некорректно работают некоторые терминалы (на чипсете MTK в основном - вплоть до рестарта).
SIM Toolkit, по наблюдениям, более стабильная вещь, зависит в основном от партии карточек, хотя в принципе приложение в современную SIM-карту можно загрузить и по эфиру. (Мутновато, правда, с ним работать).
head_sk
Вопрос для тех кто с Украины. Есть симки Лайфа, Киевстара и Джинс. Как сделать что бы хоть один из этих операторов запрос о балансе возвращал кириллицей??? Пишу прогу о проверке баланса, нужно рассмотреть вариант с кириллицей.
Lexi
А как правильно завершить сессию USSD несли инфа находится на заглавной страничке??
Но в тоже время, чтоб не вызвать проблему в случая, когда только одна страничка.

Просто как пример в Беларуси используется меню для проверки баланса с сессией USSD только лайф, мтс такого не использует в данном случае.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.