Правило разрешения функции (featurerule)

Описание

Правило применяется после маршрутизации звонка на один из фичакодов с типами: 'mesh', 'prompt', 'monitor', 'pickup', 'callwaiting', 'barge', 'intercom', 'replace', voicemail', а также BLF подписки и уведомления - в момент соответствующей операции.

В тестовой трассировке правил маршрутизации применение правил разрешения не производится и соответствующие результаты не отображаются.

Если в соответствии с примененными фильтрами инициатора вызова и номера назначения не обнаруживается правил, разрешающих применение фичакода, вызов завершается отказом с кодом 403.

При создании домена автоматически создаются три правила: "default all" - полностью всем всё разрешающее, "default self" - разрешающее пользователям всё по отношению к самим себе, "default callmanager" - разрешающее пользователю callmanager всё по отношению ко всем. Первое из них должно быть выключено при настройке ограничений. Второе и третье должны в том или ином виде сохранять свое действие для нужд системных вызовов.

Ограничения

  • Коллекция недоступна в мастер-домене.

Поля

Структура сущности
{
  "id": uuid,
  "name": str,
  "types": str,
  "filter_from": str,
  "filter_to": str,
  "enabled": bool,
  "priority": int,
  "opts": {
    "title": str,
    "comment": str,
    "tab": array<obj>
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: name
Режим: in
Тип: str
По умолчанию: required

Имя правила.

Поле: enabled
Режим: in
Тип: boolean
По умолчанию: true

Выключатель правила.

Поле: types
Режим: in
Тип: array<str>
По умолчанию: required

Список типов абонентских функций (фичакодов), к которым применимо правило.
Возможные значения:

  • * - все виды функций.

  • blf - функция подписки на уведомления о смене состояния.

  • blf_details - функция детализации информации о вызове в BLF-уведомлении для целей отображения информации об инициаторе звонка.

  • pickup - функция перехвата вызова.

  • intercom - функция интерком.

  • barge - функция вторжение.

  • callwaiting - функция второго вызова при ограничении одновременно допустимого количества разговоров.

  • replace - функция подмены плеча в диалоге.

  • monitor - функция подключения к разговору в режиме прослушивания.

  • prompt - функция подключения к разговору в режиме суфлера.

  • mesh - функция подключения к разговору в режиме конференции.

  • voicemail - функция управления голосовым ящиком.

Поле: filter_from
Режим: in
Тип: str
"По умолчанию: "*"

Маска-фильтр номера источника.
Проверяется результат модификации правилами на предыдущих шагах маршрутизации.
Изначально на проверку попадает номер источника из поля username заголовка Referred-By, а при его отсутствии заголовка From, SIP-запроса INVITE, либо результат более сложного определения номера абонента-инициатора (например sipuser phonenumber, результат применения sipuser extension, правил преобразования callerid на esg и др.).
Режимы работы фильтров.

Поле: filter_to
Режим: in
Тип: str
По умолчанию: "*"

Маска-фильтр номера назначения.
Проверяется результат модификации правилами на предыдущих шагах маршрутизации.
Изначально на проверку попадает номер назначения из поля username заголовка To SIP-запроса INVITE.
Режимы работы фильтров.

Поле: priority
Режим: in
Тип: int
По умолчанию: 1000

Приоритет правила в последовательности поиска. Чем меньше значение, тем выше приоритет.
В связи с тем, что результатом применения правила является единственное действие - разрешить применение, приоритет не несет смысловой нагрузки.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

Произвольный комментарий

Поле: opts.tab
Режим: in
Тип: array<object>
По умолчанию: []

Табличные данные для использования фильтров (и модификаторов) в рамках одной сессии поиска маршрута.
Каждый объект в списке содержит произвольные поля, которые могут использоваться в маске в виде строки {tab:some_field}.
Подробнее в разделе Режимы работы фильтра, пункт 'Таблица'.

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Режимы работы фильтров

Table 2. Режимы работы фильтров
Режим Описание

Посимвольный

Подвергаемое проверке соответствия значение посимвольно проводится через фильтр.
Могут применяться следующие спец-символы и сочетания:

  • X – любой символ;

  • * – все оставшиеся символы;

  • {F} и {f} – исходное значение From username целиком;

  • {T} и {t} – исходное значение To username целиком;

  • {E} и {e} – пустое значение.

  • '?' - для фильтра по доменам. Любой символ кроме точки - разделителя доменных имен.

  • '$' - для фильтра по доменам. Любая последовательность символов кроме точки - разделителя доменных имен.

При необходимости указать один из служебных символов как целевой, его следует заключать в квадратные скобки, например [X].

Например, XXX – любое трехсимвольное значение.

Таблица

Может применяться подстрока {tab:…​}. С помощью нее можно выделить группу символов в проверяемом значении и сопоставить их с таблицей, встроенной в правило (opts.tab).
Например, {tab:a} - выделение подстроки и сопоставление ее с полем a всех объектов/строк в таблице.
Таблица служет связке нескольких полей фильтров и модификаторов. На основании последовательной проверки фильтров в таблице остается меньшее количество строк с учетом обнаруженных совпадений.
Первая из оставшихся строк служит для применения в модификаторах. При условии что в таблице не осталось строк - правило отклоняется.
Захват символов из проверяемого значения на основе маски может происходить автоматически, либо со строгим указанием длины подстроки:

  • {tab:KEY} - Автоматический захват из проверяемого значения.

  • {tab:KEY:LENGTH} - Захват указанного количества символов из проверяемого значения.

В качестве значений полей в таблице могут применяться:

  • константы;

  • регулярные выражения (для этого необходимо задать значение в формате /reg/EXPRESSION, например /reg/^1[1-4]$);

  • сопоставления с другими полями таблицы (для этого необходимо задать значение в формате /tab/FIELD, например /tab/a). Режим используется для связывания значений различных полей. Например, чтобы разрешить звонки только на собственный ящик голосовой почты. Необходимо строго соблюдать порядок связывания: если поле таблицы, на которое производится ссылка, еще не проверялось и не было заполнено реальным значением другого поля сущности, то сопоставление не пройдет. Порядок проверки полей сущности: filter_from, filter_to.

  • любое значение, применяемого без регулярного выражения (для этого необходимо задать /any). Режим полезен исключительно при организации прямых сопоставлений со значениями других полей без дополнительных фильтров.

Применение табличного модификатора допускается в комбинации с другими управляющими командами посимвольного режима.
Допускается кратное указание полей в одном модификаторе, повторение, указание несуществующих полей.

Например, {tab:a:3}XXXXX{tab:b} - позволяет выделить в номере 3-символьный код города и сопоставить с полем a в таблице, и одновременно выделить хвост начиная с 9 символа и сопоставить с полем b таблицы.

Regex

К исходному значению применяется шаблон Pattern.

Структура значения regex-шаблона:
/reg/Pattern1.

Например,- значение: "302"
- маска: "/reg/0"
- результат: true.

  • значение: "302"

  • маска: "/reg/^0$"

  • результат: false.

  • значение: "302"

  • маска: "/reg/^302$"

  • результат: true.

  • значение: "302"

  • маска: "/reg/^(301|302|305)$"

  • результат: true.

При формировании шаблонов Pattern могут применяться все стандартные правила регулярных выражений.

См. также

Логические роли

  • b2b проводит маршрутизацию и применение правил.