Обзор - Добавьте в ваше сообщество видеозвонки, голосовые комнаты и звонки в стиле Discord 🎙

ВАЖНО: С 1 сентября 2026 года это теперь встроенный плагин в ядре Discourse, переименованный в «Voice» (Голос). Теперь вам просто нужно включить его на странице администратора. С 20 октября 2026 года в ядре он называется «Live» (Прямой эфир).

Всем привет! Делюсь Resenha, новым плагином, который добавляет комнаты для голосового и видеочата прямо в Discourse — без внешних приложений, только одноранговая связь WebRTC в вашем боковом меню.

Попробовать вживую

:point_right: https://discourse-on-a-pi5.falco.dev/

Как это работает

Нажмите на комнату в боковом меню, чтобы присоединиться, нажмите еще раз, чтобы выйти. По умолчанию весь медиапоток передается напрямую между пользователями через WebRTC — ваш сервер Discourse обрабатывает только сигнализацию, но никогда не передает медиаданные. Сайты, которым нужны большие звонки, могут по желанию маршрутизировать комнаты через медиасервер LiveKit — будь то LiveKit Cloud или самохостинг. При установке создается комната «Watercooler» (Болталка) по умолчанию, чтобы ваше сообщество могло сразу начать общение.

Возможности

  • UX с упором на боковое меню — комнаты и аватары участников в прямом эфире прямо в боковом меню, в стиле Discord, с анимированными индикаторами речи
  • Видео и демонстрация экрана — необязательное видео с камеры и демонстрация экрана/вкладки со страницей комнаты целиком, макетами плитки/презентации и поддержкой полноэкранного режима
  • Персистентный виджет звонка — закрепленный, изменяемый по размеру мини-звонок, который следует за вами при просмотре форума, включая видео
  • Настройки голоса и видео — выбор устройств, живая проверка микрофона, порог чувствительности ввода, подавление шума на базе WebAssembly (DTLN) и размывание фона MediaPipe — все обрабатывается локально в браузере
  • Чат комнаты — у каждой комнаты есть текстовый чат, поддерживаемый реальными каналами и тредами чата Discourse
  • Комнаты сцены — комнаты спикера/аудитории с очередью запросов на выступление, для AMA и общесообщественных звонков
  • Права доступа к комнатам — публичные, ограниченные группами и приватные комнаты, с значками блокировки в боковом меню и хэштегами комнат для ссылок в постах
  • Управление участниками — контекстное меню с регулировкой громкости для каждого пользователя, отключением звука, оглушением и выкидыванием; плюс автоматическое отключение звука/отключение при AFK и автоматический статус пользователя
  • Управление комнатами — создание комнат пользователями с ограничениями по группам, интерфейс CRUD для персонала и полноценный REST API для программного управления
  • Ноль инфраструктуры по умолчанию — чистый браузерный WebRTC с шифрованием DTLS-SRTP, SFU/MCU не требуется
  • Необязательная интеграция с LiveKit — подключение отдельных комнат или маршрутизация всех звонков через LiveKit Cloud или собственный сервер LiveKit для больших вызовов, с панелью здоровья администратора и согласованием на основе вебхуков

Статус

Мы используем это для внутренних встреч уже несколько недель, и оно очень хорошо работает для небольших групп. Для более крупных групп может потребоваться развертывание вместе с LiveKit, но обычные размеры до 10 участников работают очень хорошо в конфигурации mesh по умолчанию.

Установка

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/xfalcox/resenha.git

Включите в Админ > Настройки > Плагины > resenha enabled.

Будем рады обратной связи

Это новый плагин — ошибки, идеи и вопросы приветствуются в этой теме. PR тоже!


Примечание: Это не official плагин.

57 лайков

Отзыв, просто супер! Обожаю, спасибо, мой земляк!

12 лайков

Только что установил, и всё заработало примерно за полчаса. Похоже, работает отлично! Хотелось бы увидеть несколько изменений и дополнений в функциях:

