评测 - 为您的社区添加 Discord 风格的视频和语音房间及通话 🎙

重要提示:自 2026 年 9 月 1 日起,此插件已作为捆绑插件集成到 Discourse 核心中,并更名为 “Voice”。您现在只需在管理页面中启用它即可。

大家好!分享一个名为 Resenha 的新插件,它直接在 Discourse 中添加了语音和视频聊天室——无需外部应用,只需在侧边栏使用点对点 WebRTC 即可。

在线试用

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

工作原理

点击侧边栏中的房间即可加入,再次点击即可离开。默认情况下,所有媒体数据均通过 WebRTC 进行点对点传输——您的 Discourse 服务器仅处理信令,从不处理媒体数据。需要更大规模通话的网站可以选择通过 LiveKit 媒体服务器路由房间——无论是 LiveKit Cloud 还是自托管服务器。安装时会默认创建一个 “Watercooler”(茶水间)房间,以便您的社区可以立即开始交流。

功能

  • 侧边栏优先的用户体验 — 房间和实时参与者头像直接显示在侧边栏中,风格类似 Discord,并带有动态的说话指示器
  • 视频和屏幕共享 — 支持可选的摄像头视频和屏幕/标签页共享,拥有完整的房间页面、平铺/演示布局以及全屏支持
  • 持久化通话小部件 — 一个可停靠、可调整大小的迷你通话窗口,当您浏览论坛时会跟随您,包含视频
  • 语音和视频设置 — 设备选择器、实时麦克风测试、输入灵敏度门限、基于 WebAssembly 的噪声抑制(DTLN)以及 MediaPipe 背景模糊——所有处理均在浏览器本地完成
  • 房间聊天 — 每个房间都有一个由真实的 Discourse 聊天频道和线程支持的文本聊天
  • 舞台房间 — 具有发言请求队列的演讲者/观众房间,适用于 AMA(我有问必答)和社区通话
  • 房间权限 — 公开、群组限制和私有房间,侧边栏中有锁定徽章,房间标签用于在帖子中链接房间
  • 参与者控制 — 上下文菜单支持按用户调整音量、静音、失聪和踢出;此外还有 AFK 自动静音/断开连接和自动用户状态
  • 房间管理 — 通过群组限制用户创建房间,工作人员 CRUD 界面,以及用于程序化控制的完整 REST API
  • 默认零基础设施 — 纯浏览器 WebRTC,使用 DTLS-SRTP 加密,无需 SFU/MCU
  • 可选的 LiveKit 集成 — 可以单独选择房间加入,或者将所有内容通过 LiveKit Cloud 或您自己的 LiveKit 服务器进行路由以支持大型通话,并配有管理健康面板和基于 Webhook 的对账机制

状态

我们已经在内部会议中使用该插件数周了,对于小团体来说效果非常好。较大的团体可能希望将其与 LiveKit 一起部署,但通常规模(最多 10 名参与者)在默认的网状配置下运行得非常出色。

安装

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

管理 > 设置 > 插件 > resenha 启用 中启用。

欢迎反馈

这是一个新插件——欢迎在此主题中分享错误、想法和问题。也欢迎提交 PR!


注意:这不是 official 插件。

57 个赞

评论,太棒了,我喜欢,谢谢我的老乡

12 个赞

我刚刚安装了它,大约半小时内就运行起来了。看起来运行良好!希望看到一些功能更改/添加:

功能 状态
重命名房间 :cross_mark: 未实现
删除房间 :cross_mark: 未实现
更改默认房间名称 :cross_mark: 硬编码
将房间与 Discourse 类别关联 :cross_mark: 不支持
设置房间权限 :cross_mark: 不支持
创建自动过期房间 :cross_mark: 不支持
房间描述/主题 :cross_mark: 不支持
10 个赞

这太棒了。团队有什么计划在它走出 alpha 阶段后将其正式化吗?

7 个赞

目前没有计划,因为这主要是在探索该技术的可能性以及它如何与 Discourse 集成。

不过,和所有其他事情一样,这取决于我们的客户想要什么。

9 个赞

这太棒了,Falco!我可以看到你所列出的许多应用。像这样的功能插件绝对有助于使 Discourse Meta 成为首选平台!

4 个赞

创建新房间的选项在哪里?

由于这是一个关于该技术的实验性项目,而不是为生产站点准备的现成解决方案,因此没有用户界面。

2 个赞

experimental 目前不应该存在吗?

很棒的插件

3 个赞

我试用了这个功能几天了——它太棒了!!!

它完美地解决了将论坛/聊天讨论轻松“升级”为口头对话的问题。多年来,我一直在努力在切换到其他平台或使用资源密集型的(试图集成的)视频会议之间挣扎。

如果您决定进一步发展它,我希望它能够设计为与聊天集成。能够直接从聊天中为聊天成员启动私人语音房间将是绝对美妙的(并在之后进行整理以保持整洁)。而聊天仍然是插入附加评论、文件、链接等的完美场所。

锦上添花的功能当然是:

  1. 视频选项(可能使用如此轻量级的技术在技术上不可行)

  2. 人工智能转录,足够智能,可以整合相关主题和聊天内容。作为会议记录员,这将是绝对惊人的。

11 个赞

感谢您的反馈!这正是我做这个的目标!

当然,这将是合乎逻辑的下一步,并辅以临时房间来备份。

这是非常可行的,对于上传足够好的人来说,可以不使用 SFU/MCU,或者可以提供可选支持。

7 个赞

这太完美了,我不会在很长一段时间内更新,但二月份我会在 ESR 发布时最后一次更新,以便包含此插件。

我对此感到非常兴奋,我希望它能实现。

2 个赞

“饮水机”聊天室的图标能改成 bottle-water 吗?

3 个赞

现在有了管理房间的用户界面。

10 个赞

感谢 Falco 提供的这个插件 :heart:

这是很棒的工作 :+1:

1 个赞

我在生产环境中进行测试,稍后会提供反馈!让我们来评论一下 :brazil:

1 个赞

也许在这种情况下使用一个环(ring)会更好?当我身处一个房间中并点击我自己的个人资料或其他人的个人资料时,DOM 刷新会返回主页。

现在有了一个使用 Discourse Chat 的烤串菜单模式的房间详情屏幕

2 个赞

在默认主题上它没有重叠,也许调整一下你的主题以处理较少的间距?

image

这现在已修复。

3 个赞

鉴于最近的新闻,我在插件中添加了一个新功能:一个由人工智能驱动的降噪过滤器。

管理员可以通过站点设置(默认:关闭)使其可用,然后用户可以通过在语音聊天室中点击他们自己的用户来选择启用它。

6 个赞