外部メールアドレスリストとのグループメンバーシップの同期

これを実現する最も簡単な方法はどのようなものでしょうか?

Discourse の API を使用して毎日実行される外部スクリプトでしょうか?

それとも、すでに存在するプラグインがあるのでしょうか?

ありがとうございます。

おそらく、あなたの問題に対する最悪の解決策を説明されています。一度立ち止まって、問題の定義を明確にできますか?

リストの維持管理はどのように行われていますか?DiscourseConnect - Discourse の公式シングルサインオン (SSO) が有望な解決策ですが、他の選択肢も考えられます。

コンピュータ業界の人々の率直さが大好きです :slight_smile:

プライベートなメーリングリストと、それに対応するプライベートなDiscourseカテゴリを使って、Mirroring a read-only mailing list in Discourse を試してみようかと考えています。

では、最善の方法は何でしょうか?あるいは、少しマシな方法でも構いません。リスト上の人々がフォーラムの非公開カテゴリを好むのであれば、それは Discourse の勝利です。

外部アプリケーションでこれらのユーザーを管理していない場合は、以下のような方法を実行できます。

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

  def update_group
   g=Group.find(43) #好きなグループID
   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

それがどう実装されるかは全く別の問題です。プラグインを使うかもしれません。

カテゴリに投稿したユーザーを自動的にグループに追加するプラグインなどはどうでしょうか?

ありがとうございます。

そのカテゴリはグループのメンバーにしか表示されないため、ここで鶏と卵の問題が生じてしまいます!

私は PHP にかなり慣れているので、Mailman 2 からメールアドレスを取得するスクリプト(Python スクリプトが用意されています)を書いて、Discourse のユーザーリストと照合し、必要に応じて Discourse ユーザーを該当するグループに追加または削除するスクリプトを作成できると思います。あなたが「おそらく最悪の解決策」とおっしゃっていたことは承知しています…

まだメーリングリストのミラーリングをセットアップしていないので、現時点ではアイデアの段階です。

はい、でも私はデータを別の方法でリストにインポートすることを想定していました。

グループでリクエストを許可し、Discourse がそれを処理するように設定することもできます。

私はPHPが嫌いなので、あなたの案はますます悪く聞こえてきます!:joy:

でも、DiscourseのAPIは比較的簡単に理解できるので、あなたにとってはそれが正しい解決策のように思えます!

Mailmanにフック機能があれば、購読者リストが更新された際にAPIを呼び出すように設定できるかもしれません。

「~のリストをミラーリングする」のような名前のカテゴリ設定も、役立つかもしれません。