Перейти к содержанию

Видеоконференции — Администрирование

Администрирование видеоконференций в 1Форме: механизмы настройки (автоадминистрирование, API администрирования), ключевые параметры сервиса ВКС (Jitsi), телефонии и комнат, типичные ошибки и их диагностика. Для администраторов платформы и специалистов поддержки. Иерархия приоритетов настроек комнаты (глобальные → категория → индивидуальные) описана в иерархии настроек ВКС.

Механизмы администрирования конференций

Администрирование конференций использует две группы механизмов: автоадминистрирование (3 формы) и API администрирования (мониторинг комнат).

Формы автоадминистрирования:

Alias формы Название Таблица БД Папка
vks-service-settings Сервис ВКС dbo.JitsiServiceSettings Подключения
telephony-settings Настройки IP Телефонии dbo.TelephonySettings Служебное
telephony-actions-packs Настройки событий IP Телефонии dbo.TelephonyActionsPacks Служебное

Маршруты API администрирования:

Маршрут Методы Назначение
/api/admin/conference/rooms GET Мониторинг статуса конференц-комнат

Настройка сервиса ВКС (JitsiServiceSettings)

Сервис ВКС настраивается через автоадминку в форме vks-service-settings и хранится в таблице dbo.JitsiServiceSettings. 19 полей определяют подключение к Jitsi и параметры интеграции:

Группа полей Что контролирует
Домен, секрет, URL Подключение к серверу Jitsi
QueueId, MessageFlowId Очереди для пост-обработки (транскрипты, видео)
Настройки записи Автоматическая запись и транскрибация
Параметры комнат Lobby, пароли, ограничения по умолчанию

Форма имеет 2 зависимости между полями (условная видимость параметров). Значения используются при генерации токенов, создании комнат и обработке webhook-событий.

Смарт-фильтры модератора, лобби и дополнительные параметры

Смарт-скрипты и смарт-фильтры контролируют доступ к комнатам ВКС и права участника в комнате:

Поле Тип Контракт Описание
CheckIsModeratorSmartScriptId int? FK → SmartScripts TSQL/Lua → bool true — пользователь является модератором комнаты. Заменяет устаревший IsModeratorSmartFilterId (SmartFilter).
CheckSecurityBypassSmartScriptId int? FK → SmartScripts TSQL/Lua → bool true — авторизованный пользователь пропускается в комнату без ожидания в лобби. Отличается от модераторства: bypass не даёт прав управления, только мгновенный вход.
CheckDialOutSmartFilterId / CheckDialOutSmartScriptId int? FK → SmartExpressions / SmartScripts смарт-фильтр или TSQL/Lua → bool true — пользователю разрешено приглашать участников по телефону и SIP из комнаты. Признак вычисляется при выдаче токена, в проверку передаются пользователь и комната. Если задан смарт-фильтр, смарт-скрипт не вычисляется.

⚠️ Пустое значение CheckSecurityBypassSmartScriptId интерпретируется как true — система не запрашивает у модератора подтверждение для авторизованных пользователей. Не распространяется на гостей (неавторизованных).

⚠️ Пустые значения полей dial-out интерпретируются как true: если не настроены ни смарт-фильтр, ни смарт-скрипт, приглашение по телефону и SIP разрешено всем участникам. Чтобы ограничить его, настройте смарт-фильтр или смарт-скрипт, возвращающий false для тех, кому исходящие звонки не положены.

В форме настройки сервиса ВКС (/spa/administration/services) оба поля используют контрол выбора смарт-скриптов (smart-script): при выборе скрипта отображается его название, а клик по полю открывает редактор смарт-скриптов по адресу /spa/administration/smart-script?id={SmartScriptId}.

Пять дополнительных параметров в поле ExtInfo (JSON):

Ключ Назначение
externalModuleKey Ключ для доступа к API модуля ВКС
roomCreationKey Ключ аутентификации Outlook-плагина при генерации временной комнаты
recordHost Адрес хоста ссылок на записи ВКС
recordsApiKey Ключ аутентификации для приёма событий записи ВКС
internalModuleKey Внутренний ключ модуля

