Discourse Zoom

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

نظرة عامة

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

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

الميزات

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

الاستخدام

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

التثبيت

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

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

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


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


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

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

من متجر Zoom، انتقل إلى علامة التبويب App Credentials (بيانات اعتماد التطبيق):

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

  • zoom s2s account id (معرف حساب Zoom S2S)
  • zoom s2s client id (معرف عميل Zoom S2S)
  • zoom s2s client secret (السر الخاص بعميل Zoom S2S)

الخطوة 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، فراجع كيفية تمكين الأذونات.

تحت “رابط نقطة نهاية إشعار الحدث” الذي قمت بتعيينه سابقًا، ابحث عن زر Validate (التحقق):

يجب أن يظهر A checkmark icon with "Validated" in green إذا كان كل شيء يعمل بشكل صحيح.

أخيرًا، حدد زر 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 (المعلومات الأساسية) في تطبيقك العام، انسخ والصق Client ID/ SDK key (معرف العميل/مفتاح SDK) في حقل zoom sdk key، و Client Secret/SDK secret (السر الخاص بالعميل/سر SDK) في حقل zoom sdk secret.

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

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

تحت علامة التبويب Features (الميزات)، حدد علامة التبويب الفرعية Embed (التضمين)، وقم بتمكين Meeting SDK.

القيود

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

ملاحظة حول التغييرات الرئيسية (Breaking Changes)

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

:discourse2: مستضافة من قبلنا؟ هذه الإضافة متاحة في خططنا Enterprise (المؤسسية).

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