Discourse 動的グループ

:information_source: 概要 グループメンバーシップの自動管理
:hammer_and_wrench: リポジトリリンク https://github.com/communiteq/discourse-dynamic-groups
:open_book: インストールガイド Discourseにプラグインをインストールする方法

:warning: このプラグインはベータ版と見なされるべきです :warning:

機能

Discourseコミュニティでは、バッジの所有権や既存のグループメンバーシップなどの条件に基づいて、グループメンバーシップを自動化する必要があることがよくあります。

一般的なユースケースは次のとおりです。

  • 「サブスクライバー」グループに属していないユーザー

  • Marketplace での投稿を禁止されていないユーザー

  • TL0またはTL1のユーザー(TL2ではない)

  • 新規ユーザーチュートリアルを完了したユーザー、または1年以上メンバーであるユーザー

  • client_1、client_2、またはclient_3に属しており、インターンではないユーザー

以前は、これを解決するには、定期的にグループを同期するカスタムスクリプトが必要でした。Dynamic Groupsプラグインは、その必要性をなくします。

このプラグインは、グループ設定にブール式フィールドを導入し、管理者がグループメンバーシップを動的に決定するルールを定義できるようにします。

例:

  • 「サブスクライバー」グループに属していないユーザー
    trust_level_0 AND NOT subscribers

  • Marketplace での投稿を禁止されていないユーザー
    trust_level_2 AND NOT banned_users

  • TL0またはTL1にいるが、TL2にいないユーザー
    trust_level_0 AND NOT trust_level_2

  • 新規ユーザーチュートリアルを完了したユーザー、または1年以上メンバーであるユーザー
    badge:certified OR badge:anniversary

  • client 1、2、または3に属しており、インターンではないユーザー
    (client_1 OR client_2 OR client_3) AND NOT interns

設定

プラグインがインストールされ、有効になると、グループ管理インターフェイスに新しいタブが表示されます。

ブール式を入力または更新すると、システムは一致するユーザーでグループを生成するのに数分かかります。それ以降、ユーザーの状態が変化すると、グループメンバーシップは自動的に更新されます。

重要:
ルールが定義されると、グループは自動としてマークされ、手動メンバーの変更が無効になります。グループを手動管理に戻すには、式フィールドをクリアするだけです。既存のメンバーはそのまま残り、手動制御を取り戻すことができます。

「いいね!」 24

素晴らしい!リチャード、素晴らしい仕事ぶりです!

これにより、Discourse のグループ管理における大きなギャップが埋まります。完全に満足しており、本格的に使用するのが楽しみです。

主に機能的なサブグループを有効にするために使用します。

「いいね!」 3

Discourse の機能に間違いなく歓迎すべき追加機能です!

「いいね!」 1

既存のトピックに7つの投稿が統合されました: User first logged inトリガーを使用したときにマルチセレクトフィールドの最初のエントリのみが機能する

こんにちは、この非常に便利なプラグインを開発していただきありがとうございます!

現在、Discourse Dynamic Groupsを使用して、匿名ユーザー以外のすべてのユーザーを特別なグループに自動的に追加しています。私のブール式は次のとおりです。

NOT anonymous_users
期待される動作:
新しいユーザーが登録した場合(anonymous_usersグループに属していない場合)、手動で介入しなくても、このグループに自動的に追加されるはずです。

実際の動作:
新しく登録されたユーザーは、すぐにはグループに追加されません。グループ設定でブール式を手動で再保存した後でのみ追加されます。
つまり、手動で同期をトリガーしない限り、ユーザーが参加してもグループは自動的に更新されません。

「いいね!」 1

なるほど… ご指摘ありがとうございます。これは想定されるべき動作であることに同意します。

技術的な観点からすると、プラグインは次の2つの異なる条件でのみグループのメンバーシップを再評価します。

  1. グループ設定のブール式が保存された場合
  2. ブール式で言及されているグループにユーザーが追加または削除された場合。

新規ユーザーが登録された場合、どちらにも該当しません。

式を trust_level_0 AND NOT anonymous_users に変更して、問題が解決するかどうかを報告してもらえますか?

「いいね!」 3

こんにちは、

trust_level_0 AND NOT anonymous_users

を使用しようとすると、次のエラーが発生します。
Unknown keyword, group or badge: 'anonymous_users'

グループ名を実際のグループに変更すると、例えば:

trust_level_0 AND NOT interns

それでも次のエラーが発生します。
Unknown keyword, group or badge: 'interns'

グループの一意の名前をグループの管理ページから直接コピーしているので、タイプミスはありません。念のため確認しました。
他に何か見落としていることや、カスタムグループが式で認識されるようにするために他に設定する必要があることはありますか?

「いいね!」 4

ご報告ありがとうございます。

再現を試みているうちに、2つのバグを特定し、そのうちの1つがお客様に影響を与えた可能性があります。
プラグインを最新バージョン59640f1にアップデートして、問題が解決するかどうか確認してください。

プラグインはまだグループの名前変更にうまく対応できていません。グループの名前を変更する場合は、それに依存するすべてのグループからルールを保存する必要があります(ブール式の後にスペースを入力し、削除して[保存]ボタンを有効にします)。これについては、今後のバージョンで対応します。

「いいね!」 3

これは、あなたのCategory restrictorプラグインを使用していますか、それともそれとは独立して機能しますか?

ギャップを埋める素晴らしいプラグインです。

独立して機能します。

「いいね!」 1

こんにちは。

Dynamic Groups プラグインを使用しており、基準を以下のように設定しました。

trust_level_0 AND NOT anon_group

しかし、anon_group に属していない trust_level_1 のユーザーもこのダイナミックグループに追加されていることに気づきました。

これは予期された動作なのか、それともバグなのかご確認いただけますでしょうか。

信頼レベル1のユーザーは信頼レベル0グループのメンバーでもあります。したがって、この動作は予期されたものです。TL0ユーザーのみを取得するには、信頼レベル1グループを除外できます。最初の投稿の例と同様に

「いいね!」 2

明確化ありがとうございます