Запись звонков

Общее

Платформа может осуществлять запись звонков.

Необходимым условием является обработка медиа трафика сервером. Запись не может быть осуществлена, если конфигурацией настроено шлюзирование вызова без обработки медиа. Например, вызов поступил через соответствующий экземпляр SG, ESG, либо это диалог с IVR и на обрабатывающем его экземпляре B2B выключена обработка медиа для таких вызовов.

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

Если в ходе диалога было сформировано несколько записей вследствие миграции медиа-шлюза, то итоговая запись объединяется.

Запись содержит звук только абонента инициатора и вызванного абонента. Мелодия удержания, генерируемая сервером, в запись не попадает, вместо нее записывается тишина.

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

Существует возможноть включить запись временно в уже происходящем диалоге (через API).

Правила записи

Запись включается или выключается в соответствии с правилами записи, применяемыми для каждого нового диалога.

Когда оба абонента установлены (вызываемый абонент ответил), в их общем домене осуществляется поиск наиболее приоритетного правила записи, подходящего для этого диалога на основании номеров его участников.

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

Режимы записи

Локальная запись средствами платформы

Локальная запись - стандартный режим. Медиашлюз одновременно с осуществлением обмена медиа-трафиком между устройствами абонентов производит сохранение каждого из каналов в локальный файл.

После завершения диалога микшер достает оттуда необходимые файлы и сливает их в один. Следом файлы разносятся по настроенным в доменах хранилищам.

Такие записи присутствуют в журнале звонков и доступны для прослушивания из приложений платформы (в соответствии с ролевой политикой), либо через API.

Внешняя запись

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

Внешняя запись по протоколу RFC-7866 (siprec)

Запись осуществляется путем специального вызова на внешний сервер записи по протоколу RFC-7866. Ответственность за запись и хранение, а также предоставление записей пользователям в этом случае лежит на внешней системе.

Запись включается полем 'siprec' правила записи и требует настройки подключения к серверам записи, а также некоторые другие опции.

Подробнее о настройке этого режима: Настройки 'siprec'

Внешняя запись двумя вызовами (streamed_call_rec)

Запись осуществляется путем двух SIP-вызовов на внешний сервер записи, где каждый из вызовов транслирует канал одного из участников записываемого диалога. Ответственность за запись и хранение, а также предоставление записей пользователям в этом случае лежит на внешней системе.

Запись включается полем 'streamed_call_rec' правила записи и требует настройки подключения к серверам записи, а также некоторые другие опции.

Подробнее о настройке этого режима: Настройки 'streamed_call_rec'

Внешняя запись одним вызовом (mixed_call_rec)

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

Запись включается полем 'mixed_call_rec' правила записи и требует настройки подключения к серверам записи, а также некоторые другие опции.

Подробнее о настройке этого режима: Настройки 'mixed_call_rec'

Стенографирование

Платформа может осуществлять стенографирование записанных разговоров.

Стенографированию могут быть подвергнуты только записи диалогов, осуществленные самой системой (локальная запись).

Включено или выключено стенографирование определяется правилами стенографирования. Эти правила, подобно правилам записи, применяются к каждому диалогу в доменах его участников. Стенографируются только те диалоги, для которых хотя бы один домен запросил стенографирование.

Стенографирование требует настроенного доступа к сервису распознавания текстов. Вместе с системой может быть поставлен docker-образ с системой распознавания, и запущен контейнер. Необходимо прописать доступы к нему в настройках мастер-домена.

Стенографирование потребляет много ресурсов. Один сервер (контейнер) может параллельно производить стенографирование до 6 диалогов. Время подготовки стенограммы может быть эквивалентно времени самого диалога. Из диалогов, требующих стенографирования, формируется очередь заданий к сервису.

Результаты стенографирования в формате диалога укладываются в соответствующее поле в журнале звонков.

Качество стенографирования встроенным сервисом далеко от идеального, особенно страдают места с терминами или национальные языковые особенности.

Микросервисы

Запись и ее обработка обеспечивается следующими микросервисами:

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

  • MGC - транслирует команды из управляющего слоя в медиа-шлюз, обслуживающий контекст.

  • MG - обеспечивает обмен RTP-трафиком, осуществляет локальную запись каждого потока отдельно, хранит локальные записи в течение 6 часов.

  • MIXER - достает записи с медиа-шлюза, осуществляет их микширование в соответствии с настройками в конфигурации, размещает запись в общем каталоге (NFS или локально).

  • RECMOVER - перемещает запись в хранилища доменов, абоненты которых участвовали в диалоге, и правила которых включили запись.

  • MWARE - производит инициацию стенографирования записи и размещения стенограммы.

Место хранения записей

Записи, осуществленные локально, после переноса их в домены участников диалога, хранятся в доменных хранилищах.

Варианты:

  • NFS-папка, присоединенная к NFS-серверу и подключенная в качестве волюма в контейнер системы. При инсталляции в эту папку размещается файл 'rshare.sign', указывающий на доступность сервера.

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

  • в S3 хранилище (если для такового в домене создано и настроено хранилище, и в правиле записи указан его код из поля 'instance').

Во время диалога запись производится микросервисом MG в локальную папку RECORD. По умолчанию в конфигурации для этого указывается папка, присоединенная в качестве docker-волюма к docker-контейнеру с платформой. Во время установки системы на каждый сервер инсталлятор запрашивает место размещения этой папки в хосте сервера. Рекомендуется, чтобы эта папка размещалась на диске, не имеющем риска образовать очередь доступа на запись. Несмотря на то, что складывание данных в файл ведется асинхронно, само открытие файла - процедура синхронная и строго ограниченная во времени. При таймауте в несколько секунд - разговор не состоится.

Микшер копирует файл с MG к себе в рабочий каталог ("/var/lib/era" внутри контейнера), и там же производит микширование. После операции микширования файл переносится (копируется и удаляется) в каталог RECSTORE в общий раздел.

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

Доступ к записям для прослушивания

Прослушивание записей средствами платформы (через API или из приложений платформы) возможно только в том случае, если запись производилась в локальном режиме.

Доступ к записям определяется ролевой политикой.

Для доступа к файлу всегда формируется временная ссылка со сложным уникальным именем, доступная публично в течение 5 минут.

Запись конференций

Конференция - это отдельный user-agent, имеющий собственный медиа-контекст. Каждый участник подключен к медиа-контексту конференции через диалог, имеющий собственный медиа-контекст в рамках звонка.

Как и другие медиа-контексты, конференц-контекст имеет функцию записи, однако она недоступна пользователю. В сложных топологиях конференции не существует однозначно правильного состава участников для формирования единственного файла записи. Поэтому платформа не записывает медиа-контекст конференции, предполагая, что запись ведется в надсистемах:

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

  • В конференцию в любой момент можно добавить произвольное количество технических участников - рекордеров, и установить для них необходимую топологию. Например это могут быть вызовы из IVR с компонентом "Запись". В этом случае размещение и доступ к этой записи - ответственность сценария и надсистемы.