⚠️ Критичное предупреждение: при смене roomCreationKey все пользователи должны заново скачать плагин Outlook — старый плагин не сможет создавать временные комнаты.

Дефолтные настройки комнат и URL-шаблон

По умолчанию персональные комнаты (user{id}) создаются с: запись разрешена и авто-старт, транскрибация разрешена и авто-старт, лобби отключено.

Комнаты, создаваемые из плагина Outlook (при планировании встречи), также наследуют дефолтные настройки записи и транскрибации из ConferenceDefaultUserRoomSettings. Настройка лобби (HasLobby) этим путём из дефолтов не применяется.

Меню конференции: «Начать запись», «Транскрибирование», «Настройки безопасности» и роль модератора в списке участников

Начиная с v2.267 дефолты можно изменить через Admin API (требуются права God):

  • GET /api/admin/conference/default-user-room-settings — получить текущие значения
  • POST /api/admin/conference/default-user-room-settings — обновить значения

Настройки хранятся в SettingsCustom под ключом ConferenceDefaultUserRoomSettings (JSON, 5 полей):

{
  "IsRecordingAllowed": true,
  "IsRecordingOnByDefault": true,
  "IsTranscribationAllowed": true,
  "IsTranscribationOnByDefault": true,
  "HasLobby": false
}

Приоритет применения:

  1. Индивидуальные настройки комнаты (ConferenceRooms)
  2. Настройки категории (Subcategories — только для task-комнат)
  3. Дефолтные из SettingsCustom.ConferenceDefaultUserRoomSettings
  4. Системные значения по умолчанию (запись/транскрибация разрешены и авто-старт, лобби выключено)

При невалидном JSON применяются системные значения по умолчанию, ошибка пишется в лог. Ключ создаётся автоматически при первом обращении.

Шаблон автоматически генерируемой ссылки на ВКС-комнату — CustomSetting ConferenceRoomUrlTemplate. Default: https://{origin}/{room}, где:

Плейсхолдер Значение
{origin} Services.Conference.Domain (адрес ВКС-сервиса)
{room} Сгенерированный ID комнаты

Пример переопределения (при использовании reverse-proxy с префиксом):

https://{host}/conference/?room={room}

Шаблон используется при формировании ссылок-приглашений в задачах и письмах.

HTML-подпись приглашения ВКС

Подпись, которая должна вставляться при добавлении ссылки на конференцию в событие календаря, задаётся настройкой площадки CustomSetting VksInviteSignatureHtml — HTML-разметкой. Значение применяется на клиенте: когда в поле «Место встречи» события распознана ссылка на конференцию, подпись в описании события собирается из этого шаблона вместо стандартного текста. Подстановка работает в трёх точках — просмотр и редактирование встречи, создание встречи и карточка уведомления о встрече. Если настройка не заполнена, используется прежний текст по умолчанию.

Место ссылки в шаблоне обозначается маркером {{link}}. Маркер распознаётся независимо от регистра и лишних пробелов, в том числе с неразрывными пробелами и разорванный форматированием, а также когда он вставлен как адрес гиперссылки — тогда к адресу можно дописать путь или параметры, и хвост сохранится. Если маркера в шаблоне нет, под текстом подписи добавляется стандартная строка со ссылкой, чтобы участник не остался без неё. Сам литерал маркера в описание события не попадает ни при каком варианте шаблона.

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

Изменение вступает в силу без перезапуска сервера, но конфигурация площадки кешируется браузером: после сохранения шаблона новый текст появится со второго обновления страницы. Ранее созданные события не меняются — описание хранит готовый текст, собранный в момент создания или пересборки встречи. Встречи, созданные из плагина Outlook, остаются на стандартной подписи: у плагина свой шаблон.

