زر زوم للديسكورس

:discourse2: 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.
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-zoom
:open_book: 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.

:warning: 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 A checkmark icon with "Validated" in green 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

:warning: 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.

:discourse2: Hosted by us? This plugin is available on our Enterprise plans.

Last edited by @nat 2024-10-03T13:27:22Z

Check documentPerform check on document:
63 إعجابًا

Thanks so much for working on this, great feature!

I was able to install the plugin, create the JWT app in Zoom, and configure my discourse as described.
However, I am running into problems when using the Zoom Webinar button in the composer to associate a scheduled meeting with the post.

It would be great if you could please add an explanation what exactly one has to enter in the text input under “Add Webinar” . Neither the meeting ID or full URL seem to work for me.

Another minor issue I noticed: The repository URL linked to in the “Plugins” page of the admin dashboard points to https://github.com/discourse-org/discourse-zoom, whereas it should be linking to GitHub - discourse/discourse-zoom: Integrate Zoom events in Discourse.

إعجابَين (2)

Interesting concept, and looks like a nice experience for community members!

I’m curious if there’s been any thought yet to allowing a more generic (vendor-agnostic) workflow with this plugin; basically to offer the same embedding of a countdown timer to a specific time and date, specifying a host and/or panelist, link to the webinar URL, later links to recordings, etc.

Jiti (open source) would be the example that I had in mind but there are obviously several options in this space.

إعجابَين (2)

You need to enter the webinar ID. In your site’s logs in /logs, you should be able to see more details if it still can’t add the event in the modal window. I also fixed the URL issue you mentioned, thanks for reporting that.

Unfortunately, no, this currently does not provide a vendor-agnostic workflow. The Zoom API calls are abstracted though, so it’s possible to add support for another vendor with a bit of effort (although, the plugin would need to be renamed to something less zoom-y).

8 إعجابات

Is there any possibility of adding meeting support w/out registration to this plugin as well as webinars? Great work!

7 إعجابات

الآن بعد أن يتطلب Zoom كلمة مرور لجميع الاجتماعات/الندوات عبر الإنترنت، أعتقد أن الإضافة معطلة. حاولت إنشاء ندوة عبر الإنترنت، وعند الانضمام تظهر لي هذه الرسالة: “انتهت مهلة اتصالك ولا يمكنك الانضمام إلى الاجتماع. تحقق من اتصال شبكتك وحاول مرة أخرى.”

3 إعجابات

سأقوم بالتحقق من هذا الأمر اليوم. من الممكن أن تكون هذه مشكلة مؤقتة، حيث أن عميل الويب الخاص بـ Zoom موضح على أنه “قيد الصيانة” في صفحة الحالة الخاصة بهم على status.zoom.us.

5 إعجابات

أود فقط التذكير بأن استخدام الندوات عبر الإنترنت يتطلب الحد الأدنى 40.00 دولارًا شهريًا لتمكينها، بالإضافة إلى خطة Pro بسعر 14.99 دولارًا شهريًا. تحياتي.

إعجابَين (2)

نعم، للأسف يبدو أن Zoom Web SDK غير متصل حاليًا. يقولون إنهم يعملون على إعادته إلى الخدمة (غير متأكد تمامًا مما يعنيه ذلك).

لذا، في الوقت الحالي، أضفت حلاً بديلاً إلى الإضافة؛ عند الانضمام إلى ندوة عبر الإنترنت، سيظهر هذا الشاشة الآن إذا فشل الانضمام عبر SDK:

8 إعجابات

معلومة للإعلام: تعاونية ساهمت في تأسيسها انتقلت إلى https://bigbluebutton.org/. الاستضافة الذاتية كلفتنا أقل بكثير من حساب ندوات عبر Zoom.

11 إعجابًا

مرحبًا بنار، لاحظت للتو وجود علامة تبويب “Webinar” في ملف المستخدم. بصفتي مديرًا، يمكنني عرضها كما هو متوقع، ولكن ك مستخدم عادي، أحصل على هذه الرسالة:

تم رفض الوصول

