Обработка логов CDR происходит с помощью обработчика в динамическом коде, он реализует парсинг логов.
В поставке модуля есть
- ru.bitel.bgbilling.modules.voice.dyn.mediator.phone.DefaultMediator - разбирает логи в формате старого модуля Phone. Сделан для совместимости.
- ru.bitel.bgbilling.modules.voice.dyn.mediator.m200.M200Mediator - разбирает логи в формате АТС M-200.
- ru.bitel.bgbilling.modules.voice.dyn.mediator.asterisk.AsteriskMediator - разбирает логи в формате АТС Asterisk.
Если вы будете использовать какой-то из этих обработчиков и собираетесь его менять, то рекомендуем сделать его копию в другом пакете и использовать, тогда они не будут перетираться при обновлении.
Новые медиаторы будут будут описаны в нашей WiKi или документации.
Так же возможно написать свой Mediator для любой АТС. Вот описание интерфейса 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 ); }