Reply to comment

USSD widget

Одна из наиболее неудобных недоработок N900 - это отсутвие поддержки USSD запросов. В основном они используются для активации всевозможных услуг и отображения информации, такой как баланс счета, количество оставшихся минут или СМС. С учетом того, что в России большинство тарифов с предоплатой, не знать текущий балан весьма неудобно. А возможность видеть его на рабочем столе была бы очень кстати. Для решения этой проблемы был разработан USSD widget.

Как это выглядит

Возможности:
  • На рабочем столе можно разместить несколько виджетов
  • Настраиваемые цвета и шрифт
  • Позволяет обрабатывать ответы операторов перед отображением
  • неблокирующие запросы
  • Поддержка локализации (русский поддерживается)
  • Обновление по таймеру и повторные запросы при сбоях
  • Автоматическое изменение размера
Виджет можно скачать из репозитория extras-devel.

Как это работает

Виджет может быть активирован нажатием пальцем, таймером обновления или таймером повтора. USSD запрос посылается оператору и возможно два исхода:
  • Вам повезло и оператор ответил. Ответ будет обработан регулярным выражением (если оно было указано) и далее будет рассматриваться только подошедшая под выражение часть ответа. Эта часть пересылается обработчикам и следующему звену, это программы, которые каким-то образом могут отреагировать на USSD ответ
    • Обработчик должен обработать ответ и вывести на stdout строку, которая должна быть показана. Это можно использовать для произвольной трансформации ответов. Существует два обработчика: один для текста, располагаемого на виджете, а второй для текста, размещаемого на баннере (всплывающая желтая полоска, пересекающая экран)
    • Следующее звено может делать все, что вам заблагорассудится. Я его делал для сбора логов и статистики, но соответствующие программы еще не написал.
  • В процессе запроса случился сбой. Виджет на 5 секунд покажет надпись "Ошибка" и покраснеет. Если был указан шаблон повторных запросов, будет запущен таймер повтора.

Настройки

У USSD-widget много настроек потому, что я хотел сделать его универсальным. Это означает, что, как правило, большинство из них менять не нужно. Вам точно понадобится указать USSD номер, возможно вам пригодится регулярное выражение и, может быть, вам захочется указать интервал обновления и шаблон повторных запросов. В любом случае, все настройки либо имеют понятные названия, либо большую кнопку со знаком вопроса, которая покажет справку.

Как мне обрезать СПАМ, чем могут помочь регулярные выражения?

Многие операторы добавляют СПАМ к полезной информации. От него можно избавиться двумя способами: простым и универсальным. Простой - это использовать регулярные выражения чтобы описать полезную часть строки. Например
(.+?[\\d\\,\\.]+)
описывает произвольную строку до первого вхождения числа (с дробной частью). Подходит для большинства сообщений о балансе. Примеры для различных операторов (сообщены пользователями, я их не проверял):
Мегафон: (Баланс \d+\.\d+руб\.)
Италия, Wind: .*(\d+\.\d+).*euro.*
Все до мервой буквы б (из слова "руб", предположительно) с следующейза ней точкой: (.+?б\.)
Vodafone: .+?([0-9\.]+EUR)
При составлении запроса помните, что баланс еще может быть отрицательным. Мой оператор в таком случае дописывает слово "минус" перед суммой. В таком слуае, если вы регулярным выражением вырежете только цифры, вы не сможете отличить отрицательный баланс от положительного.

Как отображать имя виджета постоянно?

Используйте обработчик. Например указав в качестве обработчика
echo "1st number"
вы заставите виджет все время показывать строку "1st number". А
echo "Имя: %"
будет показывать "Имя: <ответ оператора>".
Обработчики для виджета и баннера задаются раздельно, так что вы можете показывать на них разные строки. Например, если виджет используется для активации услуги, можно на виджете показывать название услуги, а ответ оператора показывать на баннере. Также вы можете добавить название виджета или услуги на бенер, чтобы было понятно, что это за надпись высветилась на экране.

Как выполнить несколько команд в обработчике

Виджет умеет запускать только одну команду. Но вы можете написать. But you can write bash скрипт (конечно можно использовать и другой язык программирования) который будет выполнять несколько команд, а виджет настроить на запуск этого скрипта.

Что мне делать, если виджет не работает?

Откройте X-terminal и выполните в нем:
python /usr/lib/hildon-desktop/ussd-widget.py
Теперь у вас появится еще один виджет, а вся отладочная информация будет печататься в консоли. Не забудьте настроить новый виджет. Если вы хотите воспользоваться настройками уже существующего виджета, то укажите его номер в конце строки. Например:
python /usr/lib/hildon-desktop/ussd-widget.py 0
возьмет настройки первого виджета, добавленного на рабочий стол стандартными средствами.

Обработка СМС и совмещение регулярных выражений с обработчиками

Эти возможности были добавлены в версии 0.1.6 и описаны в описании изменений.

Reply

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.