إعداد إشعارات Slack باستخدام إضافة discourse-chat-integration

للأسف، لا يمكن تحقيق أي من هذين الأمرين في الوقت الحالي.

إعجابَين (2)

مرحبًا، أنا أقوم حاليًا بإعداد هذا، ولست متأكدًا مما إذا كانت الواجهة قد تغيرت أم لا، ولكن هل هذه النطاقات مُعدّة تحت نطاقات رمز البوت أم تحت نطاقات رمز المستخدم؟

شكرًا لك.

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

من الممكن تحقيق هذين الأمرين باستخدام تكامل Zapier. أعلم أن هذا ليس الحل الأمثل، لكن بما أنني كنت أبحث عنه كحل بديل لهذا الملحق، فقد أردت مشاركته.

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

مرحباً بك!

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

“جاري تحميل الملخص…”

يتم استضافة Discourse الخاصة بي في نطاق فرعي “discourse.group”. هذا ما حصلت عليه من سجلات الأخطاء:

/var/www/discourse/plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_command_controller.rb:86:in `block in process_post_request’

/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:252:in `with_connection’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:61:in `with_connection’

/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work’

/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread’

هل تعرف كيفية إصلاح هذا؟

موقع الخطأ يشير إلى أن بيانات اعتماد Slack المدخلة في صفحة إعدادات موقعك غير صحيحة. للعثور على إعدادات تكامل الدردشة، انتقل إلى صفحة الإدارة/الإعدادات وقم بالتمرير إلى أسفل القائمة الجانبية اليسرى. ستجد زر “تكاملات الدردشة” في أسفل القائمة.

في صفحة الإعدادات تلك، تأكد من صحة الإعدادات التالية:

  • chat integration discourse username
  • chat integration slack access token
  • chat integration slack incoming webhook token

أخبرنا إذا لم يحل ذلك المشكلة. بما أن موقعك مستضاف لدينا، يمكننا التحقق من سبب المشكلة.

إعجابَين (2)

حل للأخطاء:

1) DiscourseChat::ProviderError

2) {\"ok\":false,\"error\":\"not_in_channel\"}

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

من مساحة عملي في Slack، تمكنت من التأكد من عمل التطبيق عن طريق مراسلة البوت عبر الرسائل المباشرة @discourse وتشغيل الأوامر /discourse. لكن من إعدادات مكون Discourse الإضافي، كنت أتلقى أخطاء ولم أتمكن من تعيين قناة أو إرسال رسالة تجريبية.

كيفية التنفيذ

تعديل: هناك معلومات محدثة في الردود أدناه. لقد حاولت دمج الخطوات الإضافية هنا اعتبارًا من 6/4/20. يرجى التعليق أو تعديلها حسب الحاجة. - dp

  1. أذونات البوت: يجب إضافة إذن chat:write.customize لكي يعمل أمر السلاش /discourse للنشر. لقد أضفت أيضًا chat:write.
  2. ستحتاج إلى إنشاء القناة في Slack. ثم إما تشغيل أوامر /discourse من القناة أو إعداد قاعدة في Discourse.
  3. يجب إضافة البوت يدويًا إلى القناة المطلوبة (على الأقل لنشر نسخة نصية)! يمكنك فعل ذلك في المحادثة الخاصة مع البوت في Slack: "إعدادات المحادثة" > "إضافة هذا التطبيق إلى قناة".
  4. ثم، والأهم من ذلك، يجب إضافة مستخدم بوت Discourse إلى القناة. لم أستطع تحقيق ذلك من خلال أزرار “إضافة مستخدم” أو “إضافة تطبيق” العادية في القناة. لكنني نجحت عن طريق إرسال رسالة إلى “@discourse” داخل القناة → ثم طُلب مني Slack برسالة تقول “@discourse ليس في هذه القناة، هل تريد إضافته؟”
  5. بعد ذلك، تمكنت من تشغيل رسالة تجريبية بنجاح من إعدادات المكونات الإضافية :rocket:

ملاحظة: في إعداد تطبيق Slack، قمت بتعيين اسم التطبيق إلى @discourse

5 إعجابات

شكرًا لك @thedavidprice و @simon على دعمكم الرائع!

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

شيء آخر لاحظته هو أن نطاق الإذن chat:write:bot لم يعد متاحًا، يجب عليك اختيار chat:write!

4 إعجابات

مرحبًا @Vincenzo_Lomonaco، للتأكيد، هل تقصد أن الإضافة (Plugin) نفسها ستقوم الآن بإضافة البوت إلى القناة (على سبيل المثال، عند إنشاء قاعدة)؟

في الواقع، يبدو أن الكثير قد تغير من جانب إعداد Slack. يمكنني تأكيد أنني أضفت صلاحية chat:write. كما أضفت أيضًا chat:write.customize.

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

أخيرًا، كان لدي بعض الارتباك حول ما إذا كنت بحاجة إلى إضافة “معلومات العرض” في صفحة إعدادات التطبيق على Slack. قمت بذلك، ويبدو أن هذه المعلومات تُستخدم داخل دليل تطبيقات Slack وفي قسم “التطبيقات الحديثة” في العمود الأيسر من Slack. يبدو أن رابط الصورة الذي أدخلته داخل Discourse لرسائل البوت لا يعمل. بينما يعمل اسم البوت بشكل صحيح.

شكرًا مجددًا! بشكل عام، أنا سعيد جدًا بكيفية سير الأمور.

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

مرحبًا @thedavidprice،

لا، تحتاج إلى إضافة البوت يدويًا إلى القناة المطلوبة (على الأقل لنشر المحادثة)! يمكنك القيام بذلك في المحادثة الخاصة مع البوت في سلاك: "إعدادات المحادثة" > "إضافة هذا التطبيق إلى قناة".

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

شكرًا لك على القيام بذلك. قمت بتحديث الدليل بناءً على منشورك واختباراتي الخاصة. يمكنني تأكيد أنه يجب إضافة إذن chat:write.customize إلى إعداد نطاقات رمز البوت (Bot Token Scopes) لكي يعمل أمر السلاش /discourse post.

ظننت أن نطاق channels:join قد يكون كافيًا للسماح للبوت بالانضمام تلقائيًا إلى قناة، ولكن بناءً على اختباراتي، لا يعمل هذا. أعتقد أن أسهل طريقة لإضافة البوت إلى قناة موضحة الآن في الخطوة 15 من الدليل. إذا كانت هناك طريقة أفضل للقيام بذلك، فالرجاء إخباري.

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

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

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

chat:write # ؟ غير واضح، لكن chat:write:bot مقبول
chat:write.customize ؟ غير واضح، لكن chat:write:bot مقبول
users:read X مرفوض
channels:history X مرفوض
groups:history # مقبول، مقبول بحذر
im:history # مقبول، مقبول

إذا تم إعداد التطبيق فقط بالنطاقات التالية، فما الذي سيعمل وما الذي سيتعطل؟

chat:write:bot
groups:history
im:history

على سبيل المثال، لا بأس بي بالتخلي عن المحادثات المسجلة…

3 إعجابات

مرر وقت طويل منذ أن قمت بتنفيذ هذا لأول مرة، ويبدو أن نطاقات Slack قد تغيرت كثيرًا منذ ذلك الحين. أرى أن الناس يحافظون على تحديث ويكي المنشأ الأصلي، وهذا رائع! :heart_eyes:

أعتقد أن chat:write:bot و chat:write:user تم إيقافهما لصالح chat:write.

يبدو أن chat:write.customize مطلوب لأننا نخصص اسم المؤلف وأيقونة المؤلف للرسالة لتطابق مستخدم Discourse.

تُستخدم نطاقات users:read و *:history فقط لنشر النصوص المنقولة. أدرك أن هذا قد يبدو كثيرًا! ولكن في الأساس، يحتاج Discourse إلى الوصول إلى سجل محادثاتك لبناء النص المنقول. إذا فضلت عدم منح هذه الأذونات، فلا بأس بتخطيها تمامًا والاستمرار دون نشر النصوص المنقولة.

3 إعجابات

عند استخدام أوامر الشرطة المائلة، أواجه هذه الرسالة: /hub فشلت مع رسالة الخطأ "dispatch_failed"

(نستخدم /hub بدلاً من /discourse)

تمكّنت من إضافة التطبيق إلى القناة. كما تمكّنت من إرسال منشور تجريبي من Discourse إلى Slack الخاص بنا، لكنني لم أستطع فهم كيفية عمل أوامر /. أود الحصول على مساعدة في استكشاف المشكلة وحلها!

هل يمكنك التحقق من الأذونات التي أضفتها للتطبيق على Slack؟ آخر مرة حاولت فيها إعداد هذا، كانت جميع الأذونات من الخطوتين 5 و6 من الدليل مطلوبة لإضافتها إلى نطاقات التطبيقات:

  • chat:write
  • chat:write.customize
  • users:read
  • channels:history
  • groups:history
  • im:history

أخبرنا إذا لم يحل ذلك المشكلة.

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

أعتقد أن لدي الأذونات الصحيحة. إليك لقطة شاشة للإعدادات التي أملكها تحت نطاقات رمز البوت.

ما رأيك؟ للأسف، هذا يعني أن هناك شيئًا آخر يحدث.

إعجابَين (2)

لقد راجعت دليل الإعداد مرة أخرى وأنشأت أمرًا قصيرًا /hub. يعمل استدعاء /hub post بالنسبة لي في أي قنوات أضفت التطبيق إليها. أنا أستخدم نفس الأذونات الموجودة في لقطة الشاشة التي نشرتها.

هل يمكنك التأكد من إتمامك الخطوة 8 من الدليل؟ تخبرك تلك القسم بما يلي:

انتقل إلى صفحة التفاعلات والاختصارات، فعّل قسم التفاعلات عن طريق تحويله إلى تشغيل وأدخل عنوان URL هذا تحت عنوان “عنوان URL المطلوب”:

<your-discourse-url>/chat-integration/slack/interactive

قد يكون من الجيد أيضًا التأكد من قدرتك على النشر من منصة Discourse إلى قناة Slack التي تحاول تشغيل أمر /hub post عليها.

أخبرنا إذا لم تتمكن بعد من جعل هذا يعمل.

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

لقد تحققت وأعتقد نعم، لقد اتبعت تلك الخطوة.

إليك لقطة شاشة.

أعتقد أن الخطأ يحدث في شيء متعلق بالخطوة 7، على الرغم من ذلك.

إليك إعداداتي.

هذا ما يظهر عندما أحاول استخدام أمر السلاش في Slack:

نعم، هذا الجزء يعمل بشكل مثالي.

لا، لا يعمل. :slightly_smiling_face:

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

عنوان “URL” المطلوب في قسم “تحرير الأمر” من لقطة الشاشة الخاصة بك لا يستخدم HTTPS. ربما تكون هذه هي المشكلة.

إعجابَين (2)

نجح الأمر، شكرًا لك!!!

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

لقد اتبعت التعليمات الواردة في هذا الدليل، وأصبحت تكامل Discourse/Slack الخاص بي يعمل (إلى حد كبير). عمل رائع مع هذا الملحق! لدي ثلاث أسئلة/ملاحظات.

لا يمكن الاشتراك في الرسائل في فئة فرعية عن طريق الاشتراك في الفئة الأصلية

قد يكون هذا مقصودًا بالتصميم، لكنه لم يكن واضحًا في البداية. لدي فئات أصلية تحتوي على فئات فرعية تحتها. توقعت أنه إذا أنشأت قاعدة تصفّر “جميع المنشورات والردود” إلى الفئة الأصلية، فستشمل ضمناً كل فئة فرعية أيضًا. لكن يبدو أن هذا لم يعمل، واضطررت إلى إنشاء قواعد لكل فئة فرعية (الكثير منها). سيكون هذا طلب تحسين رائع لتبسيط الإعداد لتثبيت Discourse يحتوي على العديد من الفئات الفرعية تحت عدد قليل من الفئات الأصلية.

لا يمكن الاشتراك في جميع الفئات بقاعدة واحدة

وجدت بعض المعلومات المتضاربة حول هذا الأمر، وأفترض أن ملحق Slack الأقدم سمح بذلك، لكنني لم أجد طريقة لإنشاء قاعدة واحدة تقوم بالاشتراك ببساطة في جميع المنشورات والردود من جميع الفئات في الموقع. كنت آمل في القيام بذلك كلّه في قاعدة واحدة بسيطة. لكن بسبب هذا والنقطة أعلاه، استغرق الأمر 31 قاعدة منفصلة بدلاً من قاعدة واحدة فقط لإنشاء جسر أساسي بين منصة Discourse بأكملها وقناة Slack. ما لم أكن قد أغفلت شيئًا، يرجى اعتبار هذا طلب تحسين أيضًا.

أمر منشور Discourse يعمل فقط في قناة واحدة

الآن، هذا على الأرجح خطئي، لكنني لم أستطع فهمه. لقد مررت عبر جميع المواضيع في هذا الشأن، وأود الحصول على بعض المساعدة. لقد تحققت مرتين من أذونات تطبيق Slack الخاص بي، وأستطيع تأكيد أنه يعمل تمامًا 100%… في قناة واحدة فقط!

/discourse post 20

لذا أعرف أن رمز الوصول مُعد ويعمل بشكل جيد. ومع ذلك، في جميع القنوات الأخرى في فريق Slack الخاص بي، يُخرج الأمر أعلاه ببساطة:

Loading the transcript...

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

./launcher logs app

ولكن لا يبدو أن هناك أي شيء هناك على الإطلاق. ما الإعداد الذي قد أغفلته والذي يسمح بالعمل فقط في قناة واحدة، وأين يمكنني البحث عن تصحيح هذا؟