Обработка логов CDR происходит с помощью Mediator-а, он реализует парсинг логов. В поставке модуля phone есть пример DefaultMediator, он парсит логи в формате модуля Phone. Сделан для совместимости. Формат описан тут.
Так же возможно написать свой Mediator для любой АТС. Новые медиаторы будут будут описаны в нашей WiKi. Вот описание интерфейса Mediator-а:
Блок кода |
---|
/**
* Интерфейс медиатора логов, парсит логи.
*
*/
public interface Mediator
{
/**
* Метод инициализации
* @param setup
* @param moduleId
* @param device
* @param deviceType
* @param config
* @return
* @throws Exception
*/
public Object init( Setup setup, int moduleId, VoiceDevice device, VoiceDeviceType deviceType, ParameterMap config )
throws Exception;
/**
* Считывание новых записей за час. Новую запись надо получать так
* VoiceRecord record = processor.next();
* И потом заполнять все поля
* @param processor
* @param hour
* @throws Exception
*/
public void readHourDataLog( VoiceRecordProcessor processor, Date hour )
throws Exception;
/**
* Данные по существованию логов. data - массив из 31 элемента, где каждый элемент
* это битовая маска часов конкретного дня месяца.
* @param month
* @param data
*/
public void getLogExists( Date month, int [] data );
} |
Мы добавляем новый тип устройства. На нем выбираем Медиатор.
Далее добавляем устройство нашего типа. Указываем путь к логам.
Настраиваем BGVoiceProcessor.
Идем на вкладку логов и обрабатываем. Если что-то не так, то на вкладке ошибки.
Далее вручную ставим баланс.
Модуль может обрабатывать CDR выгружаемые с АТС. В связи с тем, что CDR разных станций отличаются по формату, для их первичного разбора используются обработчики(медиаторы) реализованные в виде динамического кода. В составе АСР есть ряд медиаторов для разных АТС которые могут быть использованы как в готовом виде, так и модифицированы для конкретной АТС. После обработки логов медиатором CDR поступают в следующий обработчик, который по данным в CDR сопоставляет ее с соответствующими аккаунтами на договорах, рассчитывает стоимость и создает записи в БД. Если CDR не удалось сопоставить ни с каким аккаунтом или не найден тариф, стоимость, напраление и т.д. формируется соответствующая запись в логе ошибок.
Всем выше перечисленным занимается отдельное приложение BGVoiceProcessor.