مكون إضافي ActivityPub

حاولت تثبيت هذه الإضافة ودائماً أحصل على هذا التحذير في /logs:

[Discourse Activity Pub] https://futarino.online/ap/actor/a3838865a250342cf09f7907b653b9d1 فشل في جدولة https://futarino.online/ap/activity/2628ea98d33a52fd2412f9d59541bb91 للتسليم: لا يوجد مستلمون

تتبع المكدس:

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:73:in `log_failure' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:31:in `can_deliver?' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:16:in `perform' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:23:in `perform' 
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:143:in `activity_pub_deliver_activity' 
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:33:in `perform_activity_pub_activity' 
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:494:in `block (2 levels) in activate!' 
/var/www/discourse/lib/plugin/instance.rb:316:in `public_send' 
/var/www/discourse/lib/plugin/instance.rb:316:in `block (2 levels) in add_to_class' 
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:502:in `block (2 levels) in activate!' 
/var/www/discourse/lib/plugin/instance.rb:316:in `public_send' 
/var/www/discourse/lib/plugin/instance.rb:316:in `block (2 levels) in add_to_class' 
/var/www/discourse/app/controllers/discourse_activity_pub/post_controller.rb:13:in `schedule' 
actionpack-7.0.7/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' 
actionpack-7.0.7/lib/abstract_controller/base.rb:215:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/rendering.rb:165:in `process_action' 
actionpack-7.0.7/lib/abstract_controller/callbacks.rb:234:in `block in process_action' 
activesupport-7.0.7/lib/active_support/callbacks.rb:118:in `block in run_callbacks' 
/var/www/discourse/app/controllers/application_controller.rb:421:in `block in with_resolved_locale' 
i18n-1.14.1/lib/i18n.rb:322:in `with_locale' 
/var/www/discourse/app/controllers/application_controller.rb:421:in `with_resolved_locale' 
activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `block in run_callbacks' 
activesupport-7.0.7/lib/active_support/callbacks.rb:138:in `run_callbacks' 
actionpack-7.0.7/lib/abstract_controller/callbacks.rb:233:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/rescue.rb:23:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action' 
activesupport-7.0.7/lib/active_support/notifications.rb:206:in `block in instrument' 
activesupport-7.0.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument' 
activesupport-7.0.7/lib/active_support/notifications.rb:206:in `instrument' 
actionpack-7.0.7/lib/action_controller/metal/instrumentation.rb:66:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/params_wrapper.rb:259:in `process_action' 
activerecord-7.0.7/lib/active_record/railties/controller_runtime.rb:27:in `process_action' 
actionpack-7.0.7/lib/abstract_controller/base.rb:151:in `process' 
actionview-7.0.7/lib/action_view/rendering.rb:39:in `process' 
rack-mini-profiler-3.1.1/lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method' 
actionpack-7.0.7/lib/action_controller/metal.rb:188:in `dispatch' 
actionpack-7.0.7/lib/action_controller/metal.rb:251:in `dispatch' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:49:in `dispatch' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:50:in `block in serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `each' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:852:in `call' 
railties-7.0.7/lib/rails/engine.rb:530:in `call' 
railties-7.0.7/lib/rails/railtie.rb:226:in `public_send' 
railties-7.0.7/lib/rails/railtie.rb:226:in `method_missing' 
actionpack-7.0.7/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>' 
actionpack-7.0.7/lib/action_dispatch/routing/mapper.rb:48:in `serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:50:in `block in serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `each' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:852:in `call' 
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:74:in `call' 
rack-2.2.8/lib/rack/tempfile_reaper.rb:15:in `call' 
rack-2.2.8/lib/rack/conditional_get.rb:40:in `call' 
rack-2.2.8/lib/rack/head.rb:12:in `call' 
actionpack-7.0.7/lib/action_dispatch/http/permissions_policy.rb:38:in `call' 
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call' 
/var/www/discourse/lib/middleware/anonymous_cache.rb:389:in `call' 
/var/www/discourse/lib/middleware/gtm_script_nonce_injector.rb:10:in `call' 
rack-2.2.8/lib/rack/session/abstract/id.rb:266:in `context' 
rack-2.2.8/lib/rack/session/abstract/id.rb:260:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/cookies.rb:704:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call' 
activesupport-7.0.7/lib/active_support/callbacks.rb:99:in `run_callbacks' 
actionpack-7.0.7/lib/action_dispatch/middleware/callbacks.rb:26:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call' 
logster-2.13.0/lib/logster/middleware/reporter.rb:40:in `call' 
railties-7.0.7/lib/rails/rack/logger.rb:40:in `call_app' 
railties-7.0.7/lib/rails/rack/logger.rb:27:in `call' 
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call' 
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/remote_ip.rb:93:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/request_id.rb:26:in `call' 
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call' 
rack-2.2.8/lib/rack/method_override.rb:24:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/executor.rb:14:in `call' 
rack-2.2.8/lib/rack/sendfile.rb:110:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/host_authorization.rb:131:in `call' 
rack-mini-profiler-3.1.1/lib/mini_profiler.rb:413:in `call' 
message_bus-4.3.8/lib/message_bus/rack/middleware.rb:60:in `call' 
/var/www/discourse/lib/middleware/request_tracker.rb:233:in `call' 
railties-7.0.7/lib/rails/engine.rb:530:in `call' 
railties-7.0.7/lib/rails/railtie.rb:226:in `public_send' 
railties-7.0.7/lib/rails/railtie.rb:226:in `method_missing' 
rack-2.2.8/lib/rack/urlmap.rb:74:in `block in call' 
rack-2.2.8/lib/rack/urlmap.rb:58:in `each' 
rack-2.2.8/lib/rack/urlmap.rb:58:in `call' 
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load' 
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>' 

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

