Summary | Discourse Zoom empowers Discourse administrators and users with a paid Zoom subscription to schedule, manage, and participate in Zoom webinars directly from their Discourse platform. | |
Repository Link | https://github.com/discourse/discourse-zoom | |
Install Guide | How to install plugins in Discourse |
Overview
This plugin integrates Zoom webinars into a Discourse instance. Zoom webinars can be associated with topics, Discourse users can register for webinars and join them when they start.
Due to Zoom deprecating JWT authentication, as of August 1st 2023, the plugin’s authentication mechanism has changed from JWT (now deprecated, Zoom will remove on September 1st) to Server-to-Server OAuth. Existing users of the plugin need to update their settings.
Features
- When a Zoom webinar starts, the “Register” button automatically switches to “Join”, and clicking it launches the webinar using the Zoom SDK in a dedicated endpoint inside your Discourse community
- Automatically reminds webinar registrants N minutes before the event (N is configurable in the plugin settings, by default reminders are turned off)
- Administrators can add panelists to a webinar in Discourse
- Administrators can add a link to video recordings of the webinar in Discourse, which is then displayed to users after the event has ended
- Zoom event hosts and panelists are associated with Discourse user accounts
Usage
To use the Discourse Zoom plugin, you first need to install it in your Discourse instance and configure it with your Zoom Server-to-Server OAuth app credentials. Once the plugin is set up, you can create a new Zoom webinar by creating a new topic and associating it with the webinar. Users can then register for the webinar directly from the topic.
Installation
Step 1: Install the plugin in your Discourse instance
You can install the plugin to your Discourse instance by following the instructions here.
Step 2: Create a Server-to-Server OAuth app in the Zoom Marketplace
To get started, you’ll need to create a Server-to-Server OAuth app in the Zoom Marketplace. This app will be needed to make requests to the Zoom API and to receive events notifications via Webhooks
Step 3: Configure the plugin
Once the plugin is installed, go to your Discourse site settings and check the zoom enabled
checkbox and save.
From the Zoom Marketplace go to the App Credentials tab:
Then copy and paste the values into the corresponding site settings on your Discourse instance:
zoom s2s account id
zoom s2s client id
zoom s2s client secret
Step 4: Set the webhook secret token
On the Feature tab of your Zoom Server-to-Server OAuth app, copy the “Secret Token” and add it to your Discourse site’s zoom webhooks secret token
site setting.
Step 5: Enable event subscriptions
While still on the Feature tab of your Zoom Server-to-Server OAuth app, enable “Event Subscriptions” and and select the Add Event Subscription button:
Next, set the “Event notification endpoint URL” to:
https://YOURSITE.COM/zoom/webhooks/webinars.json
then select the + Add Events button:
Open the Webinar tab from the event types list and check all of the events that listed. If you can’t see the Webinar event permissions, check how to enable the permissions.
Under the “Event notification endpoint URL” your set earlier, find the Validate button:
It should show if everything worked.
Finally select the Save button at the bottom of the page
Step 6: Scopes
Once you have set the event subscriptions move to the Scopes
tab, and click on the Add Scopes
button. Here you will select the following scopes by either searching by the values given in the tables, manually or using partial values, for example instead of searching for webinar:read:list_panelists:admin
search for webinar:read:
this will narrow down the elements show so it is easier to find the required ones.
In the Server to server OAuth app under the scopes tab click on the Add Scopes
button and a window will show up:
In the search scope search by full or partial name, to facilitate this, you can copy-paste each of the scopes into the following tables or search for them under the corresponding tab:
Users
scope | desc |
---|---|
user:read:user:admin | View a user |
user:read:email:admin | Verify a user’s email |
user:read:list_users:admin | View users |
Webinar
scope | desc |
---|---|
webinar:read:list_panelists:admin | View a webinar’s panelists |
webinar:read:list_absentees:admin | View a past webinar’s absentees |
webinar:read:webinar:admin | View a webinar |
webinar:read:registrant:admin | View a webinar’s registrant |
webinar:read:list_registrants:admin | View a webinar’s registrants |
webinar:write:batch_registrants:admin | Add registrants to a webinar |
webinar:delete:webinar:admin | Delete a webinar |
webinar:write:panelist | Add panelists to a webinar |
webinar:delete:registrant | Remove a webinar’s registrant |
webinar:write:webinar | Create a webinar for a user |
webinar:update:status | Update a webinar’s status |
webinar:delete:panelist | Remove a webinar’s panelist |
webinar:update:webinar | Update a webinar |
webinar:write:registrant | Add a registrant to a webinar |
Webinar
scope | desc |
---|---|
webinar:read:list_panelists:admin | View a webinar’s panelists |
webinar:read:list_absentees:admin | View a past webinar’s absentees |
webinar:read:webinar:admin | View a webinar |
webinar:read:registrant:admin | View a webinar’s registrant |
webinar:read:list_registrants:admin | View a webinar’s registrants |
webinar:write:batch_registrants:admin | Add registrants to a webinar |
webinar:delete:webinar:admin | Delete a webinar |
webinar:write:panelist | Add panelists to a webinar |
webinar:delete:registrant | Remove a webinar’s registrant |
webinar:write:webinar | Create a webinar for a user |
webinar:update:status | Update a webinar’s status |
webinar:delete:panelist | Remove a webinar’s panelist |
webinar:update:webinar | Update a webinar |
webinar:write:registrant | Add a registrant to a webinar |
Step 7: Create a Meeting SDK App
Zoom has changed things on their side, we are working on getting the guide updated.
The SDK meeting app authenticates the user so the user can join the webinar meeting
Start by creating a General App
, and under the Select how the app is managed
, select User-managed
.
Under the Basic Information tab in your General App, copy and paste the Client ID/ SDK key
into the zoom sdk key
field, and the Client Secret/SDK secret
into the zoom sdk secret
field.
Scrolling down, you will find the OAuth Information
section, in the OAuth Redirect URL
place the URL of your site, for example, https://YOURSITE.com
.
Step 8: Specify your app usage
Under the Features
tab select the Embed
sub-tab, enable the Meeting SDK
Limitations
The plugin only works with webinars that do not require registration in Zoom.
Notice about breaking Changes
Due to deprecations in the Zoom API, old instances of the plugin will need to be configured following the steps mentioned in this post.
Hosted by us? This plugin is available on our Enterprise plans.
Last edited by @nat 2024-10-03T13:27:22Z
Check document
Perform check on document: