====== Сервис приема событий ======
===== e3srv =====
Сервис обработки событий включает в себя программный сервис (демон) для ОС Unix под названием **e3srv**.
Сервис обработки событий необходим для реализации интерфейса приема информации (событий) от драйверов СПИ и передачи им команд телеуправления. Сервис обработки событий позволяет осуществлять интеграцию с разными типами СПИ путем описания всех передаваемых данных в стандартизованном виде с использованием формата передачи данных «JSON».
Конфигурирование сервиса обработки событий e3srv осуществляется с помощью файла конфигурации e3srv.cfg.
Пример e3srv.cfg по умолчанию:
//[server]
port=1110
connections=256
[database]
socket=/var/run/mysqld/mysqld.sock
;host=localhost
;port=3306
database=dozor
user=dozor
password=********
[log]
level=8//
Где секции «server»:
**port** – номер порта сервиса;
**connections** – максимальное число одновременных соединений,
в секции «database»:
**socket** – unix socket для взаимодействия с БД;
**database** – имя БД;
**user** – имя пользователя для доступа к БД;
**password** – пароль пользователя для доступа к БД.
===== Файл конфигурации =====
==== Парсинг баланса операторов связи ====
Для парсинга (разбора) ответов, получаемых в SMS и USSD сообщениях в сервисе приема сообщений используются [[https://www.gnu.org/software/findutils/manual/html_node/find_html/posix_002dextended-regular-expression-syntax.html|расширенные регулярные выражения POSIX]], те же что используются в утилитах egrep, gawk и т.п. Процессор регулярных выражений работает в текущей системной локали (по умолчанию utf-8) и производит регистронезависимый поиск и сопоставление.
В качестве результата используется указанная для регулярного выражения группа совпадения (но не более 9-й), содержимое которой приводится к числу с плавающей точкой.
По умолчанию все тексты SMS и USSD прогоняются через следующие регулярные выражения:
{ "баланс[ \t\n\r:=]*(-?[0-9]{1,}([.,][0-9]{2})?)", 1 },
{ "(^|[ \t\r\n])(-?[0-9]+([.,][0-9]{2})?) *р(уб)?\\.", 2 }
Для проверки регулярных выражений необходимо сохранить тестовые строки в отдельный файл, например:
Баланс: 220,81. Рекомендуйте друзьям мобильную связь и получайте вместе по 150 бонусов!
102.11 руб.
120 руб.
Долг -123,22р. Обещанный платеж *107*13#
123,222р.
120.00руб.
20 р
А затем пропустить его через утилиту egrep с проверяемым регулярным выражением:
cat balance.txt | egrep "баланс[ \t\n\r:=]*(-?[0-9]{1,}([.,][0-9]{2})?)"
И оценить результат:
220,81
Для всех регулярных выражений
cat balance.txt | egrep "(^|[ \t\r\n])(-?[0-9]+([.,][0-9]{2})?) *р(уб)?\\."
результат:
102.11
120
-123,22
120.00