Адрес конференции, который попадает в подпись, берётся из поля «Место проведения» встречи, а его правит пользователь, поэтому доверенным он не считается: ссылка собирается программно, адрес проставляется атрибутом готового элемента, а не склейкой текста. Кавычка или угловая скобка внутри адреса атрибут не разрывает. Само описание события при отрисовке проходит санитизацию, так что речь о корректности разметки, а не о закрытии уязвимости.

Редактировать подпись можно в администрировании, на странице «HTML-шаблон подписи ВКС»: разметка правится в визуальном редакторе, кнопка «Сбросить к умолчанию» возвращает стандартный вариант, а в незаполненном поле показан образец шаблона по умолчанию.

Управление — административными методами:

  • GET /api/admin/conference/invite-signature — получить текущий шаблон
  • POST /api/admin/conference/invite-signature — сохранить шаблон

Сохранение записывает значение в SettingsCustom и запускает пересборку файла настроек приложения; ключ входит в список отслеживаемых, поэтому изменение применяется без перезапуска сервера. Пустое значение сбрасывает подпись к варианту по умолчанию.

Настройки телефонии, событий и комнат

Настройки IP-телефонии задаются через автоадминку в форме telephony-settings и хранятся в таблице dbo.TelephonySettings. 12 полей: URL сервера, учётные данные, параметры интеграции с телефонией. Определяет доступность звонка по клику (click-to-call) и обработку телефонных событий.

События телефонии настраиваются через автоадминку в форме telephony-actions-packs и хранятся в таблице dbo.TelephonyActionsPacks. 5 полей: привязка событий телефонии к действиям в системе. Определяет автоматические действия при входящих/исходящих звонках.

Настройки конкретной комнаты задаются через API /api/conference/room/{roomId}/settings и хранятся в таблице dbo.ConferenceRooms. Параметры: lobby, password, recording, transcribation. Задаются пользователем, но влияют на поведение через ту же конфигурационную таблицу.

Типичные ошибки настройки конференций

Типичные проблемы с настройкой конференций и способы их диагностики:

Симптом Причина Где проверить SQL-диагностика
Пользователь не может войти в комнату Неверный домен/секрет Jitsi Форма vks-service-settings select * from dbo.JitsiServiceSettings
История участников пустая Webhook-события не приходят или не обрабатываются dbo.ConferenceRoomsHistory, dbo.ConferenceRoomsUsers select * from dbo.ConferenceRoomsHistory where RoomId = {roomId}; select * from dbo.ConferenceRoomsUsers where RoomId = {roomId}
Транскрипт/видео не появились в задаче Неверные QueueId/MessageFlowId или ошибка в пост-обработке Форма vks-service-settings → поля очередей select QueueId, MessageFlowId from dbo.JitsiServiceSettings
Настройки комнаты не применяются Клиент использует устаревшие данные (кэш) dbo.ConferenceRooms select * from dbo.ConferenceRooms where Id = {roomId}
Телефония недоступна Неверные настройки подключения Форма telephony-settings select * from dbo.TelephonySettings

Новый интерфейс ВКС: переключатель площадки

Настройка хранится в общих настройках приложения: в административной форме это поле «Новый интерфейс видеоконференций» в секции основных настроек, по умолчанию выключенное. Значение настройки попадает в статический файл конфигурации интерфейса, откуда его читает и веб-версия, и обёртка страницы конференции: при включённом значении обёртка не рисует родной тулбар видеосервиса и отдаёт панель управления приложению. Диагностика — значение поля «Новый интерфейс видеоконференций» в общих настройках приложения.

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

Что Значение
Хранение настройка портала, ключ EnableVksCustomToolbar
Что получает клиент ключ VksCustomToolbarEnabled статического файла конфигурации интерфейса
Значение по умолчанию выключено: ключ отсутствует или false — во всех входах родная панель видеосервиса

Настройка не входит в три уровня настроек ВКС (сервис → категория → комната) и пользователем не меняется: это выбор интерфейса для всей площадки, а не параметр комнаты.

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