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

:discourse2: ملخص يُمكّن Discourse Zoom مسؤولي ومستخدمي Discourse الذين يمتلكون اشتراك Zoom مدفوعًا من جدولة وإدارة والمشاركة في ندوات Zoom مباشرةً من منصة Discourse الخاصة بهم.
:hammer_and_wrench: رابط المستودع https://github.com/discourse/discourse-zoom
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

نظرة عامة

تدمج هذه الإضافة ندوات Zoom في مثيل Discourse. يمكن ربط ندوات Zoom بالمواضيع، ويمكن للمستخدمين التسجيل في الندوات والانضمام إليها عند بدايتها.

:warning: نظرًا لأن Zoom قد ألغت مصادقة JWT، اعتبارًا من 1 أغسطس 2023، تغيرت آلية المصادقة في الإضافة من JWT (التي أصبحت الآن ملغاة وسيتم إزالتها من Zoom في 1 سبتمبر) إلى OAuth من خادم إلى خادم. يحتاج المستخدمون الحاليون للإضافة إلى تحديث إعداداتهم.

الميزات

  • عند بدء ندوة Zoom، يتحول زر “التسجيل” تلقائيًا إلى “انضمام”، وعند النقر عليه يتم تشغيل الندوة باستخدام Zoom SDK في نقطة نهاية مخصصة داخل مجتمع Discourse الخاص بك
  • يقوم بتذكير المشاركين في الندوة تلقائيًا قبل N دقيقة من الحدث (N قابل للتكوين في إعدادات الإضافة، وفي الوضع الافتراضي تكون التنبيهات معطلة)
  • يمكن للمسؤولين إضافة مشاركين في لوحة المناقشة إلى ندوة في Discourse
  • يمكن للمسؤولين إضافة رابط لتسجيلات الفيديو للندوة في Discourse، والتي يتم عرضها للمستخدمين بعد انتهاء الحدث
  • يرتبط مضيفو الندوات ومشاركو لوحة المناقشة في Zoom بحسابات المستخدمين في Discourse

الاستخدام

لاستخدام إضافة Discourse Zoom، يجب أولًا تثبيتها في مثيل Discourse الخاص بك وتكوينها باستخدام بيانات اعتماد تطبيق OAuth من خادم إلى خادم الخاص بـ Zoom. بمجرد إعداد الإضافة، يمكنك إنشاء ندوة Zoom جديدة بإنشاء موضوع جديد وربطه بالندوة. يمكن للمستخدمين بعد ذلك التسجيل في الندوة مباشرةً من الموضوع.

التثبيت

الخطوة 1: تثبيت الإضافة في مثيل Discourse الخاص بك

يمكنك تثبيت الإضافة في مثيل Discourse الخاص بك باتباع التعليمات هنا.

الخطوة 2: إنشاء تطبيق OAuth من خادم إلى خادم في Zoom Marketplace


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


الخطوة 3: تكوين الإضافة

بمجرد تثبيت الإضافة، انتقل إلى إعدادات موقع Discourse الخاص بك وحدد خانة الاختيار zoom enabled ثم احفظ التغييرات.

من Zoom Marketplace، انتقل إلى علامة التبويب App Credentials:

ثم انسخ والصق القيم في إعدادات الموقع المقابلة في مثيل Discourse الخاص بك:

  • zoom s2s account id
  • zoom s2s client id
  • zoom s2s client secret

الخطوة 4: تعيين رمز سرية Webhook

في علامة التبويب Feature لتطبيق OAuth من خادم إلى خادم الخاص بـ Zoom، انسخ “Secret Token” وأضفه إلى إعداد موقع Discourse الخاص بك zoom webhooks secret token.

الخطوة 5: تفعيل اشتراكات الأحداث

بينما لا تزال في علامة التبويب Feature لتطبيق OAuth من خادم إلى خادم الخاص بـ Zoom، قم بتفعيل “Event Subscriptions” ثم انقر على زر Add Event Subscription:

بعد ذلك، قم بتعيين “Event notification endpoint URL” إلى:

https://YOURSITE.COM/zoom/webhooks/webinars.json

ثم انقر على زر + Add Events:

افتح علامة التبويب Webinar من قائمة أنواع الأحداث وحدد جميع الأحداث المدرجة. إذا لم تتمكن من رؤية أذونات حدث Webinar، فراجع كيفية تمكين الأذونات.

تحت عنوان “Event notification endpoint URL” الذي قمت بتعيينه سابقًا، ابحث عن زر Validate:

يجب أن يظهر أيقونة علامة صح مع كلمة "Validated" باللون الأخضر إذا كان كل شيء يعمل بشكل صحيح.

