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

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

Обзор

Домен conferences охватывает настройку ВКС (Jitsi), IP-телефонии и управления конференц-комнатами. Иерархия приоритетов настроек комнаты (глобальные → категория → индивидуальные) описана в settings-hierarchy.md.

Администрирование использует:

  • Автоадминка (dbadmin) -- 3 формы (ВКС-сервис, телефония, события телефонии)
  • Admin API -- 1 контроллер (мониторинг комнат)

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

Автоадминка (dbadmin)

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

Admin API контроллеры

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

Ключевые настройки

Сервис ВКС (JitsiServiceSettings)

Где настраивается: автоадминка -> форма vks-service-settings Таблица БД: dbo.JitsiServiceSettings

19 полей, определяющих подключение к Jitsi и параметры интеграции:

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

Зависимости (deps): 2 зависимости между полями формы (условная видимость параметров).

Эффект в runtime: значения читаются ConferenceService при генерации токенов, создании комнат и обработке webhook-событий.

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

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

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

Extended JSON (ExtInfo)

Пять ключей в поле ExtInfo (JSON):

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

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

Дефолтные настройки персональных комнат (v2.267+)

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

Начиная с 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}

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

Настройки IP-телефонии (TelephonySettings)

Где настраивается: автоадминка -> форма telephony-settings Таблица БД: dbo.TelephonySettings

12 полей: URL сервера, учётные данные, параметры интеграции с телефонией.

Эффект в runtime: определяет доступность click-to-call и обработку телефонных событий.

События телефонии (TelephonyActionsPacks)

Где настраивается: автоадминка -> форма telephony-actions-packs Таблица БД: dbo.TelephonyActionsPacks

5 полей: привязка событий телефонии к действиям в системе.

Эффект в runtime: определяет автоматические действия при входящих/исходящих звонках.

Комнаты (runtime-настройки)

Где настраивается: Runtime API -> /api/conference/room/{roomId}/settings Таблица БД: dbo.ConferenceRooms

Настройки конкретной комнаты: lobby, password, recording, transcribation. Задаются пользователем в runtime, но влияют на поведение через ту же конфигурационную таблицу.

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

Симптом Причина Где проверить 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
Настройки комнаты не применяются Клиент использует старый snapshot dbo.ConferenceRooms select * from dbo.ConferenceRooms where Id = {roomId}
Телефония недоступна Неверные настройки подключения Форма telephony-settings select * from dbo.TelephonySettings

Связанные документы

  • settings-hierarchy.md -- иерархия приоритетов настроек комнаты (глобальные → категория → индивидуальные)
  • docs/domains/conferences/backend.md -- backend-архитектура (контроллеры, сервисы, webhook lifecycle)
  • docs/domains/conferences/data-flow.md -- E2E диагностика (room lifecycle, transcript/video публикация)
  • docs/platform/backend/admin-architecture.md -- общая архитектура администрирования
  • docs/reference/database/dbadmin-forms-map.md -- карта всех форм автоадминки