/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@ds1@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: 16.02.2021 11:36:24, exec time: 156ms, nodes: core1@ecss1 v.3.14.7.585]
Пример 2:
admin@ds1@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: 16.02.2021 11:36:49, exec time: 160ms, nodes: core1@ecss1 v.3.14.7.585]
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@ds1@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: 16.02.2021 11:37:21, exec time: 150ms, nodes: core1@ecss1 v.3.14.7.585]
Пример 2: Создание фильтра для метрики по isup_cause для транка ems1.
admin@ds1@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: 16.02.2021 11:39:01, exec time: 165ms, nodes: core1@ecss1 v.3.14.7.585]
info
Данная команда показывает информацию по фильтрам вызывной статистики.
Путь команды:
domain/<DOMAIN>/core/statistics/calls/filter/info
Синтаксис:
info <ID>
Параметры:
- ID - уникальное имя фильтра в рамках домена (опционально, без указания ID выводятся все)
Пример:
admin@ds1@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 │ │ │Количество поступивших в систему вызовов без номера вызывающего абонента│ │ems1_cause │iface_b = ems1 │ems1_cause │$RELEASE_CAUSE_ISUP│ │статистика по isup causes │ │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 │ │ │ │ │ │vip_240500_answered │addr_b = 240500 │answered_240500 │ │ │вызовы с ответом на 240500 │ └────────────────────────────────┴─────────────────────────────────────────────────┴────────────────────────────────┴───────────────────┴───────────────┴────────────────────────────────────────────────────────────────────────┘ [exec at: 16.02.2021 11:39:46, exec time: 29ms, nodes: core1@ecss1 v.3.14.7.585]
remove
Команда удаляет фильтр для вызывной статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/remove
Синтаксис:
remove <ID> [<OPTIONS>]
Параметры:
- ID - уникальное имя фильтра в рамках домена
Опции:
--purge_statistics - удалить статистику, связанную с фильтром (по умолчанию значение false)
Пример:
admin@ds1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/remove ems1_cause --purge_statistics Filter 'ems1_cause' successfully removed Metric 'ems1_cause' was purged [exec at: 16.02.2021 11:41:35, exec time: 5s 147ms, nodes: core1@ecss1 v.3.14.7.585]
remove-rule
Команда удаляет правило для фильтра вызывной статистики.
Путь команды:
/domain/<DOMAIN>/core/statistics/calls/filter/remove-rule
Синтаксис:
remove-rule <ID> <NUMBER>
Параметры:
- ID - уникальное в рамках домена имя фильтра;
- NUMBER - номер правила для фильтра.
Пример:
admin@ds1@ecss1:/$ domain/biysk.local/core/statistics/calls/filter/remove-rule vip_240500_answered 1 Filter rule 'addr_b = 240500' successfully removed. [exec at: 16.02.2021 12:40:53, exec time: 161ms, nodes: core1@ecss1 v.3.14.7.585]
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 "Вызовы на 240500 отвеченные" Filter option successfully changed. [exec at: 16.02.2021 11:40:47, exec time: 159ms, nodes: core1@ecss1 v.3.14.7.585]