Discourse AIツールのAPI `discourse.getUser` 関数経由でトピック数を取得する

機能の説明:

Discourse AI ツールの API discourse.getUser 関数が返すオブジェクトに、ユーザーが作成したトピックの数を提供するキーを追加します。

現在の動作:

カスタムの「ツール」を作成することにより、Discourse AI ペルソナに追加機能を提供できます。Discourse は、ツールコードで使用できるAPI を提供しています。

ユーザーアカウントに関するデータは、 discourse.getUser 関数 を介して取得できます。

この関数が返すオブジェクトには post_count というキーがあります。ユーザー統計の文脈では、「投稿」は実際には「返信」を意味します。したがって、このキーの値には、ユーザーが作成したトピックの元の投稿数は含まれません。

これら 2 つの異なるアクティビティのデータを 2 つの別々のキーで提供するのは理にかなっていますが、不可解なことに、この関数はトピック数のデータを返しません。これは主要なユーザー統計の 1 つであるにもかかわらずです。

:slightly_frowning_face: discourse.getUser 関数を介してユーザーアクティビティの完全な像を得ることはできません。他の手段でこの情報を取得することは不便または不可能です。

再現手順:

  1. 管理者権限を持つフォーラムにログインします。
  2. 管理 > プラグイン > AI > ツール ページ (/admin/plugins/discourse-ai/ai-tools) に移動します。
  3. + 新しいツール」ボタンをクリックします。
    メニューが開きます。
  4. メニューから「新規作成…」を選択します。
    新しいツールの設定ページが開きます。
  5. ページ上の以下のフィールドに任意の値を入力します。
    • 名前
    • ツール名
    • 説明
    • 概要
  6. スクリプト」フィールドに以下のコードを入力します。
    function invoke() {
      return discourse.getUser(-1);
    }
    
    ユーザー ID -1 は、どのフォーラムにも存在する可能性が高いため任意に選択されました。ご希望に応じて、discourse.getUser に別のユーザー ID またはユーザー名を渡すことができます。
  7. ページ下部の「保存」ボタンをクリックします。
  8. ページ下部の「テスト実行」ボタンをクリックします。
    AI ツールをテスト」ダイアログが開きます。
  9. ダイアログ内の「テスト実行」ボタンをクリックします。

:slightly_frowning_face: テスト結果には、ユーザーが作成したトピックの数は提供されません。

Discourse のバージョン:

f8f53ac5e8e4348ae308fcddc078766463d5e5f3

追加のコンテキスト:

この情報は、Discourse API/user-badges/{username}/summary.json エンドポイントから取得できること、および API リクエストはツール API の http.get 関数 を介して行うことができることを認識しています。しかし、私が管理するフォーラムでは hide_new_user_profiles サイト設定が有効になっており、新規ユーザーのエンドポイントは認証済みリクエストでのみアクセス可能であるため、これは現実的ではありません。したがって、API を利用するにはツールコードに API キーを保存する必要があります。私はそれをしたくありません。