Видеоконференции — Администрирование¶
Обзор¶
Домен 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-- карта всех форм автоадминки