Описание работы HMED-M
Демон HMED-M (Mediation) является ядром предбиллинга. Его задачей является обработка поступающих с коллектора разобранных CDR по заданным правилам.
Обработка происходит в процессоре по цепочке фильтров. После завершения обработки результат проверяется валидаторами.
Основные настройки
Помимо общих настроек доступны следующие параметры:
conf/local/mediation/default.yml
sources: amqp: mediation: # входная очередь разобранных CDR # значение должно совпадать с выходной очередью HMED-C consumer: amqp/mediation destinations: amqp: ocs: # выходная очередь обработанных CDR # обработанные CDR передаются в тарификатор (HOCS) producer: amqp/ocs error: # выходная очередь CDR, обработанных с ошибкой producer: amqp/error handlers: default: destinations: # список выходных очередей - amqp/ocs error: destinations: # список выходных очередей для CDR, обработанных с ошибкой - amqp/error constants: # константы, доступные для использования в спецификациях фильтров через переменную $consts number_length: 11 workers: # список воркеров - processor: base/switch # воркер реализует процессор base со спецификацией switch
Настройка фильтров
Настройка процессоров
conf/local/mediation/default.yml
processors: # тип процессора base: # спецификация switch: # валидатор (тип/спецификация) validator: base/main # цепочка фильтров filters: - skip/if_duration_is_0 # тип/спецификация - set/short_trunk_a_name - set/full_trunk_a_name - set/route_a_by_trunk_a - replace/dash_in_station_a_with_zeros - if/station_a_length_is_7 - prepend/pl_922_station_a_with_7499 # в скобках передаются аргументы, доступные в фильтре через переменную $args # $args[1] - первый аргумент, $args[2] - второй и т.д. - prepend/station_a_with('7495') - prepend/station_a_with('7') - replace/leading_string_in_station_a('8495', '7495') - replace/cut_international_prefix_in_station_b ... map: call_begin: time.mktime(datetime.datetime.strptime($cdr.call_datetime, '%d-%m-%y %H:%M:%S').timetuple()) service_code: "'M200'"