|
|
  |
Автоматическое определение баланса СИМ карточки, Выделение суммы из ответа на запрос USSD |
|
|
|
Dec 14 2011, 06:31
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
Ответы на запрос баланса по USSD у всех операторов, мало того, что разные, так они ещё и меняются время от времени.
Я у себя делаю так:
- ловлю в ответе слово "Баланс" ("Balace", "Balans","OCTATOK") и считываю первое число после него, - если этих слов нет, считываю первое число и проверяю, что за ним есть буква 'р' или 'r', а в ответе нет слов "Ошибка", "Недоступен".
Но это срабатывает не всегда.
Например, из Казахстана прислали любопытный текст ответа (привожу по памяти): "На 12.11.2011 остаток на Вашем счету составляет...". Естественно, моё устройство этот ответ не распознало.
Приглашаю поделится опытом - кто как распознаёт ответ оператора на запрос баланса по USSD.
|
|
|
|
|
Dec 14 2011, 12:23
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
Цитата(KARLSON @ Dec 14 2011, 10:57)  А что если искать в тексте выражение число с точкой/запятой, после которой 2 цифры дальше пробел? Хотя если баланс например 10 р/$ нули после запятой/точки покажет?))
Вы этот баланс пользователю сообщаете? Может весь текст показывать? Нужно именно число. Во первых - для предупреждения о недопустимом снижении. А во вторых - для воспроизведения голосом.
|
|
|
|
|
Dec 14 2011, 13:35
|

Знающий
   
Группа: Свой
Сообщений: 926
Регистрация: 18-01-07
Пользователь №: 24 552

|
Цитата(Dmitrich @ Dec 14 2011, 13:31)  Ответы на запрос баланса по USSD у всех операторов, мало того, что разные, так они ещё и меняются время от времени.
Я у себя делаю так:
- ловлю в ответе слово "Баланс" ("Balace", "Balans","OCTATOK") и считываю первое число после него, - если этих слов нет, считываю первое число и проверяю, что за ним есть буква 'р' или 'r', а в ответе нет слов "Ошибка", "Недоступен".
Но это срабатывает не всегда.
Например, из Казахстана прислали любопытный текст ответа (привожу по памяти): "На 12.11.2011 остаток на Вашем счету составляет...". Естественно, моё устройство этот ответ не распознало.
Приглашаю поделится опытом - кто как распознаёт ответ оператора на запрос баланса по USSD. Не очень понял проблему... Вы парсите слово"остаток", затем ищете цифры. Если за словом "остаток" не цифры а текст листаете сообщение до цифр. Но если будет: "Остаток на 12.01.2011 на Вашем счету составляет..." нужен другой вариант. Надо подумать...
|
|
|
|
|
Dec 14 2011, 17:17
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Украинские сисопы все передают баланс только транслитом, без возможности переключения на кириллицу. Я тупо искал первую цифру и далее atof Вроде как работает в серии устройств (хотя это вспомогательная функция: светодиод мигает столько раз, сколько целых гривен на счету), пользователи могли ляпа и не заметить. Пример из Казахстана озадачил, пока концепции нет  Цитата(pau62 @ Dec 14 2011, 17:01)  Чем плохо найти 2 цифры, разделитель и еще 2 цифры? при том чтоб за ними на протяжении 3х символов не следовало одновременно точек, запятых и цифр. Предпочтительно чтоб перед этим было что-то типа "баланс" Наверное, именно так. Но слово "баланс" неуместно: например, МТС UA начинает прямо со значения баланса.
Сообщение отредактировал GeGeL - Dec 14 2011, 17:27
|
|
|
|
|
Dec 14 2011, 18:00
|

Знающий
   
Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819

|
Вот что ляпают операторы в Нижегородской области: ТЕЛЕ-2 "ОСТАТОК 82.96 р." Мегафон "399.20руб.Далее реклама" МТС "Баланс:679,67р,Лимит:650р"
Получается самый верный результат ищем число (например не более 6 цифр), затем разделитель, затем 2 цифры, после них цифр быть не должно. Одно НО - не знаю как выглядят сообщения с целым балансом.
Вообще, если есть связь с компьютером, то лучше через регулярные выражения.
Сообщение отредактировал KARLSON - Dec 14 2011, 18:00
--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
|
|
|
|
|
Dec 14 2011, 22:32
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177

