Видеоконференции: бизнес-логика¶
Обзор¶
Домен conferences обеспечивает видеокоммуникации в рабочих процессах 1Формы (на базе Jitsi) и связывает звонок с задачным контекстом.
Ценность домена:
- быстрый запуск встречи из рабочего объекта;
- сохранение истории участия и событий комнаты;
- публикация артефактов встречи (транскрипт/видео) в контекст задачи.
Бизнес-сущности¶
| Сущность | Назначение |
|---|---|
| Комната ВКС | единица сессии звонка |
| Настройки комнаты | lobby, пароль, запись, транскрибация |
| История сессии | факт начала/окончания звонка |
| Участники | join/left и состав присутствующих |
| Тред конференции | единый тред в задаче, создаётся при старте звонка; содержит все артефакты: видео, транскрипт, саммаризацию |
Ключевые сценарии¶
1. Запуск и участие во встрече¶
Пользователь открывает комнату из задачи/чата/профиля, получает доступ по токену и участвует в звонке.
Точки входа: - Персональное меню пользователя — копирование ссылки на свою комнату - Панель навигации «Сотрудники» — быстрый звонок частым контактам - Профиль пользователя — кнопка «Позвонить» (личный звонок / вход в персональную комнату / копирование ссылки) - Шапка задачи/чата — кнопка «Встреча» (собрать конференцию / присоединиться / запланировать через календарь / копировать ссылку) - Краткая карточка пользователя в чате/ленте — кнопка «Позвонить»
Режим лобби: если включён, гости проходят через ожидание с запросом доступа у модератора. Авторизованные пользователи могут пропускаться без ожидания по смарт-фильтру CheckSecurityBypassSmartScriptId (см. admin.md). Пароль запрашивается только у гостей — авторизованные пользователи пароль не вводят.
Вход по ссылке-приглашению. При переходе по ссылке внешнему участнику открывается выбор: войти через 1Ф (страница ввода логина/пароля) или как гость. На той же странице доступна кнопка «Проверить оборудование» — тест микрофона и камеры до входа.
Поведение в лобби (для гостей): - При отсутствии модератора — кнопки «Я организатор» (требует авторизации) или ожидание модератора. - При наличии модератора — гость вводит своё имя; модератор получает сообщение с кнопками «Принять» / «Отказать». Гостю возвращается соответствующее уведомление.
Приглашение из идущей конференции. В меню «Больше» есть пункт «Пригласить» — выбор пользователя по имени/фамилии. Доступно только из task/чат-комнат; в персональных комнатах приглашать нельзя. Пользователей без заполненного email пригласить нельзя.
2. Управление политикой комнаты¶
Администратор/владелец задаёт правила входа и обработки звонка (lobby/password/record/transcribe).
Видимость пункта «Настройки» в меню «Встреча»:
| Роль | Что видит |
|---|---|
| Администратор категории / площадки | Все опции, кроме явно запрещённых администратором |
| Заказчик задачи и модераторы | Только опции, доступ к которым открыт администратором для участников |
| Подписчики и прочие участники | Пункт «Настройки» скрыт |
Пункт «Настройки» скрывается полностью, если у пользователя нет доступа ни к одной из опций.
Установка пароля комнаты. В меню «Больше» → «Настройки безопасности» → кнопка «Установить пароль». После установки пароль можно отобразить, скопировать или удалить. Пароль действует только на гостей — на авторизованных пользователей не распространяется.
3. Учёт событий конференции¶
Система фиксирует lifecycle комнаты и список участников для последующего аудита.
4. Пост-обработка и документирование¶
При старте конференции платформа создаёт единый тред в задаче с зафиксированным временем начала звонка. Все артефакты встречи — видеозапись, транскрипт, саммаризация — поступают в этот же тред по мере готовности, независимо от скорости обработки внешних сервисов. Даже если технически поступает несколько видеофайлов, они публикуются в один тред. Тред остаётся открытым на протяжении всей конференции и автоматически закрывается после её завершения.
Принцип: один звонок — один тред.
5. История звонков и уведомления¶
Все звонки фиксируются в «Мои звонки и встречи» (персональное меню пользователя). Для каждой записи указаны: - тип: исходящий, пропущенный, отклонённый - время звонка - для звонков из задач — кнопки перехода в задачу и входа в комнату - для звонков из личных комнат — кнопки перехода в профиль и входа в комнату
Пропущенные звонки: красный индикатор на аватаре пользователя и в истории звонков, отображающий количество пропущенных вызовов. Каждая новая попытка дозвона фиксируется как отдельный пропущенный звонок.
Уведомления: - Входящий звонок — визуальное + звуковое уведомление. Если пользователь не отвечает в течение 30 секунд — уведомление скрывается. - Если входящий вызов принят или отклонён на одном устройстве, он автоматически прекращается на всех остальных устройствах пользователя (включая мобильное и десктопное приложения). - Если одновременно идут два звонка из разных комнат, два звуковых сопровождения одновременно не воспроизводятся. - Пропущенный/отклонённый звонок — кратковременное уведомление (10 секунд) с ФИО, адресом комнаты, количеством звонков и временем последнего. - Вход пользователя в вашу персональную комнату — баннер «[Имя] вошёл(ла) в вашу персональную комнату». - Вход в комнату задачи/чата (по подписке) — баннер «[Имя] вошёл(ла) в [Текст задачи] (#[Номер])».
Статус «На видеозвонке»: отображается в профиле, краткой карточке, списке сотрудников, поиске, портальном блоке «Контакты», личном чате. При активном видеозвонке уведомления о входе других пользователей в конференцию автоматически не показываются (предотвращает лишние баннеры при демонстрации экрана).
Бизнес-правила¶
- Комната должна быть однозначно связана с контекстом (задача/чат/пользователь).
- История участия хранится локально даже при внешнем видеосервисе.
- Наличие записи/транскрипции определяется настройками комнаты и доступностью сервисного контура.
- Артефакты встречи считаются рабочими документами и должны попадать в задачный контекст.
- На каждый звонок создаётся ровно один тред (принцип «один звонок — один тред»): тред открывается при старте конференции и закрывается при её завершении. Все артефакты (видео, транскрипт, саммаризация), в т.ч. несколько видеофайлов от разных сервисов, публикуются в этот же тред без дублирования.
- Персональные комнаты (
user{id}) управляются владельцем без ограничений категории. Task-комнаты (task{id}) — только заказчиком задачи. - Иерархия настроек: индивидуальные комнаты → категория (для task-комнат) → дефолтные из
SettingsCustom→ системный хардкод. Подробнее: settings-hierarchy.md и admin.md.
Формат ссылок на комнату¶
Ссылки ведут непосредственно на сервер Jitsi (домен задаётся администратором), не на адрес приложения.
| Тип комнаты | Формат |
|---|---|
| Персональная | https://{Jitsi_Domain}/user{userId} |
| Комната задачи | https://{Jitsi_Domain}/task{taskId} |
| С префиксом | https://{Jitsi_Domain}/{UserRoomPrefix}_user{userId} или ..._task{taskId} |
Пример: https://<видео-сервер>/user12345 (персональная), https://<видео-сервер>/task12345 (комната задачи). Имя персональной комнаты хранится в профиле пользователя в поле jitsiServicePersonalRoom и используется фронтендом при построении ссылки. Префикс UserRoomPrefix задаётся администратором.
Типы комнат¶
- Личные (
user{id}) — у каждого пользователя своя; администрируются автоматически при создании/увольнении. - Комнаты задачи и чата (
task{id}) — создаются под контекст задачи/чата. - Переговорки — предсозданные комнаты с закреплёнными модераторами и интеграцией с календарём для бронирования. Настраиваются администратором.
Дополнительные возможности¶
- Внешние участники (гостевой доступ): приглашения через ссылку, прохождение лобби с подтверждением модератора.
- SIP-телефония: при подключении интеграции возможны звонки из ВКС на городские и мобильные номера (см. telephony/admin.md).
- Сквозное шифрование (E2EE): включается в настройках безопасности конференции.
- Запись в mp4: файлы хранятся в каталоге на сервере. Параллельно может вестись запись нескольких конференций — лимит зависит от ресурсов сервера. По окончании в чат владельцу комнаты приходит оповещение со ссылкой на запись.
Роли в конференции¶
| Роль | Кто становится |
|---|---|
| Модератор | Только авторизованный пользователь 1Формы. По умолчанию: для task-комнаты — первый вошедший, заказчик задачи и исполнители; для персональной комнаты — её владелец; для группового чата — все его подписчики. Логика настраивается администратором. Учитывает заместителей. Модератор может назначить модератором обычного участника. |
| Участник | Любой пользователь (внутренний или внешний). Без прав модератора. |
В списке участников и в миниатюрах модераторы помечены отдельной иконкой.
Что доступно только модераторам: - Выключать звук и камеры у всех участников. - Удалять участников из конференции. - Останавливать демонстрацию экрана у других. - Управлять настройками безопасности (лобби, пароль, E2EE). - Запускать запись и транскрибацию. - Назначать других участников модераторами. - Создавать и управлять сессионными залами. - Завершать конференцию для всех.
Интерфейс конференции¶
Окно конференции открывается в новой вкладке браузера и состоит из области конференции, списка участников и панели управления. В верхней части — название и длительность встречи; индикаторы записи, поднятой руки, параметров производительности.
Миниатюры участников¶
На миниатюре могут отображаться: иконка модератора, выключенный микрофон, признак закрепления, индикатор качества связи. По правому клику или меню «…» — действия (часть только для модераторов):
- Попросить разрешение включить микрофон.
- Выключить звук/видео остальным.
- Сделать модератором.
- Отключить участника.
- Прикрепить к сцене.
- Отправить личное сообщение (виден только адресату).
На своей миниатюре: отразить зеркально, скрыть собственное представление, прикрепить к сцене.
Список участников¶
Открывается кнопкой в панели. Поддерживает поиск, приглашение внешних участников (по контактному номеру / ссылка / соцсети).
Модератору в нижней части доступны: - Выключить звук у всех (с опцией разрешения самостоятельного включения). - Выключить камеру у всех, разрешения на видео и микрофон, доступ к окну «Модератор».
Панель управления (основные опции)¶
| Действие | Описание |
|---|---|
| Микрофон / Камера | Вкл/выкл, выбор устройств, тест динамика, шумоподавление, виртуальный фон, зеркальное отражение |
| Демонстрация экрана | Вкладка / Окно / Весь экран; опция «Также предоставить доступ к аудио на вкладке» |
| Чат | В обычной встрече — отдельный чат конференции; в task-конференции вместо него открывается лента задачи |
| Опросы | Вопрос + варианты ответов. Недоступны в task-конференциях |
| Поднять руку | Индикатор у пользователя и в списке; реакция (emoji со звуком) для всех. Модератор может отключить звуки реакций |
| Список участников / Плитка / Полный экран | Управление видом |
| Параметры производительности | Адаптивная подстройка качества видео; ручная настройка |
| Интерактивная доска | Рисование, текст, фигуры; сохранение в PNG/SVG; состояние сохраняется до конца встречи |
| Виртуальные фоны | Стандартные или загруженное изображение |
| Статистика | Учёт времени выступлений каждого участника |
Настройки безопасности (только модератор)¶
- Включить лобби — управление режимом ожидания.
- Установить пароль — пароль для гостей; модератор может показать/скопировать/удалить.
- E2EE — сквозное шифрование. Подключение возможно только из браузеров с поддержкой.
- Транскрибирование — выбор языка (текущий — русский). Запуск — через «Начать запись» с галочкой «Запись транскрипции».
- Начать запись — Аудио+Видео и/или Транскрипция. После старта участники слышат звуковой сигнал «Запись включена», в шапке появляется индикатор записи.
Подробнее про публикацию артефактов записи в обсуждение задачи — см. сценарий «Пост-обработка и документирование» выше.
Меню «Настройки»¶
Звук, Видео, Виртуальные фоны, Оповещения, Модератор (все начинают без звука / без видео / следуют за модератором / отключение звуков реакций для всех), Профиль (завершение сеанса), Сочетания клавиш, Больше опций (макс. закреплённых на сцене, скрыть собственное представление, язык интерфейса).
Сессионные залы (Breakout rooms)¶
Модератор может создавать неограниченное число сессионных залов для отдельных обсуждений с возвратом в основную встречу. Создание — кнопкой «Добавить сессионный зал» в списке участников. Возможности: переименовать, присоединиться, покинуть, удалить.
Завершение¶
- Покинуть — выйти из конференции лично.
- Завершить для всех (только модератор) — закрыть сеанс конференции; требует подтверждения. После закрытия можно начать новую встречу в той же комнате.
Иерархия настроек комнаты ВКС¶
Настройки ВКС формируются на трёх уровнях:
-
Глобальные настройки сервиса (JitsiServiceSettings) — домен, секрет, робот-пользователь, глобальное вкл/выкл транскрибации (CanTranscribe). Одна запись на площадку.
-
Adminка категории (Subcategories, "Управление ВКС" в настройках категории) — задаёт:
- кто может управлять каждой опцией (запись, расшифровка, лобби, пароль): "По правам чата", "Только администратор категории", "Всем запрещено"
-
дефолтные значения для новых задач (чекбоксы: Разрешить запись, Запускать запись при старте, Разрешить расшифровку, Запускать расшифровку при старте, Настройка лобби по умолчанию)
-
Конкретная задача/комната (ConferenceRooms) — пользователь с соответствующей ролью может изменить значения относительно дефолтов категории. Личные комнаты (user{id}) управляются владельцем без ограничений категории.
Подробнее: settings-hierarchy.md.
Подробное описание настроек категории: admin.md и settings-hierarchy.md.
Типовые инциденты¶
| Симптом | Частая причина |
|---|---|
| Участники не отражены в истории | не обработан lifecycle webhook |
| Запись есть в инфраструктуре, но не видна пользователю | сбой доставки/публикации артефакта |
| Транскрипт не появился в задаче | room->task mapping или ошибка постинга треда |
| Пользователь не заходит в комнату | проблема токена/доступа/конфига Jitsi |
Границы домена¶
conferences отвечает за lifecycle встречи и интеграцию в рабочий контур. Контентная коммуникация и отображение тредов опираются на домены chat, comments, tasks.