إعداد إشعارات Matrix (element.io) باستخدام إضافة discourse-chat-integration

تصف هذه الدليل كيفية إعداد مزوّد Matrix (element.io) المضمن في discourse-chat-integration.

شكرًا لـ @ara4n وأعضاء غرفة #matrix-dev:matrix.org لمساعدتهم في هذه التكامل :slight_smile:

التثبيت

يتم تضمين ملحق discourse-chat-integration مع Discourse. تأكد من تمكينه عن طريق تعيين chat_integration_enabled إلى true في إعدادات موقعك. لمزيد من التفاصيل، راجع موضوع ملحق discourse-chat-integration.

إعداد Matrix

تفترض هذه التعليمات أنك تستخدم عميل الويب element.io. يجب أن تكون الخطوات المكافئة ممكنة باستخدام واجهات أخرى.

  1. افتح https://app.element.io/ في نافذة تصفح خفية جديدة (سترى السبب لاحقًا)

  2. قم بإنشاء حساب مستخدم للبوت. ربما ترغب في تدوين كلمة المرور في مكان ما في حال أردت تسجيل الدخول مرة أخرى لاحقًا. لا يحتاج Discourse إليها.

  3. استخدم الواجهة للانضمام إلى أي غرف تريد إرسال إشعارات إليها

  4. افتح إعدادات المستخدم بالنقر فوق صورتك الرمزية في الزاوية العلوية اليسرى، ثم جميع الإعدادات

  5. قم بتكوين اسم العرض والصورة الرمزية للبوت

  6. انتقل إلى علامة التبويب “المساعدة ومن نحن”، وتمرير لأسفل إلى “متقدم”، وانسخ عنوان خادم المنزل و “رمز الوصول” الخاص بك - ستحتاج إليهما لاحقًا.

  7. لا تضغط على تسجيل الخروج. إذا فعلت ذلك، سيتم إلغاء صلاحية رمز الوصول ولن يعمل. بدلاً من ذلك، فقط أغلق نافذة التصفح الخفية. إذا نسيت فتح نافذة تصفح خفية، عد إلى الخطوة 1 :wink:

