Коллектор HMED-C занимается сбором и парсингом CDR для последующей передачи их на обработку в ядро предбиллинга.
Настройка сбора CDR из файлов
Предположим, АТС настроена таким образом, что сохраняет CDR в файлах с именем в формате cdr_12345.log в директории /tmp/cdr.
В таком случае коллектор нужно настроить следующим образом:
conf/local/collecting/collectors/default.yml
collectors: file: switch: paths: - directory: /tmp/cdr/ # путь к файлам с CDR filename_pattern: ^cdr_\d+\.log$ # регулярное выражение, соответствующее формату имени файлов с CDR
Для того, чтобы CDR собирались из нескольких директорий или по разным шаблонам имен файлов, в секции paths задается несколько спецификаций.
Коллектор реагирует на событие create файловой системы, таким образом обработка файла с CDR начинается немедленно после его создания.
Настройка парсинга CDR
conf/lcoal/collecting/parsers/default.yml
parsers: plain: switch_2: cdr_delimiter: "\n" # разделитель между CDR в файле (новая строка) preprocessors: # предобработчики строки перед разбором - type: substring begin: 1 end: -1 records: - matcher: # регулярное выражение для разбора CDR на поля # 1 2 3 4 5 6 7 # trk_a station_a trk_b station_b day month year hour minute second dur status pattern: ^(\w+) (\d+|-)[^\s]* (\w+) (\d+)[^\s]* (\d{2}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\d+) (\d+)$ fields: map: # соответствие полей CDR и строки, разобранной регулярным выражением # первое поле $g1, второе $g2 и т.д. trunk_a: $g1 station_a: $g2 trunk_b: $g3 station_b: $g4 call_datetime: $g5 duration_sec: int($g6) # приведение к целому числу termination_code: $g7
Доступны следующие предобработчики:
- substring– взятие подстроки
Параметры:- begin– начальная позиция;
- end– конечная позиция (-1– до конца строки);
- trim– обрезание пробельных символов с краев строки
Параметры:- direction– край строки (left – левый, right – правый)