مزامنة عضوية المجموعة مع قائمة خارجية لعناوين البريد الإلكتروني

ما هو أسهل طريقة للقيام بذلك؟

هل هو سكريبت خارجي يعمل كل ليلة ويستخدم واجهة برمجة تطبيقات Discourse؟

أم أن هناك إضافة موجودة مسبقًا؟

شكرًا لك.

أنت تصف ما يُعد على الأرجح أسوأ حل لمشكلتك. هل يمكنك التراجع خطوة وتحديد المشكلة؟

ما الذي يحافظ على القائمة؟ يُعد DiscourseConnect - نظام تسجيل الدخول الموحد الرسمي لـ Discourse (sso) حلاً مرجحًا، رغم أنه قد توجد حلول أخرى.

أحب صراحة الأشخاص في مجال الحوسبة :slight_smile:

كنت أفكر في تجربة Mirroring a read-only mailing list in Discourse مع قائمة بريدية خاصة، وبالتالي فئة خاصة على منصة Discourse.

فما هو أفضل طريقة؟ أو حتى طريقة أفضل قليلاً؟ إذا كان الأشخاص في القائمة يفضلون الفئة الخاصة في المنتدى، فإن ذلك يُعد انتصارًا لـ Discourse.

إذا لم تكن هذه المستخدمين مُدارين في تطبيق خارجي، فيمكنك فعل شيء من هذا القبيل:

  def load_csv(path)
    CSV.parse(File.read(path), headers: true)
  end

  def update_group
   g=Group.find(43) # أي معرف مجموعة تريده
   GroupUser.where(group_id: g.id).destroy_all
   user_emails=load_csv('/path/to/file')
    user_emails.each do |u|
      user = User.find_by_email(u['Email'])
      next unless user
      puts "found user #{uid}"
      GroupUser.find_or_create_by(group_id: g.id, user_id: user.id)
    end
  end

لكن كيف يتم ذلك بالكامل هو مسألة أخرى. ربما إضافة (plugin).

ربما إضافة تقوم تلقائيًا بإضافة مستخدم إلى المجموعة إذا نشر في الفئة؟

شكرًا لك على هذا.

سيكون التصنيف مرئيًا فقط لأعضاء المجموعة، لذا سيكون لدينا هنا معضلة الدجاجة والبيضة!

أنا معتاد إلى حد كبير على PHP، لذا أعتقد أنني أستطيع كتابة سكريبت يأخذ عناوين البريد الإلكتروني من Mailman 2 (لديه سكريبت Python لذلك) ويقارنها بقائمة مستخدمين Discourse، مع إضافة أو إزالة مستخدمين Discourse من المجموعة ذات الصلة حسب الحاجة. أعلم أنك قلت إن هذا هو “ربما أسوأ حل”…

لم أقم بعد بإعداد مرآة القائمة البريدية، لذا هذه مجرد أفكار حتى الآن.

نعم، لكنني كنت أفكر في أنك ستقوم باستيراد البيانات إلى القائمة بطريقة أخرى.

يمكنك أيضًا السماح للمجموعة بطلبات الطلبات والسماح لـ Discourse بالتعامل مع ذلك.

أنا أكره PHP، لذا يبدو أن حلّك أسوأ! :joy:

لكن واجهة برمجة تطبيقات Discourse سهلة الفهم نسبيًا، لذا أعتقد أن حلّك يبدو الخيار الأنسب لك!

إذا كانت Mailman تدعم الخطافات (hooks)، فيمكنك جعلها تُجري مكالمات API عند تحديث قائمة المشتركين.

يوجد إعداد لفئة يُسمى شيئًا مثل «… يعكس قائمة» قد يكون مفيدًا أيضًا.