| 摘要 | Discourse Zoom 插件通过付费的 Zoom 订阅,帮助 Discourse 管理员和用户在 Discourse 平台内直接安排、管理和参与 Zoom 网络研讨会。 | |
| 代码库链接 | https://github.com/discourse/discourse-zoom | |
| 安装指南 | 如何在 Discourse 中安装插件 |
概述
此插件将 Zoom 网络研讨会集成到 Discourse 实例中。Zoom 网络研讨会可以与主题关联,Discourse 用户可以注册网络研讨会并在其开始时加入。
由于 Zoom 已弃用 JWT 身份验证,自 2023 年 8 月 1 日起,该插件的身份验证机制已从 JWT(现已弃用,Zoom 将于 9 月 1 日移除)更改为服务器到服务器的 OAuth。现有插件用户需要更新其设置。
功能
- 当 Zoom 网络研讨会开始时,“注册”按钮会自动切换为“加入”,点击后将使用 Zoom SDK 在 Discourse 社区内的专用端点启动网络研讨会
- 在活动开始前 N 分钟自动提醒网络研讨会注册者(N 可在插件设置中配置,默认情况下提醒功能已关闭)
- 管理员可以在 Discourse 中为网络研讨会添加小组成员
- 管理员可以在 Discourse 中添加网络研讨会视频录制的链接,该链接将在活动结束后向用户显示
- Zoom 活动主持人和小组成员将与 Discourse 用户账户关联
使用方法
要使用 Discourse Zoom 插件,首先需要在 Discourse 实例中安装它,并使用您的 Zoom 服务器到服务器 OAuth 应用凭据进行配置。设置好插件后,您可以通过创建新主题并将其与网络研讨会关联来创建新的 Zoom 网络研讨会。然后,用户可以直接从主题中注册网络研讨会。
安装
步骤 1:在 Discourse 实例中安装插件
您可以按照此处说明在 Discourse 实例中安装插件。
步骤 2:在 Zoom Marketplace 中创建服务器到服务器的 OAuth 应用
开始之前,您需要在 Zoom Marketplace 中创建一个服务器到服务器的 OAuth 应用。此应用将用于向 Zoom API 发出请求并通过 Webhooks 接收事件通知。
步骤 3:配置插件
安装插件后,进入您的 Discourse 站点设置,勾选 zoom enabled 复选框并保存。
从 Zoom Marketplace 进入 App Credentials(应用凭据)选项卡:
然后将值复制并粘贴到您的 Discourse 实例中对应的站点设置:
zoom s2s account idzoom s2s client idzoom s2s client secret
步骤 4:设置 Webhook 密钥令牌
在您的 Zoom 服务器到服务器 OAuth 应用的 Feature(功能)选项卡上,复制“Secret Token”(密钥令牌),并将其添加到您的 Discourse 站点的 zoom webhooks secret token 站点设置中。
步骤 5:启用事件订阅
仍在您的 Zoom 服务器到服务器 OAuth 应用的 Feature(功能)选项卡上,启用“Event Subscriptions”(事件订阅),然后点击 Add Event Subscription 按钮:
接下来,将“Event notification endpoint URL”(事件通知端点 URL)设置为:
https://YOURSITE.COM/zoom/webhooks/webinars.json
然后点击 + Add Events 按钮:
从事件类型列表中打开 Webinar(网络研讨会)选项卡,并勾选所有列出的事件。如果看不到 Webinar 事件权限,请查看如何启用权限。
在您之前设置的“Event notification endpoint URL”下,找到 Validate 按钮:
如果一切正常,应显示
。
最后,点击页面底部的 Save 按钮。
步骤 6:作用域
设置好事件订阅后,转到 Scopes(作用域)选项卡,点击 Add Scopes 按钮。在这里,您可以通过搜索表中给出的值、手动输入或使用部分值来选择以下作用域。例如,与其搜索 webinar:read:list_panelists:admin,不如搜索 webinar:read:,这样可以缩小显示范围,更容易找到所需的作用域。
在服务器到服务器 OAuth 应用的“作用域”选项卡下点击 Add Scopes 按钮,将弹出一个窗口:
在搜索作用域时,可以按完整或部分名称进行搜索。为了方便起见,您可以将下表中的每个作用域复制粘贴进去,或者在相应的选项卡下搜索它们:
用户
| scope | desc |
|---|---|
| user:read:user:admin | 查看用户 |
| user:read:email:admin | 验证用户电子邮件 |
| user:read:list_users:admin | 查看用户列表 |
网络研讨会
| scope | desc |
|---|---|
| webinar:read:list_panelists:admin | 查看网络研讨会的小组成员 |
| webinar:read:list_absentees:admin | 查看过往网络研讨会的缺席者 |
| webinar:read:webinar:admin | 查看网络研讨会 |
| webinar:read:registrant:admin | 查看网络研讨会的注册者 |
| webinar:read:list_registrants:admin | 查看网络研讨会的注册者列表 |
| webinar:write:batch_registrants:admin | 向网络研讨会添加注册者 |
| webinar:delete:webinar:admin | 删除网络研讨会 |
| webinar:write:panelist | 向网络研讨会添加小组成员 |
| webinar:delete:registrant | 移除网络研讨会的注册者 |
| webinar:write:webinar | 为用户创建网络研讨会 |
| webinar:update:status | 更新网络研讨会状态 |
| webinar:delete:panelist | 移除网络研讨会的小组成员 |
| webinar:update:webinar | 更新网络研讨会 |
| webinar:write:registrant | 向网络研讨会添加注册者 |
网络研讨会
| scope | desc |
|---|---|
| webinar:read:list_panelists:admin | 查看网络研讨会的小组成员 |
| webinar:read:list_absentees:admin | 查看过往网络研讨会的缺席者 |
| webinar:read:webinar:admin | 查看网络研讨会 |
| webinar:read:registrant:admin | 查看网络研讨会的注册者 |
| webinar:read:list_registrants:admin | 查看网络研讨会的注册者列表 |
| webinar:write:batch_registrants:admin | 向网络研讨会添加注册者 |
| webinar:delete:webinar:admin | 删除网络研讨会 |
| webinar:write:panelist | 向网络研讨会添加小组成员 |
| webinar:delete:registrant | 移除网络研讨会的注册者 |
| webinar:write:webinar | 为用户创建网络研讨会 |
| webinar:update:status | 更新网络研讨会状态 |
| webinar:delete:panelist | 移除网络研讨会的小组成员 |
| webinar:update:webinar | 更新网络研讨会 |
| webinar:write:registrant | 向网络研讨会添加注册者 |
步骤 7:创建 Meeting SDK 应用
Zoom 已在其端进行了更改,我们正在努力更新指南。
SDK 会议应用用于对用户进行身份验证,以便用户可以加入网络研讨会会议。
首先创建一个 General App(通用应用),在 Select how the app is managed(选择应用管理方式)下,选择 User-managed(用户管理)。
在通用应用的 Basic Information(基本信息)选项卡中,将 Client ID/ SDK key 复制并粘贴到 zoom sdk key 字段,将 Client Secret/SDK secret 复制并粘贴到 zoom sdk secret 字段。
向下滚动,您会找到 OAuth Information(OAuth 信息)部分,在 OAuth Redirect URL 中填入您的站点 URL,例如 https://YOURSITE.com。
步骤 8:指定应用用途
在 Features(功能)选项卡下选择 Embed(嵌入)子选项卡,启用 Meeting SDK。
限制
该插件仅适用于不需要在 Zoom 中注册的网络研讨会。
关于破坏性变更的说明
由于 Zoom API 的弃用,旧版本的插件需要按照本文提到的步骤进行配置。
由我们托管?此插件可在我们的企业版计划中使用。
















