| 摘要 | 在 Discourse 中添加点对点语音和视频通话 (WebRTC)。 可通过浮动按钮或1:1 聊天撰写框进行一对一通话;内置小部件和呼叫界面 (UI)。无需外部应用。 您的 Discourse 服务器仅执行信令(不处理媒体)。音频/视频在可能的情况下直接在两个浏览器之间传输 (P2P);您可以在管理员设置中添加可选的 TURN 服务器,以便在直连 P2P 失败时(例如,严格的 NAT/防火墙),媒体通过 TURN 中继传输,通话仍然有效。 | |
| 代码仓库链接 | GitHub - idiskuz/diskuz-call: Voice calls (WebRTC) for Discourse. P2P calls between users, built-in UI. Created for diskuz.com. · GitHub | |
| 安装指南 | 如何在 Discourse 中安装插件 | |
| diskuz Call 社区 | 访问 diskuz.com 上的支持社区,了解此新插件。 |
功能特性
- P2P 语音和视频 (WebRTC) — Discourse 只处理信令(offer/answer, ICE);它从不接收或存储音频/视频。STUN(默认:Google)帮助两个浏览器互相找到对方;然后媒体直接在它们之间流动(真正的 P2P)。TURN(可选,可在管理员设置 → ICE 服务器中配置)是一个中继:当直接 P2P 失败时(对称式 NAT、企业防火墙等),媒体流经 A → TURN 服务器 → B,以确保通话仍然有效。如果用户报告通话失败或单向音频,请添加 TURN。
- 浮动按钮(右下角)— 打开一个小部件,用于输入用户名并开始通话。在主题撰写框或聊天窗口打开时隐藏。管理员可以全局禁用此功能。
- 1:1 聊天中的呼叫按钮 — 聊天撰写框中的图标,用于与另一位用户开始通话。管理员可以全局禁用此功能。启用后仅对允许的组可见。
- 基于组的访问 — 只有配置组中的用户才能看到和使用 diskuz Call。可选的“被呼叫者必须关注呼叫者”(需要 Discourse Follow)。
- 单独的“允许视频”组 — 控制谁可以在通话期间打开摄像头。
- 可配置的铃声 — 来电声音:无、默认、叮咚、响铃、聊天、自定义(最多 10 个 MP3 URL;用户在小部件中选择一个)或内置的替代预设。此外,Discourse 通知(铃铛图标)会显示“正在呼叫您”,对于未接来电显示“未接来电”及时间。
- 小部件 — 两个页面:“呼叫朋友”(主页)和通知(已接收、已发送、最近、未接;每个标签页最多 10 个;用户名可点击重新呼叫)。桌面端:顶部栏可拖动。移动端:全屏。
- 通话中 — 显示通话时长、静音、扬声器、视频开启/关闭、模糊(桌面/Android)、移动端的耳朵模式(深色覆盖层;连点 3 次解锁)。用户状态(在线、忙碌、离线)在浏览器中显示;忙碌/离线时可自动拒绝来电。如果用户切换到另一个标签页,将启动 60 秒计时器;如果用户未返回,通话将结束。
- 本地化 — 英语和意大利语(客户端和服务器)。
状态: Beta。对于通话失败或单向音频,请在管理员 → 插件 → ICE 服务器中配置 TURN。
配置
- 安装 — 添加插件(例如,通过
app.yml钩子或手动添加到插件目录):git clone https://github.com/idiskuz/diskuz-call.git- 重建应用(例如
./launcher rebuild app)。
- 启用 — 管理员 → 插件:启用 diskuz Call(如果已列出)。管理员 → 设置 → 插件:启用 启用 diskuz Call。
- 访问 — 将 谁可以看到并使用 diskuz Call 设置为所需的组(例如
1|2|3代表管理员、版主、员工)。 - 可选 — 配置 显示浮动按钮 / 显示聊天按钮、要求被呼叫者关注呼叫者(需要 Discourse Follow)、将来电声音、自定义铃声 或 替代铃声、可以启用视频的组、主色,以及(如果需要处理 NAT/防火墙)ICE 服务器(TURN JSON)。
要求: Discourse(使用内置的实时消息功能进行信令)。可选:Discourse Follow(用于“被呼叫者必须关注呼叫者”)。支持 WebRTC 的浏览器、麦克风(视频还需要摄像头)。
设置
| 名称 | 描述 |
|---|---|
| 启用 diskuz Call | 插件的主开关。 |
| 谁可以看到并使用 diskuz Call | 组列表(例如,按 ID 分组的管理员、版主、员工)。只有这些用户才能看到插件并能拨打/接听电话。 |
| 要求被呼叫者关注呼叫者 | 启用时(需要 Discourse Follow),被呼叫者必须关注呼叫者才能接听电话。 |
| 显示浮动按钮 | 开启:浮动按钮仅对允许的组可见。关闭:对所有人隐藏。 |
| 显示聊天按钮 | 开启:1:1 聊天中的呼叫按钮仅对允许的组可见。关闭:对所有人隐藏。 |
| 可以启用视频的组 | 在通话期间可以控制谁可以使用视频按钮的组列表。 |
| 主色 | 用于按钮和强调色的十六进制颜色(例如 #13c98c)。 |
| 将来电声音 | 无、默认、叮咚、响铃、聊天、自定义或替代。 |
| 自定义铃声 1–10 | MP3 URL。在“声音”设置为自定义时使用;用户在小部件中选择一个。 |
| 替代铃声 | 当“声音”设置为替代时的预设(例如,柔和、经典、现代、festivo、marimba、relax1–5)。 |
| ICE 服务器 | STUN/TURN 的可选 JSON 数组。留空 = 仅 Google STUN。 |
| 调试日志 | 开启时,浏览器控制台 (F12) 中会出现 [diskuz-call] 消息。用于支持;在生产环境中禁用。 |
作者: diskuz.com, Cristian Deraco
鸣谢: 概念、功能和设计由 Cristian Deraco (diskuz.com) 提供。使用 AI 辅助开发实现。
版本: 0.4.0-beta
这不是官方 Discourse 插件。
非常激动能与大家分享——diskuz Call 终于上线了!迫不及待想听听大家的想法 ![]()