إعداد Discourse

  1. في إعدادات موقع Discourse، أدخل عنوان خادم المنزل الخاص بك في إعداد chat_integration_matrix_homeserver. تأكد من تضمين البروتوكول. (على سبيل المثال https://matrix.org). لا تضيف شرطة مائلة في النهاية.

  2. الصق رمز الوصول الذي نسخته سابقًا في إعداد الموقع chat_integration_matrix_access_token

  3. قم بتمكين chat_integration_matrix_enabled

  4. انتقل إلى علامة التبويب الإضافات، ثم تكاملات الدردشة

  5. انتقل إلى علامة التبويب Matrix، ثم إنشاء قناة

  6. أدخل اسمًا للقناة (يتم عرضه فقط في واجهة المسؤول، ويمكن أن يكون أي شيء)

  7. أدخل “معرف الغرفة” للغرفة التي تريد إرسال إشعارات إليها. في عميل الويب Element، يمكنك العثور عليه بفتح غرفتك، والنقر على الاسم في الأعلى، ثم التمرير إلى الأسفل. سيبدو شيئًا مثل

    !cdGUowUAqlgLHVerqE:matrix.org
    

    ملاحظة: قد لا تتضمن معرفات غرف Matrix v12 الأحدث بادئة :server (على سبيل المثال !abcdefghijkl). كلا التنسيقين مدعومان.

  8. حفظ القناة

  9. استخدم زر اختبار على القناة التي أنشأتها للتو للتحقق من أن كل شيء يعمل بشكل صحيح. يجب أن ترى شيئًا مثل هذا:

  10. قم بإعداد بعض “القواعد” لقناتك، وفقًا لتعليمات discourse-chat-integration.

ملاحظات تقنية
  • في وقت الكتابة، لا يبدو أن هناك طريقة للحصول على “رمز وصول” لـ “بوت” بطريقة سهلة الاستخدام. تعتبر حل نافذة التصفح الخفية هي الطريقة الأكثر سهولة في الاستخدام التي تمكنت من العثور عليها

  • يرسل هذا الملحق رسائل نصية غنية باستخدام تنسيق org.matrix.custom.html، وهو جزء من مواصفات Matrix. سيعود العملاء الذين لا يدعمون الرسائل المنسقة إلى رسالة نص عادي.

  • افتراضيًا، تُرسل الرسائل كـ m.notice (التي تقوم عملاء Matrix عادةً بعرضها بهدوء أكبر). يمكنك تغيير ذلك إلى m.text عن طريق تعطيل إعداد الموقع chat_integration_matrix_use_notice.

  • لا يوجد نص في هذا التنفيذ لـ “تحديث” رموز الوصول. هذا مبني على فهم أن غالبية خوادم المنزل المستخدمة حاليًا لا تنتهي صلاحية الرموز. إذا تغير هذا في المستقبل، سيتعين إعادة النظر في ذلك.

19 إعجابًا

The test is not working for us:

422 No Reason Phrase

and the spinner will keep on turning indefinitely until full page reload. How can we triage the error?

4 إعجابات

I just tried setting up a matrix integration using the instructions above, and it all worked ok. Can you confirm that you’re running the latest version of Discourse and this plugin?

Are you using the matrix.org homeserver, or your own homeserver? The 422 error is coming from that server.

I would suggest double checking your channel identifier, and also your matrix access token in your Discourse site settings.

4 إعجابات

Thanks for the hints. I’ll try that out, before reporting back here.

4 إعجابات

I have absolutely the same issue as @almereyda has.
@david, can you update obtaing “Access Token”, please? (Riot seems to be intensively developed :+1:)
+“Doctor log

إعجابَين (2)

I’m also interested in updated instructions about getting an access token…

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

يُسمى حاليًا إعدادات الغرفة في Element (إعادة تسمية لـ Riot).

يعمل بشكل مثالي.

إعجابَين (2)

لقد قمت بتحديث هذه الصفحة لتعكس هذا التغيير.

يبدو أن رمز الوصول موجود الآن تحت “المساعدة والمعلومات” في أسفل الإعدادات.

لدي نفس مشكلة الدوران اللانهائي. :frowning:

لقد جربت مع غرف على كل من matrix.org و fedora.im.

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

لقد قمت بتشغيل الإعداد بنفسي للتو وبدا أنه يعمل بشكل جيد. بعض النظريات:

  • هل غرفك مشفرة؟ لست متأكدًا مما إذا كنا بحاجة إلى القيام بعمل إضافي لدعم الغرف المشفرة

  • ربما تنتهي صلاحية رموز الوصول بعد فترة زمنية معينة. لم يحدث هذا من قبل عندما قمت ببناء التكامل في عام 2017، ولكن هذا كان منذ وقت طويل جدًا :older_man:. سأحاول تكويني المحلي مرة أخرى في وقت لاحق من هذا الأسبوع وأرى ما إذا كان لا يزال يعمل.

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

إنها ليست كذلك.

ربما، لكنني كنت أنسخ رمز الوصول ثم أستخدمه على الفور تقريبًا ولم يساعد ذلك.

3 إعجابات

للتسجيل، تمكنت أنا و @mattdm من تتبع هذا إلى شرطة مائلة لاحقة في عنوان URL الخاص بالخادم المضيف في إعدادات Discourse. لقد أضفت ملاحظة حول هذا في التعليمات في المنشور الأصلي، وقمت أيضًا بتحديث تعليمات رمز الوصول للعمل مع أحدث واجهة مستخدم لـ element.io.

5 إعجابات

هل نجح أي شخص في الحصول على دعم للخيوط؟

عند تثبيت أحدث إصدار من المكون الإضافي للدردشة (commit ba40ede510986f74a23345082ac578e126467b97)، وتكوين غرفة اختبار Matrix (غرفة عامة غير مشفرة)، أتلقى خطأ HTTP 500 عند محاولة اختبار كما هو موضح أعلاه. نفس عرض المؤشر الدوار الذي لا ينتهي ويتطلب تحديث الصفحة.

تم التحقق من صحة رمز الوصول الخاص بحساب الروبوت بشكل مستقل عن طريق إرسال رسالة إلى الغرفة باستخدام واجهة برمجة التطبيقات (_matrix/client/r0/rooms/{room_id}/send/m.room.message) إلى خادم Matrix الخاص بنا.

تُظهر سجلات Discourse

Started POST "/admin/plugins/chat-integration/test" for 141.142.60.55 at 2022-11-16 18:16:47 +0000
Processing by DiscourseChatIntegration::ChatController#test as */*
  Parameters: {"channel_id"=>"107", "topic_id"=>"466"}
Completed 500 Internal Server Error in 62ms (ActiveRecord: 0.0ms | Allocations: 10109)
NameError (uninitialized constant FinalDestination::HTTP)
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:361:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
إعجاب واحد (1)

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

إعجابَين (2)

نشر ردود على موضوع في سلسلة Matrix.
(نفس التدفق الذي لدى Slack حاليًا)

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

أنا فضولي لمعرفة ما إذا كان هناك أي تطور في إضافة دعم الردود المتسلسلة لمصفوفة. سيقدر بعض مستخدمينا ذلك.

3 إعجابات