/domain/<DOMAIN>/core/statistics/calls/filter - команды управления фильтрами произвольной вызывной статистики
В системе ECSS-10 разработан механизм для создания пользователем произвольных метрик/статистик на основе вызывных данных (данных, на основе которых генерируются CDR, а именно mysql таблицы ecss_calls_db.tolltickets).
Каждый фильтр проверяет, если данный вызов соответствует заданным правилам rules (критериям, условиям), то в метрику с именем metric_name, переменными частями variable_part_1, variable_part_2 записывается +1 вызов. Т.е. метрика metric_name показывает сколько было вызовов, удовлетворяющих условиям описанным в правиле rules.
Список правил в фильтре работает по принципу "И", т.е. чтобы фильтр сработал все правила должны вернуть true.
Если же нам надо, чтобы в одну метрику попадали вызовы по разными критериям (по принципу "ИЛИ"), то необходимо сознать несколько фильтров, у которых параметр metric_name совпадает.
В качестве переменных частей (variable_part_1, variable_part_2), а также сравниваемого значения, можно использовать как фиксированные названия, так и макро-переменные. В этом случае вместо макро-переменной подставится значение из CDR записи вызова. Возможные значения макро-переменных:
- $OADDR_A - номер абонента А до маршрутизации
- $OADDR_B - номер абонента Б до маршрутизации
- $ADDR_A - номер абонента А после маршрутизации
- $ADDR_B - номер абонента Б после маршрутизации
- $RELEASE_CAUSE_A - Причина завершения вызова для абонента А
- $RELEASE_CAUSE_B - Причина завершения вызова для абонента B
- $RELEASE_CAUSE - Причина завершения вызова (зависит от release_initiator: 0/1 - для абонента А, 2 - для абонента B)
- $RELEASE_CAUSE_ISUP_A - ISUP причина завершения вызова для абонента А
- $RELEASE_CAUSE_ISUP_B - ISUP причина завершения вызова для абонента B
- $RELEASE_CAUSE_ISUP - ISUP причина завершения вызова (зависит от release_initiator: 0/1 - для абонента А, 2 - для абонента B)
- $RELEASE_INITIATOR - Сторона-инициатор релиза: 0 - system, 1 - calling, 2 - called
- $IFACE_A - Интерфейс абонента А
- $IFACE_B - Интерфейс абонента B
- $CATEGORY_A - Категория абонента А
- $CATEGORY_B - Категория абонента B
- $ENDPOINT_A_HOST - IP абонента А
- $ENDPOINT_A_PORT - Port абонента А
- $ENDPOINT_B_HOST - IP абонента B
- $ENDPOINT_B_PORT - Port абонента B
- $ISUP_SPC_A - SPC код абонента А
- $ISUP_SPC_B - SPC код абонента B
- $ISUP_DPC_A - DPC код абонента А
- $ISUP_DPC_B - DPC код абонента B
- $ISUP_NI_A - Тип сети абонента А
- $ISUP_NI_B - Тип сети абонента B
- $CIC_A - Номер CIC абонента А
- $CIC_B - Номер CIC абонента B
- $MODE - тип вызова(acd | callback | internal | message | mgm | normal | refer | supervise)
- normal - обычный вызов. Вызовы, не относящиеся ни к одной из категорий, упомянутых ниже в этом списке, являются обычными и обладают mode = normal.
- acd (automatic call distribution) - вызов, который инициирует очередь для соединения с оператором.
- callback - обратный вызов, инициируемый одним из сервисов ДВО. Например Alarm, Callback, Custom Callback, Autoredial With Callback.
- internal - служебный вызов, используемый некоторыми сервисами ДВО для внутренних нужд. Данные вызовы не попадают в CDR.
- message - вызов, инициируемый сервисом CSTA SendMessage (ECMA-269 17.1.24 Send Message).
- mgm - управление ДВО, выполняемое с телефонного аппарата.
- refer - вызов, инициируемый SSW, в ответ на сообщение Refer (IETF draft-mahy-sip-remote-cc-05 Remote Call Control in SIP using the REFER method and the session-oriented dialog package).
- supervise - вызов, инициируемый для присоединения к разговору супервизора КЦ.
- $OCDPN - оригинальный номер Б
- $RGN - redirecting number
- $RN - redirection number
- $TG_A - Транк-группа интерфейса абонента А
- $TG_B - Транк-группа интерфейса абонента B
- $CDR_GROUP - Имя CDR группы
- $IVR_WIDGET_ID - Идентификатор widget-а, для вызовов с IVR
- $CC_AGENT_A_ID - Идентификатор агента КЦ для абонента А
- $CC_AGENT_B_ID - Идентификатор агента КЦ для абонента B
- $CC_AGENT_A_GROUP - Имя группы, которой принадлежит агент КЦ для абонента А
- $CC_AGENT_B_GROUP - Имя группы, которой принадлежит агент КЦ для абонента B
- $CC_QUEUE - Имя очереди КЦ из которой пришел вызов
- $RATING - Значение из IVR блока "Оценка"
Отдельная категория макропеременных - динамически формируемые списки.
- $INVALID_NUMBER_RELEASE_CAUSES - список причин завершения вызова, отмеченных как "набор номера вне плана набора"
- $UNSUCCESSFUL_RELEASE_CAUSES - список причин завершения вызова, отмеченных как "неуспешные" (управляется с помощью команд /domain/<DOMAIN>/tts/statistics/<CMD> unsuccessful_release_causes)
Макропеременные на основе этих динамически формируемых списков работают только с оператором "in", и логически оправданное применение - только с фильтрами на основе release_cause_a(b), например:
release_cause_b in $UNSUCCESSFUL_RELEASE_CAUSE release_cause_a in $INVALID_NUMBER_RELEASE_CAUSES
Использовать эти макропеременные в качестве variable_part_1(2) нельзя.
Каждое из правил в рамках фильтра представляет собой набор из трех полей:
1. Имя поля, на которое действует данное правило.
Возможные имена полей:
- oaddr_a - номер абонента А до маршрутизации
- oaddr_b - номер абонента B до маршрутизации
- addr_a - номер абонента А после маршрутизации
- addr_b - номер абонента B после маршрутизации
- dialed_digits - набранные цифры
- release_cause_a - причина завершения вызова для стороны А
- release_cause_isup_a - ISUP причина завершения вызова для стороны А
- release_description_a - текстовое описание причины релиза для стороны А
- release_cause_b - причина завершения вызова для стороны B
- release_cause_isup_b - ISUP причина завершения вызова для стороны B
- release_description_b - текстовое описание причины релиза для стороны B
- release_initiator - сторона-инициатор релиза: 0 - system, 1 - calling, 2 - called
- iface_a - интерфейс абонента А
- iface_b - интерфейс абонента B
- display_name_a - displayName абонента А после маршрутизации
- display_name_b - displayName абонента B после маршрутизации
- category_a - категория абонента А
- category_b - категория абонента B
- endpoint_a_host - IP сигнализации абонента А
- endpoint_a_port - порт сигнализации абонента А
- endpoint_b_host - IP сигнализации абонента Б
- endpoint_b_port - порт сигнализации абонента Б
- original_called_num - оригинальный номера абонента Б в случае переадресаций
- redirecting_num - redirecting номер
- redirection_num - redirection номер
- trunk_group_id_a - ID транка для стороны А
- trunk_group_id_b - ID транка для стороны B
- ivr_widget_id - идентификатор widget-а, для вызовов с IVR (сервиса CallBack).
- cdr_group - имя CDR группы
- cc_agent_a_id - Идентификатор агента КЦ для абонента А
- cc_agent_b_id - Идентификатор агента КЦ для абонента B
- cc_agent_a_group - Имя группы, которой принадлежит агент КЦ для абонента А
- cc_agent_b_group - Имя группы, которой принадлежит агент КЦ для абонента B
- cc_queue - Имя очереди КЦ из которой пришел вызов
- rating - Значение из IVR блока "Оценка"
- dpc - параметр DPC для вызовов через SIGTRAN
- is_answered - флаг, отвечен ли вызов
2. Оператор, который применяется к полю из п.1
Возможные операторы:
- = - сравнение поля с введенным значением
- in - проверяется, что поле соответствует одному из значений в списке в п.3
- like - проверяет, что значение из п.3 является подстрокой поля из п.1 (доступно только для текстовых полей)
- digitmap - проверяется, что поле удовлетворяет digitmap-у, записанному в значение из п.3 (доступно только для полей, в которых содержатся номера телефонов).
А так же можно указать признак not, который означает что результат применения оператора будет инвертирован
3. Значение - значение для правила.
Возможные значения:
- фиксированное значение
- логически оправданная макропеременная
Команды CoCon-а, позволяющие в рамках домена добавлять произвольные вызывные метрики, удалять их, просматривать текущие фильтры:
add-rule
Данная команда добавляет правило для фильтра статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/add-rule
Синтаксис:
add-rule <ID> <FIELD> <OPERATOR> <VALUE>
Параметры:
- ID - уникальное в рамках домена имя фильтра;
- FIELD - имя поля в cdr-файле;
- OPERATOR - сравниваемый оператор;
- VALUE - значение поля.
Пример 1:
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/add-rule no_answer_calls_c release_cause_isup_b = 18 Filter rule successfully added. [exec at: 24.07.2020 09:07:46, exec time: 329ms, nodes: core1@ecss1]
Пример 2:
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/add-rule unsuccess_out_calls_c release_cause_b = $UNSUCCESSFUL_RELEASE_CAUSES Filter rule successfully added. [exec at: 24.07.2020 09:13:32, exec time: 240ms, nodes: core1@ecss1]
declare
Данная команда добавляет фильтр для вызывной статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/declare
Синтаксис:
declare <ID> <METRIC_NAME> [<OPTIONS>]
Параметры:
- ID - уникальное в рамках домена имя фильтра;
- METRIC_NAME - метрика, описываемая фильтром;
- Дополнительные опции:
- VAR1 - Переменная часть 1 данной метрики (опциональный параметр);
- VAR2 - Переменная часть 2 данной метрики (опциональный параметр);
- DESCRIPTION - описание;
- RULES - список правил, описывающих фильтр (опциональный параметр).
Пример 1: Создание фильтра для счетчика успешных вызовов на номер 240500.
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/declare vip_240500_answered answered_240500 --description "вызовы с ответом на 240500" --rules addr_b = 240500 Success: Filter 'vip_240500_answered' successfully declared. [exec at: 27.02.2020 10:36:10, exec time: 325ms, nodes: core1@ecss1]
Пример 2: Создание фильтра для метрики по isup_cause для транка ems1.
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/declare ems1_cause ems1_cause --description "статистика по isup causes" --rules iface_b = ems1 --var1 $RELEASE_CAUSE_ISUP Success: Filter 'ems1_cause' successfully declared. [exec at: 27.02.2020 10:42:18, exec time: 308ms, nodes: core1@ecss1]
info
Данная команда показывает информацию по фильтрам вызывной статистики.
Путь команды:
domain/<DOMAIN>/core/statistics/calls/filter/info
Синтаксис:
info <ID>
Параметры:
- ID - уникальное имя фильтра в рамках домена (опционально, без указания ID выводятся все)
Пример:
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/info ┌────────────────────────────────┬────────────────────────────────────────────────────┬────────────────────────────────┬─────────────────────┬───────────────┬────────────────────────────────────────────────────────────────────────┐ │ Filter name │ Rules │ Metric name │ Variable part 1 │Variable part 2│ Description │ ├────────────────────────────────┼────────────────────────────────────────────────────┼────────────────────────────────┼─────────────────────┼───────────────┼────────────────────────────────────────────────────────────────────────┤ │busy_calls_c │release_cause_a in [bPtyBusyUDUB, bPtyBusyNDUB] │busy_calls_c │ │ │Количество вызовов на занятых абонентов за период времени │ │empty_a_number_calls_c │oaddr_a = undefined │empty_a_number_calls_c │ │ │Количество поступивших в систему вызовов без номера вызывающего абонента│ │filter │release_cause_a != normal │metric │var1 │var2 │ │ │filter1 │is_answered = true │success_calls_c │ │ │"Просто с ответом" │ │filter2 │release_cause_isup_b = 16 │success_calls_c │$RELEASE_CAUSE_ISUP_B│ │"isup коз Б = 16" │ │filter3 │release_cause_isup_b != $UNSUCCESSFUL_RELEASE_CAUSES│success_calls_c │ │ │"Успешные козы" │ │no_answer_calls_c │release_cause_isup_b = 18 │no_answer_calls_c │ │ │Количество вызовов без ответа вызываемого абонента за период времени │ │ │is_answered = false │ │ │ │ │ │released_calls │ │released_calls │$RELEASE_CAUSE_A │ │Заверешенные вызовы │ │success_calls_c │is_answered = true │success_calls_c │ │ │Количество успешных вызовов за период времени │ │total_invalid_number_calls_c │release_cause_a in $INVALID_NUMBER_RELEASE_CAUSES │total_invalid_number_calls_c │ │ │Количество раз набора номера вне плана набора │ │total_trunk_in_calls_c │trunk_group_id_a != undefined │total_trunk_in_calls_c │ │ │Количество попыток внешних входящих вызовов за период времени │ │total_unsuccess_trunk_in_calls_c│release_cause_a in $UNSUCCESSFUL_RELEASE_CAUSES │total_unsuccess_trunk_in_calls_c│ │ │Общее количество неуспешных входящих вызовов │ │ │trunk_group_id_a != undefined │ │ │ │ │ │unsuccess_out_calls_c │release_cause_b = $UNSUCCESSFUL_RELEASE_CAUSES │unsuccess_out_calls_c │ │ │Общее количество неуспешных исходящих вызовов за период │ │ │release_cause_a in $UNSUCCESSFUL_RELEASE_CAUSES │ │ │ │ │ └────────────────────────────────┴────────────────────────────────────────────────────┴────────────────────────────────┴─────────────────────┴───────────────┴────────────────────────────────────────────────────────────────────────┘ [exec at: 24.07.2020 09:19:00, exec time: 14ms, nodes: core1@ecss1]
remove
Команда удаляет фильтр для вызывной статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/remove
Синтаксис:
remove <ID> [<OPTIONS>]
Параметры:
- ID - уникальное имя фильтра в рамках домена
Опции:
--purge_statistics - удалить статистику, связанную с фильтром (по умолчанию значение false)
Пример:
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/remove filter3 --purge_statistics Filter 'filter3' successfully removed [exec at: 24.07.2020 09:22:41, exec time: 284ms, nodes: core1@ecss1]
remove-rule
Команда удаляет правило для фильтра вызывной статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/remove-rule
Синтаксис:
remove-rule <ID> <NUMBER>
Параметры:
- ID - уникальное в рамках домена имя фильтра;
- NUMBER - номер правила для фильтра.
Пример:
admin@mycelium1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/remove-rule vip_240500_answered 1 Filter rule 'is_answered = true' successfully removed. [exec at: 28.02.2020 14:43:48, exec time: 342ms, nodes: core1@ecss1]
set
Команда позволяет изменить одну из опций существующего фильтра.
Путь команды:
domain/<DOMAIN>/core/statistics/calls/filter/set
Синтаксис:
set <ID> <OPTION> <VALUE>
Параметры:
- ID - уникальное в рамках домена имя фильтра;
- OPTION - одна из опций фильтра(description, variable_part_1, variable_part_2);
- VALUE - значение опции.
Пример:
admin@ds1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/set vip_240500_answered description New description: admin@ds1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/set vip_240500_answered description "Вызовы на 240500 отвеченные" Filter option successfully changed. [exec at: 02.03.2020 15:20:11, exec time: 257ms, nodes: core1@ecss1]