tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

拉取单聊历史消息

PDF
聚焦模式
字号
最后更新时间: 2025-10-23 10:35:08

功能说明

管理员按照时间范围,以会话其中一方的角度查询单聊会话的消息记录。
查询的单聊会话由请求中的 Operator_Account 和 Peer_Account 指定,以 Operator_Account 的角度查询。查询结果包含会话双方互相发送的消息,具体每条消息的发送方和接收方由每条消息里的 From_Account 和 To_Account 指定。
正常情况下,分别以会话双方的角度查询消息,结果是一样的。但以下四种情况会导致结果不一样(即会话里的某些消息,其中一方能查询到,另一方查询不到):
会话的其中一方清空了会话的消息记录,即调用了终端的 clearC2CHistoryMessage() 接口。
会话的其中一方删除了会话,即调用了终端的 deleteConversation() 接口,或者 Web / uni-app 的 deleteConversation 接口,或者服务端的 删除单个会话 的接口且指定了 ClearRamble 的值为1。
会话的其中一方删除了部分消息,即调用了终端的 deleteMessages() 接口,或者 Web / uni-app 的 deleteMessage 接口。
通过 单发单聊消息批量发单聊消息 接口发送的消息,指定了 SyncOtherMachine 值为2,即指定消息不同步到发送方的消息记录。
查询结果包含被撤回的消息,由消息里的 MsgFlagBits 字段标识。
查询结果中的 IsPeerRead 字段表示接收方是否发送该条消息的已读回执。只有接收方调用 sendMessageReadReceipts (Android / iOS & Mac / Windows)sendMessageReadReceipt (Web&) 接口后,该字段才会为1。
若想通过 REST API 撤回单聊消息 接口撤回某条消息,可先用本接口查询出该消息的 MsgKey,然后再调用撤回接口进行撤回。
可查询的消息记录的时间范围取决于漫游消息存储时长,默认是7天。支持在控制台修改消息漫游时长,延长消息漫游时长是增值服务。具体请参考 漫游消息存储
若请求时间段内的消息总大小超过应答包体大小限制(目前为13K)时,则需要续拉。您可以通过应答中的 Complete 字段查看是否已拉取请求的全部消息。

接口调用说明

请求 URL 示例

https://xxxxxx/v4/openim/admin_getroammsg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介
参数
说明
xxxxxx
SDKAppID 所在国家/地区对应的专属域名:
中国:console.tim.qq.com
新加坡:adminapisgp.im.qcloud.com
首尔: adminapikr.im.qcloud.com
东京:adminapijpn.im.qcloud.com
法兰克福:adminapiger.im.qcloud.com
硅谷:adminapiusa.im.qcloud.com
雅加达:adminapiidn.im.qcloud.com
v4/openim/admin_getroammsg
请求接口
sdkappid
创建应用时即时通信 Chat 控制台分配的 SDKAppID
identifier
必须为 App 管理员账号,更多详情请参见 App 管理员
usersig
App 管理员账号生成的签名,具体操作请参见 生成 UserSig
random
请输入随机的32位无符号整数,取值范围0 - 4294967295
contenttype
请求格式固定值为json

最高调用频率

200次/秒。

请求及应答示例

例如,用户 user1 和 user2 聊天,现在需要以 user2 的角度查询该会话在2020-03-20 10:00:00 - 2020-03-20 11:00:00内的聊天记录。

请求示例

{
"Operator_Account":"user2",
"Peer_Account":"user1",
"MaxCnt":100,
"MinTime":1584669600,
"MaxTime":1584673200
}

应答示例

{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"Complete": 0,
"MsgCnt": 12, //本次拉取返回了12条消息
"LastMsgTime": 1584669680,
"LastMsgKey": "549396494_2578554_1584669680",
"MsgList": [
{
"From_Account": "user1",
"To_Account": "user2",
"MsgSeq": 549396494,
"MsgRandom": 2578554,
"MsgTimeStamp": 1584669680,
"MsgFlagBits": 0,
"IsPeerRead": 0,
"MsgKey": "549396494_2578554_1584669680",
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "msg 1"
}
}
],
"CloudCustomData": "your cloud custom data"
},
{
"From_Account": "user2",
"To_Account": "user1",
"MsgSeq": 1054803289,
"MsgRandom": 7201,
"MsgTimeStamp": 1584669689,
"MsgFlagBits": 0,
"IsPeerRead": 0,
"MsgKey": "1054803289_7201_1584669689",
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "msg 2"
}
}
],
"CloudCustomData": "your cloud custom data"
},
{ ... } //为节省篇幅,余下的10条消息未列出
]
}
应答中的"Complete": 0表示该时间范围的消息未全部拉取,需要续拉。 续拉请求中的 MaxTime 应改成应答的 LastMsgTime 字段值,同时填上应答的 LastMsgKey 字段,如下所示:
续拉请求示例
{
"Operator_Account":"user2",
"Peer_Account":"user1",
"MaxCnt":100,
"MinTime":1584669600,
"MaxTime":1584669680,
"LastMsgKey": "549396494_2578554_1584669680"
}

