訊息訊息功能取得聊天室訊息

取得聊天室訊息

概述

取得指定聊天室的訊息歷史記錄,支援時間範圍篩選和分頁查詢。此 API 與訊息列表使用相同端點 GET /rooms/{id}/messages/v3,本頁聚焦於常見的查詢情境與範例。


API 端點

取得聊天室所有訊息

獲取指定聊天室中的訊息記錄,支援分頁和時間篩選。

GET /rooms/{id}/messages/v3

Headers

參數類型必填說明
IM-CLIENT-KEYstringClient Key
IM-AuthorizationstringClient Token

Path Parameters

參數類型必填說明
idstring聊天室 ID

Query Parameters

參數類型必填說明
limitnumber回傳訊息的最大數量(預設:20,建議 50-100)
beforeMessagestring查詢指定訊息 ID 之前的訊息(用於向前分頁)
afterMessagestring查詢指定訊息 ID 之後的訊息(用於向後分頁)
afterTimestring查詢指定時間之後的訊息(ISO-8601 或毫秒時間戳格式)
timeRangeFieldstring時間範圍查詢的欄位:updatedAt, createdAt, messageTime(預設:updatedAt)

範例請求

取得聊天室最新訊息

GET /rooms/demo-room/messages/v3?limit=50 HTTP/1.1
IM-CLIENT-KEY: {IM-CLIENT-KEY}
IM-Authorization: {IM-Authorization}
Host: your-app.imkit.io
Connection: close

取得歷史訊息(分頁)

GET /rooms/demo-room/messages/v3?limit=50&beforeMessage=5f890cf37d980e06f6aaf349 HTTP/1.1
IM-CLIENT-KEY: {IM-CLIENT-KEY}
IM-Authorization: {IM-Authorization}
Host: your-app.imkit.io
Connection: close

取得特定時間後的訊息

GET /rooms/demo-room/messages/v3?afterTime=2024-01-01T00:00:00Z&limit=100 HTTP/1.1
IM-CLIENT-KEY: {IM-CLIENT-KEY}
IM-Authorization: {IM-Authorization}
Host: your-app.imkit.io
Connection: close

JavaScript 範例:

const response = await axios.get(
  `https://your-app.imkit.io/rooms/demo-room/messages/v3`,
  {
    params: {
      limit: 50,
    },
    headers: {
      "IM-CLIENT-KEY": IM_CLIENT_KEY,
      "IM-Authorization": TOKEN,
    },
  }
);

cURL 範例:

curl -X "GET" "https://your-app.imkit.io/rooms/demo-room/messages/v3?limit=50" \
     -H 'IM-CLIENT-KEY: {IM-CLIENT-KEY}' \
     -H 'IM-Authorization: {IM-Authorization}'

Response

成功回應(200 OK)

參數類型說明
RCnumber回應代碼(0 表示成功)
RMstring回應訊息
resultobject訊息查詢結果

查詢結果結構

參數類型說明
totalCountnumber聊天室中的訊息總數
dataarray訊息陣列(按時間順序排列)
userDeletedIDsarray當前用戶已刪除的訊息 ID 陣列
inspectobject診斷資訊(包含查詢條件和執行時間)

訊息物件結構

參數類型說明
_idstring訊息唯一識別碼
messageany訊息內容
roomstring所屬聊天室 ID
senderobject發送者資訊
messageTypestring訊息類型
messageTimeMSnumber訊息發送時間(毫秒時間戳)
updatedAtMSnumber訊息更新時間(毫秒時間戳)
createdAtMSnumber訊息建立時間(毫秒時間戳)
reactionsarray訊息反應列表
reactionCountnumber反應總數

範例回應

{
  "RC": 0,
  "RM": "OK",
  "result": {
    "totalCount": 245,
    "inspect": {
      "query": {
        "appID": "SampleApp",
        "room": "demo-room",
        "status": { "$ne": 0 }
      },
      "tookMS": 8
    },
    "data": [
      {
        "reactions": [],
        "_id": "5f890cf37d980e06f6aaf349",
        "message": "Hello everyone! Welcome to our chat room.",
        "room": "demo-room",
        "sender": {
          "_id": "user123",
          "nickname": "Alice",
          "avatarUrl": "https://example.com/avatar1.jpg",
          "id": "user123",
          "lastLoginTimeMS": 1640995200000
        },
        "messageType": "text",
        "id": "5f890cf37d980e06f6aaf349",
        "messageTimeMS": 1640995200000,
        "updatedAtMS": 1640995200001,
        "createdAtMS": 1640995200001,
        "reactionCount": 0
      }
    ],
    "userDeletedIDs": []
  }
}

錯誤回應

401 Unauthorized - 認證失敗

{
  "RC": 401,
  "RM": "Unauthorized",
  "error": {
    "code": "INVALID_TOKEN",
    "message": "Invalid or expired token"
  }
}

403 Forbidden - 權限不足

{
  "RC": 403,
  "RM": "Forbidden",
  "error": {
    "code": "NOT_ROOM_MEMBER",
    "message": "User is not a member of this room"
  }
}

404 Not Found - 聊天室不存在

{
  "RC": 404,
  "RM": "Room not found",
  "error": {
    "code": "ROOM_NOT_FOUND",
    "message": "Room with specified ID does not exist"
  }
}

使用場景

聊天室載入

  • 初始載入:用戶進入聊天室時載入最新訊息
  • 歷史瀏覽:用戶向上滑動查看更早的訊息記錄
  • 重新整理:重新載入聊天室的完整對話內容

訊息同步

  • 離線同步:用戶重新上線時同步錯過的訊息
  • 跨設備同步:在多個設備間保持訊息一致性
  • 備份恢復:從備份中恢復聊天室的完整記錄

內容分析

  • 對話分析:分析聊天室中的對話模式和熱門話題
  • 活躍度統計:統計聊天室的訊息量和用戶參與度
  • 內容審核:審核聊天室中的所有對話內容

注意事項

  • 權限要求:只有聊天室成員才能獲取訊息內容
  • 分頁建議:建議使用適當的 limit 值(20-100)避免一次載入過多資料
  • 時間排序:訊息按 updatedAt 時間排序,最新訊息在前
  • 刪除處理:userDeletedIDs 陣列包含當前用戶已刪除的訊息,需在 UI 中過濾
  • 效能最佳化:大型聊天室建議使用時間範圍限制以提升查詢效能
  • 即時更新:此 API 適用於批量載入,即時訊息建議使用 WebSocket 連線
© 2026 FUNTEK Software Inc. All rights reserved.