جسر دردشة Discourse (تلجرام)

:information_source: ملخص ربط محادثة Discourse بمنصة Telegram
:hammer_and_wrench: رابط المستودع https://github.com/Lhcfl/discourse-chat-bridge
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

أعمل على ربط Discourse بمنصات أخرى. حاليًا، يدعم Telegram فقط، ولكن أخطط لدعم Matrix، وربما Discord أو QQ في المستقبل، اعتمادًا على طاقتي والدعم الذي أتلقاه.

تدعم هذه الإضافة فقط أحدث فرع test-passed من Discourse. لماذا؟ لأن Discourse Chat يغيرون أكوادهم بشكل متكرر، ويجب عليّ المزامنة معهم.

لذلك، إذا كانت الإضافة متاحة على موقعك وكانت الإضافة مهمة لك، يرجى تقليل وتيرة تحديث Discourse، لأنني قد لا أملك الوقت لمزامنة إصدار الكود المصدري مع Discourse.

جسر Telegram

ملاحظات هامة

تستخدم هذه الإضافة أسماء المستخدمين مع لاحقات .tgid و .tg لمزامنة معلومات المستخدم (Telegram → Discourse)

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

قائمة الميزات

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

تدعم هذه الإضافة مزامنة المحتوى التالي:

  • نص عادي (بالتأكيد!)
  • نص منسق: غامق، مائل، مشطوب، مخفي، رمز مضمن و
"كتلة رمز"
  • اقتباسات (فقط Discourse → Telegram)
    نحن لا ندعم الاقتباسات لـ Telegram → Discourse الآن لأن Telegram لم يقم بتحديث واجهة برمجة التطبيقات الخاصة به للاقتباسات بعد.

  • صور، ملصقات، ومقاطع فيديو
    بينما أكتب هذه الجملة، يبدو أن هناك شيئًا معطلاً في Discourse. مجرد نشر صورة بدون تعليق لن يؤدي إلى تشغيل حدث :chat_message_created. لذلك، من المستحيل إعادة توجيه صور Discourse إلى Telegram. قد يتم حل هذا الخطأ تلقائيًا في المستقبل، ولكن بغض النظر عن ذلك، سأقوم بإصلاحه.

  • الرد

  • تعديل الرسائل (نص فقط)

  • إعادة توجيه الرسائل (Telegram → Discourse)

  • حذف الرسائل (Discourse → Telegram)
    لن ندعم حذف الرسائل لـ Telegram → Discourse لأن واجهة برمجة تطبيقات Telegram Bot لا توفر واجهة للاستماع إلى أحداث حذف الرسائل.

  • صور رمزية للمستخدم وأسماء المستخدمين (Telegram → Discourse)

المحتوى التالي غير مطبق ومخطط لدعمه في المستقبل

  • اقتباس (Telegram → Discourse)
  • صور الألبوم (Discourse ↔ Telegram)
    تدعم حاليًا مزامنة الصورة الأولى فقط

معاينة


إعدادات

SiteSetting.chat_telegram_bridges

إنها قائمة وتحتاج إلى ملء كل عمود بهذا التنسيق:

discourse_chat_channel_id,telegram_chat_id,bot_token

على سبيل المثال

3,-123456789,123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

سيقوم بربط قناة الدردشة 3 في Discourse ↔ دردشة Telegram -123456789 باستخدام روبوت بالرمز 123456789-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

لا تقم بإضافة مسافات بعد الفواصل.

إنه بالتأكيد ليس أنيقًا، لكن ليس لدي طاقة إضافية لكتابة واجهة تكوين جميلة له. يرجى تقديم طلب سحب (PR) إذا كنت تريده.

السماح بمزامنة مقاطع الفيديو والملصقات المتحركة

الملصقات الديناميكية وملفات GIF ومقاطع الفيديو في Telegram تكون بشكل أساسي بتنسيق webp. تحتاج إلى السماح بتحميلها في SiteSettings.authorized_extensions، وإلا ستحصل فقط على [This message is not supported yet]

سجل التغييرات

  • 2023/11/07 تم إصدار 0.0.1

للمستقبل

  • ربط Matrix بـ Discourse
23 إعجابًا

هذا يبدو مذهلاً، عمل جيد! :+1:

يجب أن يكون هذا site_settings :slight_smile:

إعجابَين (2)

يا إلهي، شكرًا لك، سأقوم بتغييره على الفور

… ويجب أن يكون في client.en.yml. لقد كتبت الكود في الصباح الباكر، ويبدو أن جودة الكود سيئة بعض الشيء. :melting_face:

3 إعجابات

عمل رائع، شكراً على إنشائه!

4 إعجابات

لقد اختبرته قليلاً، وهو يعمل بشكل جيد! :+1:

إعجابَين (2)

مرحباً!
شكراً لك على هذه الإضافة الرائعة :raised_hands: هذا ما كنت أفكر فيه خلال الشهرين الماضيين :confetti_ball:. يبدو أنك قد التقطت أفكاري :sweat_smile:
أريد أن أوضح. هل ستعمل الإضافة في وضع الدردشة فقط أم يمكن ربطها بموضوع معين؟

هل يمكنك التوضيح أكثر تحديدًا؟

إعجابَين (2)

مرحباً! آسف إذا لم أعبر عن أفكاري بما فيه الكفاية :pray:. أنا أستخدم مترجم جوجل ولا يمكنني التأكد من أنني أفهم المنشورات في هذا المنتدى بشكل صحيح. وأنا لا أعرف البرمجة، لذلك لا أفهم دائمًا رسائل المبرمجين. دعني أريك سؤالي في شكل رسم بياني:

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

