Правила записи (recordrule)

Описание

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

В одном телефонном разговоре участники могут принадлежать разным доменам.
Процесс принятия решения о записи состоит из
(1) Определения участников звонка и их доменов и подготовки параметров поиска.
(2) Определение правила записи в домене инициатора.
(3) В случае кросс-доменного звонка определение правила записи в домене вызываемого абонента.
(4) Принятие решения о записи на основе положительного решения о записи хотя бы в одном из доменов.
По умолчанию разговоры не записываются.

Записи хранятся в доменных хранилищах. Варианты:
* NFS папка, присоединенная к NFS серверу и подключенная в качестве волюма в контейнер системы. При инсталляции в эту папку размещается файл 'rshare.sign', указывающий на доступность сервера.
* При тех же условиях, если папка не является подключенной к NFS, то размещается локально на сервере с ролью recmover. При обращении к файлу перебираются все серверы, где активны экземпляры recmover.
* в S3 хранилище (если для такового в домене создано и настроено хранилище, и в правиле записи указан его код из поля 'instance').

Позволяет также настроить запись посредством siprec (RFC-7866), streamed_call_rec, mixed_call_rec.

Ограничения

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

Поля

Структура сущности
{
  "id": uuid,
  "priority": int,
  "dir": str,
  "fromnumber": str,
  "tonumber": str,
  "crossdomain": str,
  "rec": intbool,
  "storageruleid": uuid,
  "schedule": str,
  "periods": array<object>,
  "opts": {
    "title": str,
    "comment": str
  }
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

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

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

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

Приоритет. Меньшее значение означает более высокий приоритет.

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

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

Маска-фильтр номера инициатора вызова.
Режимы работы фильтров.

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

Маска-фильтр вызываемого абонента.
Режимы работы фильтров.

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

Маска-фильтр другого домена.
Применяется только в ходе обслуживания кросс-доменных звонков.
Режимы работы фильтров.

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

Выключатель режима стандартной записи средствами платформы. Каналы абонентов записываются раздельно, микшируются в соответствии с настройками микросервиса mixer в конфигурации, переносятся в хранилища доменов.
1 – записывать, 0 – не записывать.
В случае если кросс-доменный звонок в обоих доменах обнаруживает разные действия, запись осуществляется, но не попадает в домен, отказавшийся от записи.

Поле: siprec
Режим: in
Тип: intbool
По умолчанию: false

Выключатель режима записи посредством siprec (RFC-7866).
1 – записывать, 0 – не записывать.
В случае если кросс-доменный звонок в обоих доменах обнаруживает разные действия, siprec-вызовы осуществляются только в соответствии с настройками домена, запросившего запись.
Подробнее о настройках режима 'siprec'.

Поле: streamed_call_rec
Режим: in
Тип: intbool
По умолчанию: false

Выключатель режима записи посредством двух SIP-вызовов, где первый транслирует канал абонента-инициатора, а второй - канал вызванного абонента.
1 – записывать, 0 – не записывать.
В случае если кросс-доменный звонок в обоих доменах обнаруживает разные действия, вызовы осуществляются только в соответствии с настройками домена, запросившего запись.
Подробнее о настройках режима 'streamed_call_rec'.

Поле: mixed_call_rec
Режим: in
Тип: intbool
По умолчанию: false

Выключатель режима записи посредством SIP-вызова, транслирующего смикшированный диалог двух абонентов.
1 – записывать, 0 – не записывать.
В случае если кросс-доменный звонок в обоих доменах обнаруживает разные действия, вызовы осуществляются только в соответствии с настройками домена, запросившего запись.
Подробнее о настройках режима 'mixed_call_rec'.

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

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

НЕ ИСПОЛЬЗУЕТСЯ. Очистка хранилищ производится внешними средствами. Для удобства все записи размещаются по каталогам с к датами.

Правило хранения записей разговоров, размещаемых в хранилище домена.
Применяется только если rec = 1 (записаны медиашлюзом).

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

Код файлового хранилища текущего домена (поле 'instance') для размещения записей разговоров.
В этом файловом хранилище будет размещена запись разговора, сформированная медиашлюзом (если правило записи имеет включенную опцию 'rec').

Если код файлового хранилища не задан, то используется файловое хранилище, код которого задан параметром домена 'default_rec_storagekey'.

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

Хранилище по умолчанию - это папка, куда микшер размещает сформированные записи разговоров.
Это папка в файловой системе, определяемая конфигурацией системы (может быть NFS-папкой, либо локальной папкой в контейнере с платформой смонтированной в папку в хосте при установке платформы на сервер, либо при неправильных настройках папкой в контейнере).
Конфигурационный параметр роли микшера 'recstorageid' задает ключ, по которому в конфигурационном параметре сервера 'recstorepaths' определяется 'алиас' каталога в файловой системе сервера/контейнера.
По умолчанию для стандартных конфигураций и установки через инсталлер это папка /var/lib/era_files/recpath в контейнере, и она является docker-волюмом, то есть папкой в хосте соответствующего сервера.

Роль Mixer размещает файл в указанную папку. Если она является NFS-клиентом, то все серверы и роли многосерверной платформы получают к этой папке прямой сетевой доступ через идентичную настройку в конфигурации. Если папка не является NFS-клиентом, то запись размещается локально только на том сервере, где исполняется микшер.
Затем роль Recmover перемещает запись в хранилища доменов. В зависимости от настроек, исходный файл из каталога результатов микширования может быть удален.
При необходимости recmover выкачивает файл с другого сервера (при отсутствии настройки NFS) и размещает локально по тому же логическому адресу, привязанному конфигурацией к собственному серверу путем настройки алиасов.
Если recmover размещает файл в хранилище по умолчанию (хранилище домена для записей разговоров), и не используется NFS, то запись в итоге оказывается лишь на сервере, где исполнялся recmover.

В дальнейшем получение записей производится с поиском в подключенных файловых хранилищах на основании специальной ссылки, содержащей код хранилища.
А в случае, если запись была размещена в хранилище для записей по умолчанию, ссылка содержит ключ каталога для записей из конфигурации, примененный микшером.
В том числе, когда NFS не настроена, поиск будет осуществлен на всех серверах, где записи могли оказаться в локальных папках.
При этом с точки зрения поиска записей не имеет значения, является ли эта папка волюмом (смонтирована ли она в хост).

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

Поле: speechanalytics
Режим: in
Тип: bool
По умолчанию: false

Выключатель расчета речевой аналитики.
В случае записи средствами медиашлюза (если правило записи имеет включенную опцию 'rec') после подготовки стерео записи микшером осуществляется речевой анализ разговора.

Результат речевого анализа размещается в событии callevents.call_rec_links в поле speechinfo, а как следствие в событиях ccsevents.connection_set_record_info, в архивах разговоров, формируемых продуктовым слоем.

Настройки режимов работы речевого анализатора задаются в параметрае мастер-домена speech_analytics_options.

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

Поле: periods
Режим: in
Тип: array<object>
По умолчанию: empty

Интервал активности в течение недели.
Применяется в режиме schedule = custom.
Каждый элемент списка охватывает определенный отрезок внутри недели: от времени в конкретный день недели до времени в другой конкретный день недели.
На основе совокупности этих отрезков формируется общее расписание.
Элемент списка еженедельного расписания.

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

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

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

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

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

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

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

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

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

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

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

Варианты фильтров по направлению звонка

Table 2. Варианты фильтров по направлению звонка
Значение Описание

"inner"

Правило может применяться только для внутри-доменных звонков, где обе стороны являются абонентами текущего домена

"incoming"

Правило может применяться только для кросс-доменных звонков, где вызываемой стороной является абонент текущего домена

"outgoing"

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

"*"

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

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

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

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

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

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

  • ? - любой символ;

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

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

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

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

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

Например, XX[X] – любое трехсимвольное значение, с символом X на конце.

Regex

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

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

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

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

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

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

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

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

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

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

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

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

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

Диапазон

Подвергаемое проверке соответствия значение - целое числовое и входит в указанный диапазон числовых значений.

Структура значения dia-шаблона:
/dia/FromValue+N - подпадают под шаблон N+1 значений от FromValue до FromValue+N.

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

Расписание работы

Table 4. Расписание работы
Значение Описание

"all"

Правило доступно для применения всегда

"disabled"

Правило недоступно для применения никогда

"work"

Правило доступно для применения только в рабочее время

"non-work"

Правило доступно для применения только в нерабочее время

"custom"

Правило определяет индивидуальное расписание доступности в поле periods

Элемент списка еженедельного расписания

Table 5. Элемент списка еженедельного расписания
Поле Значение Описание

daystart

17

День недели начала отрезка (1 – пн, 7 – вс)

daystop

17

День недели конца отрезка (1 – пн, 7 – вс)

timestart

01440

Время начала отрезка внутри дня в минутах

timestop

01440

Время конца отрезка внутри дня в минутах

См. также

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

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

  • recmover применяет правило записи из события, изначально сгенерированного в b2b, при распределении записей разговоров по доменам.