Обработка логов 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.
Идем на вкладку логов и обрабатываем. Если что-то не так, то на вкладке ошибки.
Далее вручную ставим баланс.