Функция Статус
Переименовать комнату :cross_mark: Не реализовано
Удалить комнату :cross_mark: Не реализовано
Изменить имя комнаты по умолчанию :cross_mark: Закодировано в исходном коде
Привязать комнаты к категориям Discourse :cross_mark: Не поддерживается
Настроить права доступа для каждой комнаты :cross_mark: Не поддерживается
Создавать комнаты с автоматическим истечением срока действия :cross_mark: Не поддерживается
Описания/темы комнат :cross_mark: Не поддерживается
10 лайков

Это потрясающе. Есть ли у команды планы сделать это официальным после выхода из альфы?

7 лайков

На данный момент планов нет, так как это в основном исследование возможностей технологии и того, как она может интегрироваться с Discourse.

Тем не менее, как и во всём остальном, всё зависит от того, чего хотят наши клиенты.

9 лайков

Это действительно круто, Фалько! Я вижу множество применений для этого, учитывая то, что вы перечислили. Плагины с такими функциями, как этот, определенно помогают сделать Discourse Meta ведущей платформой!

4 лайка

Где находится опция создания новой комнаты?

Для этого нет пользовательского интерфейса, так как это экспериментальный проект в области технологии, а не готовое решение для производственных сайтов.

2 лайка

Разве сейчас не должен быть присутствовать experimental?

Крутой плагин

3 лайка

Я несколько дней пробовал это в действии — и это просто великолепно!!!

Это прекрасно решает проблему лёгкого «переноса» обсуждения с форума или чата в голосовой разговор. Я годами мучился с необходимостью переключаться на другие платформы или использовать ресурсоёмкие (попытки) встроенные видеоконференции.

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

Вишенкой на торте, конечно же, стали бы:

  1. Возможность видеосвязи (вероятно, технически невозможна с такой лёгкой технологией)

  2. AI-транскрипция, достаточно умная для интеграции связанных тем и чата. Это было бы абсолютно потрясающе как инструмент для ведения протоколов встреч.

11 лайков

Спасибо за обратную связь! Это была именно моя цель при создании этого!

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

Это вполне реализуемо: как без SFU/MCU для пользователей с достаточной скоростью загрузки, так и с опциональной поддержкой таких решений.

7 лайков

Это было отлично. Я не буду обновлять это долгое время, но в феврале я обновлю его в последний раз, когда будет выпущена ESR, чтобы включить этот плагин.

Я так этому рад и надеюсь, что это случится.

2 лайка

Хотите использовать более «кулерный» иконку?

image

Вставьте это в TC:

// Поместите это во вкладку JS или в /javascripts/discourse/api-initializers/...
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer(api => {
  api.replaceIcon("microphone-lines", "bottle-water");
});
/* Переверните иконку bottle-water вверх дном в боковой панели Resenha — поместите в Common */
.sidebar-section.sidebar-section-wrapper [class*="d-icon-microphone-lines"] {
  transform: rotate(180deg);
  /* При необходимости можно также настроить вертикальное выравнивание */
  display: inline-block;
}
3 лайка

Теперь есть интерфейс для управления комнатами.

10 лайков

Спасибо, Falco, за этот плагин :heart:

Отличная работа :+1:

1 лайк

Я тестирую в продакшене, вернусь с отзывами! Vamos Resenhar :brazil:

1 лайк

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

Теперь доступен экран с подробностями о комнате, использующий паттерн меню-«кебаб» из Discourse Chat.

2 лайка

В теме по умолчанию наложения нет, возможно, стоит настроить вашу тему так, чтобы она учитывала меньшее пространство для отступов?

image

Это уже исправлено.

3 лайка

В свете последних новостей я добавил в плагин новую функцию: фильтр шума на базе ИИ.

Администраторы могут сделать его доступным через настройку сайта (по умолчанию: выключено), а пользователи смогут включить его, нажав на своё имя в комнате голосового чата.

6 лайков