Runtime обработчик логов CDR
Модуль Voice поддерживает обработку логов CDR по мере появления их в папке. Для этого в типе устройства надо поставить - Runtime обработчик логов CDR.
Чтобы он работал нужно раскомментировать вот эту секцию в файле voice-application.xml приложения BGVoiceProcesso:
<context name=
"logsRuntime"
>
<bean name=
"logRuntimeProcessor"
class
=
"ru.bitel.bgbilling.modules.voice.accounting.mediation.runtime.LogRuntimeProcessor"
>
</bean>
</context>
Это обработчик работает обычно в паре с обработчиком логов CDR . Runtime обработчик берет логи новые в какой-либо папке, обрабатывает и перекладывает их в другую папку, разложенную по дням и часам.
А обычный обработчик логов CDR используется потом для обработки этих логов повторно в ручном режиме в случае каких-либо корректировок.
Runtime обработчик периодически опрашивает папку в которой появляются логи, и частота опроса задается настройка в устройтве:
log.runtime.cronTab=
0
0
/
2
* * * ?
Тут задается расписание в формате cron в формате cron библиотеки Quartz. А данном примере запускается каждую вторую минуту( 0,2,4,6...). Если не задать эту настройку на устройстве, то Runtime обработчик логов работать не будет.
Как примеры доступны некоторые обработчики в стандартной поставке и так же можно создавать свои.
В стандартной поставке есть пример пары связанных обработчиков логов для АТС Asterisk:
ru.bitel.bgbilling.modules.voice.dyn.mediator.asterisk.AsteriskMediator - обработчик логов CDR.
ru.bitel.bgbilling.modules.voice.dyn.mediator.asterisk.AsteriskRuntimeMediator - runtime обработчик логов CDR.
Также можно создавать свои обработчики. Runtime обработчик должен реализовывать интерфейс ru.bitel.bgbilling.modules.voice.accounting.mediation.runtime.RuntimeMediator:
/**
* Интерфейс Runtime обработчика логов CDR.
*
*/
public
interface
RuntimeMediator
{
/**
* Метод инициализации
* @param setup Насройки приложения
* @param moduleId код модуля
* @param device устройсто
* @param deviceType тип устройства
* @param config конфигуруция устройства
* @return Object. Можно вернуть null
* @throws BGException В случае каких либо ошибок
*/
Object init( Setup setup,
int
moduleId, VoiceDevice device, VoiceDeviceType deviceType, ParameterMap config )
throws
BGException;
/**
* Map записей упрядоченный по часам.
*/
SortedMap<Date, List<VoiceRecord> > getNewRecords()
throws
BGException;
}