Chat API: direction=past の場合 page_size パラメータが無視される

Discourse Chat プラグインの API に関するバグを報告します。過去のチャットメッセージをクエリする際に、page_size パラメータが無視され、エンドポイントは常に最大数のメッセージを返します。

再現手順:

  1. チャットメッセージエンドポイント(例: /chat/{channel_id}/messages.json)に API 呼び出しを行います。

  2. リクエストで以下のパラメータを使用します。

    • target_message_id: [最近のメッセージの ID]

    • direction: past

    • page_size: 5(または 50 未満の任意の数値)

期待される動作: API は、指定された target_message_id より前に送信された最大 5 件のメッセージを含む JSON オブジェクトを返すはずです。

実際の動作: API は page_size=5 パラメータを無視して 50 件のメッセージを返します。このシナリオでは、最大ページサイズにハードコードされているようです。

ご確認ありがとうございます!

「いいね!」 2

実装を読み進めると、これはある程度意図的なように思われます。

おそらく @loic さん、何か考えはありますか。

「いいね!」 2

複製しようとしましたが、できませんでした。

Chat::MessagesQueryChat::ListChannelMessages、およびコントローラーのアクションを、仕様とローカルインスタンスでの手動チェックの両方で確認しました。page_size パラメータは、direction パラメータと同様に、期待どおりに考慮されています。

@Nima1 正しいエンドポイントを使用していますか? /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5 のように、api が含まれている必要があります。

また、stable で動作が異なるかどうかは確認していません。あなたのインスタンスは tests-passed ブランチで最新の状態ですか?

「いいね!」 2

ご確認いただきありがとうございます。

申し訳ありません、重要な詳細を伝え忘れていました。この問題は、スレッドが有効になっているチャンネルでのみ発生します。そのため、再現できなかったのだと思われます。

特定の Сhannel からメッセージを取得する際、page_size パラメータは無視されます。例えば、このエンドポイントを page_size=5 で使用した場合:

/chat/api/channels/64/threads/1526/messages?target_message_id=19205&page_size=5

API は、スレッドに十分なメッセージが存在する場合でも、要求された 5 件ではなくデフォルトの 50 件を返します。問題はスレッド API エンドポイントに限定されているようです。

「いいね!」 2

バグを見つけました!すでにそのサービスを少しリファクタリングしていたので、修正を含めました。

「いいね!」 4

このトピックは、最後の返信から3日後に自動的に閉じられました。返信はもう許可されていません。