إعجابَين (2)

لست متأكدًا تمامًا مما إذا كنت قد فهمت سؤالك بشكل صحيح، لكنني سأحاول شرح ما أتخيله خطوة بخطوة. في الفترة من 2021 إلى 2022، حاولت إنشاء منتدى يعتمد على Discourse. ومع ذلك، على الرغم من أهمية المنتدى، فشل المشروع لأن غالبية السكان في منطقتنا (آسيا الوسطى) يفضلون استخدام برامج المراسلة الفورية مثل Telegram و WhatsApp بدلاً من التسجيل واستخدام ميزات جديدة على مواقع الويب.

مع ظهور الذكاء الاصطناعي، لاحظت تغييرات في قواعد اللعبة. ظهرت خدمات متنوعة، بما في ذلك مواقع وتطبيقات مصممة لاستخدام الذكاء الاصطناعي. لا تستطيع برامج المراسلة الفورية توفير وظائف كاملة للعمل مع الذكاء الاصطناعي، على الرغم من أن Telegram أكثر تقدمًا من WhatsApp. عند التعرف على المكونات الإضافية الجديدة في Discourse، مثل Discourse AI و Chatbot، أدركت أن هذه فرصة جديدة لموقعي.

أريد الاستفادة الكاملة من القدرة على إنشاء منشورات (مواضيع) ذات طابع خاص. مؤخرًا، طرحت سؤالًا هنا - في Meta حول المكون الإضافي Chatbot، متسائلاً عما إذا كانت دردشة GPT يمكنها تذكر المنشور الأول وعدم نسيان محتوى الموضوع الرئيسي بعد رسائل متعددة في سلسلة المحادثات. بعد ذلك، أجاب @merefield بأن روبوت الدردشة سيتذكر دائمًا المنشور الأول. أصبح هذا المعيار الرئيسي لتطبيق هذا المكون الإضافي على موقعي.

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

ومع ذلك، بالنظر إلى شعبية برامج المراسلة الفورية في منطقتنا وعادة الناس في استخدام الدردشات، أفكر في كيفية تزويد المستخدمين بتجربة منتدى Discourse دون التخلي عن برامج المراسلة المألوفة لديهم. بعد تثبيت المكون الإضافي Discourse Chat Bridge، وجدت أنه يربط دردشة Discourse بدردشة Telegram ولكنه لا ينشئ جسرًا بين منشور منشور على المنتدى ودردشة Telegram.

تشمل خططي:

  1. يقوم مستخدم (ربما موظف الموقع) بإرسال رسالة خاصة (PM) إلى روبوت الذكاء الاصطناعي على المنتدى مع تعليمات حول كيفية استجابة الروبوت للرسائل اللاحقة، مثل تقديم المشورة للمستخدمين الآخرين بشأن استخدام المنتدى.

  2. يربط المستخدم هذه الرسالة الخاصة بالذكاء الاصطناعي في روبوت Telegram عادي.

  3. يشارك المستخدم رابط روبوت Telegram مع المستخدمين الآخرين الذين لم يسجلوا بعد في المنتدى ولكنهم يرغبون في معرفة المزيد عنه.

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

  5. يتم نشر جميع رسائل المستخدم الموجهة إلى الذكاء الاصطناعي في موضوع خاص على المنتدى. وبالتالي، لا يرى مستخدمو Telegram رسائل من مستخدمي Telegram الآخرين، حيث يتواصل كل مستخدم بشكل منفصل مع روبوت Telegram.

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

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

حسناً… تبدو هذه ميزة شخصية للغاية ولا أعتقد أنني سأضيف هذه الميزة مجانًا، لأن طاقتي محدودة للغاية.

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

نعم، هذا صحيح، سيتم استخدام روبوت/دردشة تيليجرام كمرآة ونسخ المحتوى من المنتدى والعكس.

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

أنا مهتم جدًا بهذا وأعرض المساعدة إذا احتجت إليها.

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

حسنًا، شكرًا على العرض :raised_hands:، سأعود حالما أكون جاهزًا.

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

أثناء الاختبار، يبدو أنني اكتشفت خطأ في المكون الإضافي. بعد إرسال رسالة إلى الدردشة عبر Telegram → Discourse، لا يظهر شيء على الموقع في الدردشة (أحيانًا يظهر اسم المستخدم 1234567890.tgid فقط). لحل هذه المشكلة، يجب علي تحديث صفحة الموقع. بعد التحديث، يظهر اسم مرسل الرسالة، ولكن محتويات الرسالة نفسها لا تظهر. لحل هذه المشكلة، أقوم بإعادة ترتيب HTML ثم يظهر نص رسالة الدردشة. إليك فيديو:

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

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

لاحظت هذه المشكلة قبل أيام قليلة، لكنني لم أجد وقتًا لإصلاحها حقًا. قائمة مهامي متراكمة الآن.

تحديث حديث لـ Discourse Chat كسر هذه الإضافة. أحتاج إلى إيجاد وقت لتكييفها، أو تقديم الوظائف التي أحتاجها مباشرة إلى النواة.

أنا أنتظر ردًا. الآن، بسبب نقص هذه الميزة، أحتاج إلى تعديل مؤقت، وقد تتعطل إضافتي بسبب تثبيت في أي وقت.

إعجابَين (2)

حسناً، فهمتك. آمل أن يولي فريق التطوير اهتماماً لرسالتك :pray:

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