Перейти к содержанию
    

Баланс СИМ-карты: Ответы разных операторов на запрос

Здравствуйте,

интересуют ответы разных операторов России, Украины, Белоруссии на запрос баланса счета

 

ответ Киевстар и Beeline (Украина)

+CUSD: 1,"Na rahunku 34.00 grn. Bonusy: *100# null"

+CUSD: 1,"Na rahunku 26.30 grn. Nomer die do ...

 

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

 

встречаются ли отличия в ответах ДРУГИХ операторов - цифры между кавычкой и первым числом баланса, запись баланса словами, а не цифрами, или, скажем, запись баланса в виде "34 rub. 00 kop"

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже обсуждали это пару лет назад. Можно поискать темку. Но если кратко, то пришли к следующему:

Каждый оператор воротит как хочет, и более того может изменить формат ответа не предупреждая.

Например перед цифрами вставить рекламу. Это расчитано на то что человек будет читать ответ, а не железка.

Поэтому тогда пришли к выводу что унифицировать разбор отчетов не получится.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому тогда пришли к выводу что унифицировать разбор отчетов не получится.

 

можно частично решить проблему:

на SD иметь файлы под каждого оператора

oper250_001.ini
oper250_002.ini
oper250_020.ini
oper250_099.ini

 

где в каждом

[operator]
apn="internet.mts.ru"
login=""
password=""
dns1=""
dns2=""
balance_check="*100#"
balance_check_scanf="[b]Na rahunku %f grn[/b]"

 

Чуть-чего либо оператор ручками все корректирует, либо дополнение/исправление с сервера

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы,

 

похоже, особого смысла стремиться унифицировать ТОЛЬКО разбор ответа нет еще из-за того, что и номера для запроса баланса по операторам не одинаковы, уже вижу номера запросов *100#, *102#, *111#

 

тему нашел:

> Автоматическое определение баланса СИМ карточки, Выделение суммы из ответа на запрос USSD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я делаю так

если можно - включаю ответы ussd ТРАНСЛИТОМ (латинскими буквами). Например, Россия, Теле2 *120#

делаю запрос. Жду 6-7 секунд. Принимаю ответ. Выдаю абоненту первые 25 символов ответа. Пока проблем не было

Выделение по кавычкам, точкам и самим цифрам не есть универсальный метод: иногда операторы вставляют рекламу.

Например: только 12 мая 2015 мы предлагаем... или Магазин "Солнышко" дарит детям...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выдаю абоненту первые 25 символов ответа. Пока проблем не было

 

Ну можно и не так ограничивать, мои аппараты выдают весь текст, влезающий в СМС или меньше.

 

ЗЫ. Опсосы, конечно, плевали на нас, но уж в тарифах М2М могли и унифицированный ответ сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем за ответы,

думаю не декодировать все это в микроконтроллере, управляющем GSM-модемом, а только искать первую цифру после кавычки;

 

начиная с этой цифры, брать фрагмент ответа о балансе так, чтобы он заполнил остаток места в собственном смс,

передача от первой цифры даст экономию числа передаваемых символов, будет больше шансов, что остаток на счету попадет в одно сообщение.

 

Более гибкое декодирование можно будет сделать на компе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще имейте в виду. Если Ваше устройство попадет в Эмираты или еще куда на восток, то CUSD там не работает.

Баланс получают при помощи SMS, а CUSD используется в биллинге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если Ваше устройство попадет в Эмираты или еще куда на восток

 

 

даже далеко ехать не надо. Спб-МТС ( 250 01 ). Cusd говорит что "ожидайте смс с балансом"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы таким способом (см ReadBalance) баланс обрабатываем.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы таким способом (см ReadBalance) баланс обрабатываем.

 

Я не вижу смысла вообще его как-то обрабатывать,т.к. в 99% это информация, пересылаемая клиенту, а он уж "обработает" :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не вижу смысла вообще его как-то обрабатывать,т.к. в 99% это информация, пересылаемая клиенту, а он уж "обработает" :biggrin:

Не, смысл идеи - если пороговое значение баланса сработало, клиенту будут приходить напоминалки (мол пополни баланс). А если баланс в ажуре, клиента не нужно беспокоить какими-то смсками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

даже далеко ехать не надо. Спб-МТС ( 250 01 ). Cusd говорит что "ожидайте смс с балансом"

Омск, МТС: на CUSD иногда баланс приходит в ответе, а иногда так как Вы описали - в след. СМС. Никакой системы нет.

 

А если разбирать, то думаю нужно искать первую группу цифр включающих опционально точку или запятую. Реклама вряд-ли будет перед балансом, скорее всегда после.

Можно сделать более сложный анализ: искать все группы цифр (соответствующих вышеуказанному шаблону). Если найдено более одной такой группы, то далее - чтобы выбрать одну из этих групп, нужно построить рейтинги для них. Анализируем слова возле этих групп на равенство обозначению одной из валют: "руб", "гр" и др., также ищем слова типа "баланс", "счёт" и подобные типичные для баланса слова. На каждое такое нахождение увеличиваем рейтинг соотв. группы на некоторое число. Предварительно можно разбить весь текст на предложения по точкам и заглавным буквам. Список искомых ключевых слов выбирать в соответствии со страной, определённой по тел. номеру - искать "руб" если номер начинается на +3 не стоит.

Число, получившее максимальный рейтинг, и есть результат.

Такой алгоритм конечно не даёт 100%-ый результат.

Если где-нить найдёте список разных ответов от разных операторов, то можете на нём протестить готовый алгоритм.

 

Проблему с балансом в отдельном СМС решаем так:

ответ CUSD не разбираем сразу, ждём неск. секунд СМС, если получили - объединяем оба текста и анализируем вместе. CUSD будет в первом предложении. Рейтинг чисел в первом предложении сделать выше, чем во втором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У оператора на любой ваш хитрый алгоритм найдется болт с винтом. Я думаю, что у каждого оператора есть в штате человек, который непрерывно думает, как максимально усложнить жизнь таким как мы людям. Как обработать такой ответ: "Положите 10 руб. на счет и будет вам счастье! Позвоните по номеру 6372 и выиграйте 1000000 рублей! У Вас остаток MINUS 142." ? Городить нейросеть в несколько слоев для такой задачи по мне так перебор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...