====== Сервис приема событий ====== ===== 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