Chat API: הפרמטר page_size מתעלם כאשר direction=past

סיכום מבוסס בינה מלאכותית

Nima1 reported a bug with the Discourse Chat plugin’s API, where the page_size parameter is ignored when querying past chat messages in channels with threading enabled. The issue occurs when using the endpoint /chat/api/channels/{channel_id}/threads/{thread_id}/messages with the direction=past parameter, causing the API to return the maximum number of messages (50) instead of the requested page_size. sam initially thought the behavior might be deliberate, but loic was unable to replicate the issue initially. Nima1 clarified that the problem only occurs in channels with threading enabled. loic later found and fixed the bug, including the fix in a pull request (#33380).

אני מדווח על באג ב-API של תוסף Discourse Chat. בעת שאילתה לגבי הודעות צ’אט קודמות, הפרמטר page_size מתעלם, והקצה תמיד מחזיר את המספר המרבי של הודעות.

שלבים לשחזור:

  1. בצע קריאת API לקצה הודעות הצ’אט (לדוגמה, /chat/{channel_id}/messages.json).

  2. השתמש בפרמטרים הבאים בבקשה:

    • target_message_id: [מזהה של הודעה אחרונה]

    • direction: past

    • page_size: 5 (או כל מספר קטן מ-50)

התנהגות צפויה: ה-API אמור להחזיר אובייקט JSON המכיל לכל היותר 5 הודעות שנשלחו לפני target_message_id שצוין.

התנהגות בפועל: ה-API מחזיר 50 הודעות, תוך התעלמות מהפרמטר page_size=5. נראה שהוא מקודד קשיח לגודל הדף המרבי בתרחיש זה.

תודה על הבדיקה!

2 לייקים

Reading through the implementation this appears somewhat deliberate:

Perhaps @loic has some thoughts here.

2 לייקים

ניסיתי לשחזר את זה במשך זמן מה, אך לא הצלחתי לעשות זאת.

בדקתי את Chat::MessagesQuery, Chat::ListChannelMessages ואת פעולת הבקר דרך המפרטים שלנו וגם באופן ידני על מופע מקומי. הפרמטר page_size נלקח בחשבון כמצופה, כמו גם הפרמטר direction.

@Nima1 האם אתה בטוח שאתה משתמש בנקודת הקצה הנכונה? היא צריכה להכיל api בתוכה, כך: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.

דבר נוסף שלא בדקתי הוא אם ההתנהגות שונה ב-stable. האם המופע שלך מעודכן עם הענף tests-passed?

2 לייקים

תודה על הבדיקה.

מתנצל, שכחתי לציין פרט חשוב: הבעיה הזו מתרחשת רק בערוצים שבהם השרשורים מופעלים. זו כנראה הסיבה שלא הצלחת לשחזר אותה.

הפרמטר page_size מתעלם כאשר אני מאחזר הודעות משרשור ספציפי. לדוגמה, כאשר אני משתמש בנקודת הקצה הזו עם page_size=5:

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

ה-API מחזיר את 50 ההודעות ברירת המחדל במקום 5 המבוקשות, למרות שיש שפע של הודעות זמינות בשרשור. נראה שהבעיה ספציפית לנקודת הקצה של ה-API של השרשורים.

2 לייקים

Found the bug! I was already refactoring that service a bit, so I included the fix in it:

https://github.com/discourse/discourse/pull/33380

4 לייקים

נושא זה נסגר אוטומטית 3 ימים לאחר התגובה האחרונה. לא ניתן להוסיף תגובות חדשות.