هل هناك أي حل لهذا؟

تتلقى هذا التحذير لأن فئتك ليس لديها متابعون. تحتاج إلى متابع واحد على الأقل لحدوث تسليم.

  1. انسخ اسم المستخدم من إعدادات الفئة.
  2. ابحث عنه على ماستودون (يجب أن يظهر).
  3. قم بمتابعته باستخدام حساب ماستودون الخاص بك.

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

ملخص


كيف تبدو إعدادات فئة ActivityPub؟ هل يمكنك مشاركة لقطة شاشة لها (خاصة شارة الحالة). ربما أرسلها لي في رسالة خاصة حتى لا نسيطر على هذا الموضوع.

إعجابَين (2)

هل هناك طريقة (أو ستكون هناك) لوضع المواضيع القديمة على الفيديفيرس أيضًا؟ لدي مواضيع بها آلاف الردود وهي غير مدمجة. لست متأكدًا كيف يمكن للمرء المضي قدمًا لدمج هذه المواضيع؟

يمكن للمسؤولين الآن تشغيل نشر موضوع فردي في فئة مهيأة. هذا متاح في قائمة مفتاح الربط الخاصة بالمشاركة:

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

6 إعجابات

هل هناك طريقة للذهاب في الاتجاه المعاكس، لنقل من Mastodon إلى Discourse؟

لدينا ملاحظات إصدار آلية تم نشرها على Mastodon الخاص بنا، لذا فإن عكسها في Discourse سيكون أمرًا رائعًا.

3 إعجابات

هذا غير مدعوم حاليًا، ولكنه موجود في خارطة طريقنا ونخطط للعمل عليه خلال الأشهر 2-3 القادمة.

4 إعجابات

هل يمكن الوصول إلى خرائط الطريق هذه علنًا، كما هو الحال على GitHub؟

إعجابَين (2)

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

4 إعجابات

حسنًا، إليك ما خططنا له للإضافة خلال الـ 2-3 أشهر القادمة:

  • تحسين أداء الإضافة (بدون تغييرات تواجه المستخدم)
  • إضافة عناصر واجهة مستخدم أفضل لفئة تم تمكين ActivityPub لها في Discourse
    • هذا يعني تضمين المزيد من التفاصيل حول إحصائيات ActivityPub للفئة، بالإضافة إلى تدفق أسهل للمستخدمين الذين يرغبون في متابعة الفئة في عميل ActivityPub الخاص بهم
  • السماح لفئات Discourse بمتابعة جهات خارجية
    • سيتيح ذلك مزامنة محتوى ActivityPub إلى فئة Discourse، وهذا يشمل مزامنة Discourse-إلى-Discourse عبر ActivityPub، أي يمكن لفئة في موقع Discourse أ متابعة فئة في موقع Discourse ب (حيث تم تمكين كلا الموقعين بالإضافة وتكوينهما بشكل مناسب)
  • إصلاحات الأخطاء وتحسينات على الوظائف الحالية
    • التعامل مع مشكلات مزامنة الصور الرمزية وتعديلات المنشورات التي تم تمكين AP لها بواسطة مستخدمين آخرين (موظفين، إلخ)
    • إذا أمكن، معالجة القيود الحالية لتغييرات المؤلف والويكي
17 إعجابًا

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

8 إعجابات

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

إليك مقطع فيديو لي وأنا أقوم بالمزامنة عبر مثيلين من Discourse ومثيل Mastodon يعملان على جهاز الكمبيوتر الخاص بي

29 إعجابًا

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

فكرة أخرى مثيرة للاهتمام ستكون وضع كل منشور ActivityPub في قائمة انتظار لموافقة المسؤول والمشرف قبل نشره. سيكون هذا رائعًا إذا كان بإمكانه السماح لمجموعة بتأكيد ما إذا كان الموضوع جاهزًا للنشر المشترك. وينطبق الشيء نفسه على الردود، بدلاً من نشرها تلقائيًا من fediverse مرة أخرى في المنتدى.

شكرًا على أي حال على العمل على هذا المكون الإضافي الرائع.

7 إعجابات

بما أن هذا النداء مخصص لبرنامج ActivityPub، ربما هناك فئة هنا في Meta يمكننا الاتحاد معها Discourse - SocialHub :slight_smile:

4 إعجابات

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

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

هذا يحصل على رابط منتدى نهائي:
https://jcheminf.biomedcentral.com/a%E2%80%A6%3Cbr%3E%3Cbr%3E%3Ca%20href=

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

4 إعجابات

ألاحظ أنه اعتبارًا من الالتزام fb83e554fd، يبدو أن قيد الويكي قد تمت إزالته، وأنه في هذه المرحلة لا يزال القيد المفروض على تغيير مالك المنشور في الفئات الموحدة قائمًا.

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

أدرك عدم تطابق النموذج بين Discourse و ActivityPub الذي يخلق هذا القلق. هل سيكون من المنطقي تنفيذ إجراء مميز (مسؤول؟) “إلغاء توحيد هذا المنشور” الذي سيرسل نشاط حذف للمنشور إذا تم توحيده، ووضع علامة عليه لعدم توحيده أبدًا، ثم السماح بتغيير المالك؟

5 إعجابات

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

هذا اكتشاف جيد، شكرًا لك على الإبلاغ عن المشكلة. سننظر في الأمر.

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

هل سيتم “الملء اللاحق” هذا من جهة ActivityPub المرتبطة؟

حالة الاستخدام:
ملء فئة Discourse بإشعارات استشارية تم نشرها بالفعل على Mastodon.

3 إعجابات

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

8 إعجابات