أخيرًا، انقر على زر Save في أسفل الصفحة

الخطوة 6: النطاقات (Scopes)

بمجرد تعيين اشتراكات الأحداث، انتقل إلى علامة التبويب Scopes، ثم انقر على زر Add Scopes. هنا ستقوم باختيار النطاقات التالية إما بالبحث عن القيم المذكورة في الجداول، يدويًا، أو باستخدام قيم جزئية، على سبيل المثال بدلاً من البحث عن webinar:read:list_panelists:admin ابحث عن webinar:read:، مما سيضيء العناصر المعروضة لتسهيل العثور على المطلوبة.

في تطبيق OAuth من خادم إلى خادم تحت علامة التبويب scopes، انقر على زر 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

:warning: قامت Zoom بتغيير بعض الأمور من جانبها، نحن نعمل على تحديث الدليل.


تقوم تطبيق اجتماعات SDK بمصادقة المستخدم بحيث يمكن للمستخدم الانضمام إلى اجتماع الندوة


ابدأ بإنشاء General App، ثم تحت Select how the app is managed، اختر User-managed.

تحت علامة التبويب Basic Information في تطبيق General App الخاص بك، انسخ والصق Client ID/ SDK key في حقل zoom sdk key، و Client Secret/SDK secret في حقل zoom sdk secret.

بالتمرير لأسفل، ستجد قسم OAuth Information، في حقل OAuth Redirect URL ضع عنوان URL لموقعك، على سبيل المثال، https://YOURSITE.com.

الخطوة 8: تحديد استخدام التطبيق الخاص بك

تحت علامة التبويب Features اختر علامة التبويب الفرعية Embed، ثم قم بتفعيل Meeting SDK

القيود

تعمل الإضافة فقط مع الندوات التي لا تتطلب تسجيلًا في Zoom.

إشعار بشأن التغييرات الكاسرة

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

:discourse2: مستضافون لدينا؟ هذه الإضافة متاحة في خططنا المؤسسية.

63 إعجابًا

شكرًا جزيلاً لك على العمل على هذه الميزة الرائعة!

تمكنت من تثبيت الإضافة، وإنشاء تطبيق JWT في Zoom، وتكوين discourse الخاص بي كما هو موصوف.
ومع ذلك، أواجه مشكلات عند استخدام زر “ندوة عبر Zoom” في المصنّع لربط اجتماع مجدول بالمنشور.

سيكون رائعًا لو يمكنك إضافة شرح لما يجب إدخاله بالضبط في حقل النص تحت “إضافة ندوة”. فإما معرف الاجتماع أو الرابط الكامل لا يبدوان يعملان لديّ.

هناك مشكلة صغيرة أخرى لاحظتها: رابط مستودع GitHub المربوط في صفحة “الإضافات” بلوحة تحكم المسؤول يشير إلى https://github.com/discourse-org/discourse-zoom، بينما يجب أن يشير إلى GitHub - discourse/discourse-zoom: Integrate Zoom events in Discourse. · GitHub

إعجابَين (2)

فكرة مثيرة للاهتمام، وتبدو تجربة رائعة لأعضاء المجتمع!

أتساءل عما إذا كان قد تم التفكير حتى الآن في السماح بتدفق عمل أكثر عمومية (مستقل عن المورد) مع هذه الإضافة؛ وذلك أساسًا لتقديم مدمج مماثل لعداد تنازلي لوقت وتاريخ محددين، مع تحديد المضيف و/أو المشارك في الحلقة، ورابط إلى عنوان URL للندوة عبر الويب، وروابط لاحقًا للتسجيلات، وما إلى ذلك.

تُعد Jiti (مفتوحة المصدر) المثال الذي كان في ذهني، ولكن هناك بالطبع عدة خيارات في هذا المجال.

إعجابَين (2)

يجب إدخال معرف الندوة عبر الإنترنت. في سجلات موقعك الموجودة في /logs، يجب أن تتمكن من رؤية مزيد من التفاصيل إذا لم ينجح إضافة الحدث في نافذة الحوار. كما قمت بإصلاح مشكلة الرابط التي ذكرتها، شكرًا لتبليغك عن ذلك.

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

8 إعجابات

هل توجد إمكانية لإضافة دعم الاجتماعات دون تسجيل في هذا الملحق، بالإضافة إلى الندوات عبر الإنترنت؟ عمل رائع!

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؟ ليس رابط احتياطي، بل رابط إلزامي لتجاوز هذه المشكلة تمامًا. شكرًا مجددًا يا بنار!