Добавить парсер для агента телефонии

АСР LANBilling получает от АТС информацию о звонках в виде CDR-файлов. Разные модели АТС сохраняют записи о звонках в разных форматах. Чтобы биллинг мог обработать эти файлы, их необходимо преобразовать — для этого нужны парсеры. Парсеры для наиболее распространённых моделей АТС уже есть в АСР LANBilling, но вы можете добавить свой.

Форматы CDR делятся на два вида: бинарные и текстовые. В зависимости от того, какой формат использует ваша АТС, загрузите в АСР LANBilling файл парсера или файл конфигурации.

  • Бинарный формат — загрузите отдельный файл парсера.

  • Текстовый формат обрабатывает text_plug-in — он уже входит в АСР LANBilling. Вам нужно загрузить только файл конфигурации, в котором заданы правила разбора. Расширение файла — conf.

  1. Сохраните файл в директории /usr/local/billing/parsers/.

  2. Откройте форму агента LBphone. Перейдите на вкладку «Парсеры».

image
  1. Нажмите «Добавить».

  2. В открывшемся окне укажите название парсера. Также заполните описание — оно будет отображаться в других формах настроек.

image
  1. Выберите тип «парсер».

  2. Введите название файла.

image
  1. Нажмите «Сохранить».
image
  1. Сохраните файл в директории /usr/local/billing/parsers-configs/.

  2. Откройте форму агента LBphone. Перейдите на вкладку «Парсеры».

image
  1. Нажмите «Добавить».

  2. В открывшемся окне укажите название парсера. Также заполните описание — оно будет отображаться в других формах настроек.

image
  1. Выберите тип «файл конфигурации».

  2. Введите название файла.

image
  1. Нажмите «Сохранить».
image

Затем добавьте станцию — в её параметрах нужно будет указать парсер. Когда ваши абоненты будут совершать вызовы, LBphone определит, с какой станции они поступают, и подключит нужный парсер.

Парсер можно добавить в форме любого агента с типом LBphone. В дальнейшем парсер можно будет использовать для остальных агентов LBphone.

Когда завершите настройку, задайте параметры в файле конфигурации, а затем запустите модуль LBphone.

Порядок работы парсеров

  1. Когда агент LBphone запускается, он получает параметры настройки из БД LBcore. Среди этих настроек есть краткое название формата CDR — поле name в таблице pabxes. Также там содержится название парсера, работающего с этим форматом — поле plug-in в таблице pabxes. LBphone пытается загрузить этот парсер.

  2. Если удалось успешно загрузить и запустить плагин, агент входит в цикл обработки CDR-файлов. Агент получает CDR от станции, указанной в настройках, и передаёт файл плагину для обработки.

    Если запустить плагин не удаётся, работа агента прекращается, а в логе сохраняется запись «Cannot load plug-in!».

  3. Плагин обрабатывает CDR и преобразует записи в формат, который используется в АСР LANBilling: параметр_1=значение_1;параметр_2=значение_2;параметр_3=значение_3;…

    Запись о каждом звонке — отдельная строка, параметры разделены точкой с запятой.

    Список возможных параметров:

    • direction — направление вызова (входящий или исходящий);
    • duration — продолжительность разговора в секундах;
    • timefrom — время начала вызова (unixtime);
    • numfrom — номер адресата (номер А);
    • numto — внешний номер (номер Б);
    • trunk_in — признак оператора на входящей линии;
    • trunk_out — признак оператора на исходящей линии;
    • uniqueid — уникальный идентификатор звонка;
    • cause — причина завершения вызова;
    • amount — стоимость вызова по данным АТС;
    • numredirect — номер переадресации.

    Пример:

    direction=0;duration=50;timefrom=2012-01-01T00:00:00;numfrom=84957950677;numto=7450737;trunk_in=;trunk_out=;uniqueid=13;cause=1;
    

    ``

    Наличие того или иного параметра зависит от формата CDR и особенностей парсера.

    Если плагину не удаётся распознать запись, в логе агента сохранится запись «Cannot parse line: [исходная запись]». Необработанная запись будет добавлена в специальный файл для отфильтрованных вызовов.

  4. Агент LBphone получает данные от парсера и передаёт их в LBcore по протоколу JSON/TCP. Адрес и пароль для подключения задаются в конфигурационном файле LBphone. Например, «server = admin@127.0.0.1:1502».