评测 - 为您的社区添加 Discord 风格的语音房间 🎙

大家好!分享 Resenha,这是一个实验性插件,可将语音和视频聊天室直接集成到 Discourse 中——无需外部应用,只需在侧边栏中使用点对点 WebRTC。

output

在线试用

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

(没错,它运行在树莓派 5 上——这就是它的轻量级之处。)

工作原理

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

功能特性

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

状态

:warning: Beta — 默认的点对点模式已经过测试,在小群体(2-10 名参与者)中运行良好。对于更大的房间,将插件指向 LiveKit(Cloud 或自托管)——其他一切保持不变。

安装

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

Admin > Settings > Plugins > resenha enabled 中启用。

欢迎反馈

这是实验性的——在此主题中欢迎错误报告、想法和问题。也欢迎 PR!


注意:这不是 official 插件。

54 个赞

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

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 个赞