|
Гм... А почему бы не _попросить_ у операторов нужный для м2м формат выдачи баланса?  По отдельному USSD запросу. Что нибудь вообще без слов, с идентификатором валюты. В стиле 320,RUR,0,RUR,1,1,1,0 (320 руб на счету, кредитный лимит 0, GPRS доступен, CSD доступен, SMS доступен, голос недоступен) Если будут хорошие идеи как сформатировать - обязуюсь довести эту просьбу до "правильных" людей по меньшей мере у одного оператора "тройки".
|
|
|
|
|
Dec 15 2011, 05:09
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
Цитата(Velund @ Dec 15 2011, 02:32)  Гм... А почему бы не _попросить_ у операторов нужный для м2м формат выдачи баланса?  По отдельному USSD запросу. Во первых, вряд ли услышат. Во вторых, мне же неизвестно в каком месте, у какого оператора, и с каким тарифом будет работать устройство. Я уж упоминал Казахстан. Как туда его занесло? Цитата Что нибудь вообще без слов, с идентификатором валюты. В стиле 320,RUR,0,RUR,1,1,1,0 Было бы здорово... Но, видимо, не в этой жизни. Цитата Если будут хорошие идеи как сформатировать - обязуюсь довести эту просьбу до "правильных" людей по меньшей мере у одного оператора "тройки".  Придумать форматирование - не проблема. Насчёт реализации сомневаюсь. А было бы здорово. Ведь появились же у операторов тарифные планы, ориентированнные на м2м. Та же "Телематика" у МТС. Приятные цены на трафик, разумная тарификация + термостойкая СИМка без зловредных счётчиков - позволяют решить кучу проблем. Да к этому добавить бы ещё дополнительную информацию по USSD - было бы вообще здорово! Ну вот, опять размечтался... Цитата(CADiLO @ Dec 14 2011, 18:07)  Может быть искать название денег - рубли-гривны-тугрики, наверняка всегда будет после суммы..... Не подходит. Во первых, не всегда они есть. Во вторых - часто приходит ответ типа "Сервис недоступен", а за этим текстом идёт какая нибудь реклама с указанием цены.
|
|
|
|
|
Dec 15 2011, 07:54
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-05-09
Пользователь №: 49 051

|
Цитата(Dmitrich @ Dec 14 2011, 10:31)  Ответы на запрос баланса по USSD у всех операторов, мало того, что разные, так они ещё и меняются время от времени.
Я у себя делаю так:
- ловлю в ответе слово "Баланс" ("Balace", "Balans","OCTATOK") и считываю первое число после него, - если этих слов нет, считываю первое число и проверяю, что за ним есть буква 'р' или 'r', а в ответе нет слов "Ошибка", "Недоступен".
Но это срабатывает не всегда.
Например, из Казахстана прислали любопытный текст ответа (привожу по памяти): "На 12.11.2011 остаток на Вашем счету составляет...". Естественно, моё устройство этот ответ не распознало.
Приглашаю поделится опытом - кто как распознаёт ответ оператора на запрос баланса по USSD. Из своего опыта - 100% достоверного результата получить не удастся: ответы операторов не формализованы, положение баланса в строке может быть различным, денежные единицы обозначаются по разному, дополнительно к значению баланса может быть реклама типа "получите 25 р на ваш счет". Остановился на том, что отдаю целиком результат запроса пользователю в виде "как есть".
|
|
|
|
|
Dec 15 2011, 08:11
|
Знающий
   
Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954

|
Цитата(ilya_nn @ Dec 15 2011, 11:54)  Из своего опыта - 100% достоверного результата получить не удастся: ответы операторов не формализованы, положение баланса в строке может быть различным, денежные единицы обозначаются по разному, дополнительно к значению баланса может быть реклама типа "получите 25 р на ваш счет". Но у одного оператора ответ всегда одинаков, по крайней мере ключевые места меняется не часто. Поэтому надо просто дать возможность пользователю задавать маску. Цитата Остановился на том, что отдаю целиком результат запроса пользователю в виде "как есть". Это хорошо если стоит задача по запросу пользователя передать ему ответ. Но часто задача стоит по другому - автоматически контролировать состояние счета и отправить сообщение если сумма на счету меньше заданной и в этом случае без парсинга ответа не обойтись.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|