أثناء محاولة تحميل [/topics/webinar-registrations/chris_murray.json](https://community.naturephotographers.network/topics/webinar-registrations/chris_murray.json)

من السجلات:

خطأ: ممنوع
الرابط: https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js
السطر: 1
العمود: 267206
موقع النافذة: https://community.naturephotographers.network/u/chris_murray/activity


o/t</<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267206
o/t<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267309
o@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:267390
trigger@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:545370
A</e._onError/<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:550247
f</t.invoke@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:490055
f</t.flush@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:489055
p</t.flush@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:491070
t</t._end@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:496499
t</t.end@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:493035
t</t._run@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:497037
t</t.run@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:493643
c@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:359842
i/r.error@https://community.naturephotographers.network/assets/application-54c82e8fd96fa4eb82fa7465a602da175078108feb909cfeec95f696f02b5854.js:1:203298
i@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:27754
fireWith@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:28522
l@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:78753
o/<@https://community.naturephotographers.network/assets/ember_jquery-57d09ec67e9e407d9b0d42aa1fefd1a470c45310d953b07793a3ca8adc6ec599.js:1:81055

إعجاب واحد (1)

لا أستطيع إعادة إنتاج هذه المشكلة؛ فقد اختبرت الأمر على مواقع متعددة بأسماء مستخدمين مختلفة، بما في ذلك محليًا مع اسم مستخدم يحتوي على شرطة سفلية.

نعم، تستخدم الإضافة WebSDK من زووم، وهي تواجه مشاكل في بعض المتصفحات.

إعجاب واحد (1)

للعلم، لقد أجريت ندوة عبر الإنترنت باستخدام هذه الأداة، لكن زر الانضمام لم يعمل على الإطلاق، وتلقى الجميع رسالة انتهاء مهلة من Zoom. قمت بتوجيه الجميع إلى رابط Zoom العادي الذي عمل بشكل جيد. يبدو أن WebSDK يواجه العديد من المشاكل. ربما يمكننا إضافة خيار لإدخال عنوان URL لزر الانضمام بدلاً من الاعتماد على WebSDK نظرًا لأنه يفشل.

إعجاب واحد (1)

يجب أن يعمل حزمة تطوير البرمجيات (SDK) الخاصة بـ Zoom إذا قمت بنشر التحديث، فقد قمت بتحديث الإضافة الأسبوع الماضي. ومع ذلك، فقد قاموا بحظر جميع الإصدارات السابقة، لذا إذا لم تكن قد قمت بالنشر مؤخرًا، فقد يكون ذلك هو التفسير. كما أن إضافة رابط Zoom كخيار يبدو منطقيًا.

إعجابَين (2)

شكرًا لك يا بينار، لم أكن أدرك وجود تحديث، وآمل أن يحل ذلك المشكلة في المرة القادمة.

سؤال بخصوص الفيديو الذي يمكنك إضافته لاحقًا؛ هل يعمل هذا فقط لتسجيلات سحابة Zoom؟ إذا استخدمت Vimeo أو YouTube، فإنه يشير إلى أن التنسيق غير مدعوم. مجرد فضول، وليس بالأمر الكبير حيث يمكنني ببساطة تضمينه في المنشور.

إعجاب واحد (1)

أجل بالتأكيد، هذا الحقل يعمل فقط مع رابط لملف فيديو مباشر. لن يعمل مع YouTube أو Vimeo، ولكن كما تقول، من الأسهل بكثير استخدام “oneboxing” لرابط YouTube/Vimeo.

3 إعجابات

انظر: BigBlueButton video conference

إعجاب واحد (1)

بعض التعليقات بعد استخدام هذه الميزة عدة مرات:

  1. إخفاء زر الانضمام حتى يبدأ الندوة عبر الإنترنت ليس صديقًا للمستخدم. أتلقى عدة رسائل بريد إلكتروني قبل بدء الندوة أسأل فيها عن رابط الانضمام، رغم أنني أوضح ذلك في وصف الندوة وفي الإشعار الذي يشير إلى أن الرابط سيظهر عند بدء الندوة. لكن المستخدمين ببساطة لا يقرأون. شخصيًا، أفضل أن يكون زر الانضمام مرئيًا دائمًا؛ فإذا نقر المستخدم عليه مبكرًا، سيُخبره فقط بأن الندوة لم تبدأ بعد، وسيُرجع النظر لمعرفة وقت البدء الفعلي.

  2. هل من الممكن دعم جلسات التدريب؟ في الندوات عبر الإنترنت، تتوفر خيارًا للجلسات التدريبية حيث يمكن للمضيف والpanelists التحدث مع بعضهم البعض مسبقًا دون أن تكون الجلسة مباشرة للمشاركين. يمكنهم النقر على رابط اجتماع Zoom خلال هذا الوقت، وسيصلهم إشعار يشير إلى أن الاجتماع لم يبدأ بعد، لكنهم سيكونون في نوع من غرفة الانتظار، وسيتم الانضمام تلقائيًا بمجرد بدء البث المباشر. هذا سيخفف الكثير من المشاكل بالنسبة للمستخدمين.

3 إعجابات

نعتذر عن التأخير، ديفيد.

هناك إعداد يمكن أن يساعدك على الأرجح في هذا الشأن:

إذا قمت بتعيين هذا الإعداد على 30، فسيظهر الزر قبل 30 دقيقة من الوقت المحدد للندوة عبر الإنترنت.

يجب أن تتمكن من استخدام ذلك مع الإعداد المذكور أعلاه أيضًا. آخر مرة تفحصت فيها، لم تكن الويب هوكس الخاصة بـ Zoom تُفعّل عند تحويل جلسة التدريب إلى حدث كامل، مما يجعل الديناميكية الأخرى أكثر تعقيدًا قليلاً.

3 إعجابات

شكرًا لك يا بنار، لكن هذه ليست المشكلة تمامًا.

أولاً، زر “انضم الآن” الخاص بي لم يعد يعمل على الإطلاق:

في السابق كان يعمل، لكن هذه المشكلة بدأت في الأسبوعين الماضيين. كما أنني لا أرى ظهور رابط الاحتياطي أيضًا.

ثم، هناك مشكلة منفصلة كنت أصفها سابقًا وهي مشكلة وضع التجربة. عندما كنت أعاني من المشكلة المذكورة سابقًا، كان الأمر يعمل كالتالي: عندما أبدأ الندوة عبر الإنترنت في وضع التجربة، لا يظهر زر الانضمام، بغض النظر عن قيمة إعداد zoom join x mins before start، بل يظهر فقط عندما أبدأ البث الفعلي، وهو ما أفضّل فعله قبل 5 دقائق فقط من البداية. المثالي هو أن يظهر زر الانضمام في الوقت المحدد بالإعداد، ثم يتلقى المستخدم إشعار Zoom بأن الندوة لم تبدأ بعد.

هل تعتقد أنه يمكنك توفير خيار لتحويل زر التسجيل إلى زر انضمام في الوقت المحدد، بحيث يكون مجرد رابط Zoom؟ ليس رابط احتياطي، بل رابط إلزامي لتجاوز هذه المشكلة تمامًا. شكرًا مجددًا يا بنار!