应答示例

{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"Complete": 1,
"MsgCnt": 5, //本次拉取返回了5条消息
"LastMsgTime": 1584669601,
"LastMsgKey": "1456_23287_1584669601",
"MsgList": [
{
"From_Account": "user1",
"To_Account": "user2",
"MsgSeq": 1456,
"MsgRandom": 23287,
"MsgTimeStamp": 1584669601,
"MsgFlagBits": 0,
"IsPeerRead": 1,
"MsgKey": "1456_23287_1584669601",
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "msg 13"
}
}
],
"CloudCustomData": "your cloud custom data"
},
{
"From_Account": "user2",
"To_Account": "user1",
"MsgSeq": 9806,
"MsgRandom": 14,
"MsgTimeStamp": 1584669602,
"MsgFlagBits": 0,
"IsPeerRead": 1,
"MsgKey": "9806_14_1584669602",
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "msg 14"
}
}
],
"CloudCustomData": "your cloud custom data"
},
{ ... } //为节省篇幅,余下的3条消息未列出
]
}
应答中的"Complete": 1表示该时间范围的消息已全部拉取。 若续拉的应答里 Complete 值为0,表明还需要继续续拉,直到 Complete 值为1。

请求包字段说明

字段
类型
属性
说明
Operator_Account
String
必填
会话其中一方的 UserID,以该 UserID 的角度去查询消息。同一个会话,分别以会话双方的角度去查询消息,结果可能会不一样,请参考本接口的接口说明
Peer_Account
String
必填
会话的另一方 UserID
MaxCnt
Integer
必填
请求的消息条数
MinTime
Integer
必填
请求的消息时间范围的最小值(单位:秒)
MaxTime
Integer
必填
请求的消息时间范围的最大值(单位:秒)
LastMsgKey
String
选填
上一次拉取到的最后一条消息的 MsgKey,续拉时需要填该字段,填写方法见上方 示例

应答包体示例

正常应答
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"Complete": 1,
"MsgCnt": 1,
"LastMsgTime": 1584669680,
"LastMsgKey": "549396494_2578554_1584669680",
"MsgList": [
{
"From_Account": "user1",
"To_Account": "user2",
"MsgSeq": 549396494,
"MsgRandom": 2578554,
"MsgTimeStamp": 1584669680,
"MsgFlagBits": 0,
"IsPeerRead": 0,
"MsgKey": "549396494_2578554_1584669680",
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "1"
}
}
],
"CloudCustomData": "your cloud custom data"
}
]
}
异常应答
{
"ActionStatus": "FAIL",
"ErrorInfo": "Fail to Parse json data of body, Please check it",
"ErrorCode": 90001
}

应答包字段说明

字段
类型
说明
ActionStatus
String
请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorCode
Integer
错误码,0表示成功,非0表示失败
ErrorInfo
String
错误信息
Complete
Integer
是否全部拉取,0表示未全部拉取,需要续拉,1表示已全部拉取
MsgCnt
Integer
本次拉取到的消息条数
LastMsgTime
Integer
本次拉取到的消息里的最后一条消息的时间
LastMsgKey
String
本次拉取到的消息里的最后一条消息的标识
MsgList
Array
返回的消息列表
MsgFlagBits
Integer
该条消息的属性,0表示正常消息,8表示被撤回的消息
IsPeerRead
Integer
消息接收方是否发送该条消息的已读回执。0表示未发送,1表示已发送,详情可参考本接口的功能说明。
MsgBody
Array
消息内容,具体格式请参考 消息格式描述(一条消息可包括多种消息元素,MsgBody 为 Array 类型)
CloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
MsgKey
String
标识该条消息,可用于 REST API 撤回单聊消息

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。 公共错误码(60000到79999)参见 错误码 文档。 本 API 私有错误码如下:
错误码
描述
90001
JSON 格式解析失败,请检查请求包是否符合 JSON 规范
90003
JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 String 类型
90008
JSON 格式请求包体中缺少 From_Account 字段或者 From_Account 账号不存在。
90009
请求需要 App 管理员权限
91000
服务内部错误,请重试

接口调试工具

通过 REST API 在线调试工具 调试本接口。

参考

单发单聊消息(v4/openim/sendmsg
批量发单聊消息(v4/openim/batchsendmsg
撤回单聊消息(v4/openim/admin_msgwithdraw

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