导入群消息

最近更新时间:2024-07-09 17:59:31

我的收藏

功能说明

该 API 接口的作用是导入群组的消息,不会触发回调、不会下发通知。
当 App 需要从其他即时通信系统迁移到即时通信 IM 时,使用该协议导入存量群消息数据。

接口调用说明

适用的群组类型

群组类型
支持此 REST API
Private
支持,同新版本中的 Work(好友工作群)
Public
支持
ChatRoom
支持,同新版本中的 Meeting(会议群)
AVChatRoom
不支持
Community(社群)
支持
即时通信 IM 内置以上四种群组类型,详情请参阅 群组系统
说明
AVChatRoom(直播群)不支持导入群消息,对此类型的群组进行操作时会返回10007错误;因为此类型群组所适用的场景不支持查看入群前的历史消息,所以没有提供这一功能。

请求 URL 示例

https://xxxxxx/v4/group_open_http_svc/import_group_msg?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
法兰克福:adminapiger.im.qcloud.com
硅谷:adminapiusa.im.qcloud.com
雅加达:adminapiidn.im.qcloud.com
v4/group_open_http_svc/import_group_msg
请求接口
sdkappid
创建应用时即时通信 IM 控制台分配的 SDKAppID
identifier
必须为 App 管理员账号,更多详情请参见 App 管理员
usersig
App 管理员账号生成的签名,具体操作请参见 生成 UserSig
random
请输入随机的32位无符号整数,取值范围0 - 4294967295
contenttype
请求格式固定值为json

最高调用频率

200次/秒。

请求包示例

基础形式
批量导入群消息,一次最多导入7条。 使用本接口导入消息后所有成员的未读计数都会变成0,如果要保留未读计数,请在导入所有消息后再导入群成员或者设置成员未读计数。 导入的消息必须按照时间戳递增的顺序导入,且导入消息的时间戳必须小于当前时间,并大于建群时间和当前群内最新一条消息的时间,否则会失败。
{
"GroupId": "@TGS#2C5SZEAEF",
"RecentContactFlag":1,// 表示会触发会话更新(avchatroom 群不支持)
"MsgList": [
{
"From_Account": "leckie", // 指定消息发送者
"SendTime":1620808101,
"Random": 8912345, // 消息随机数(可选)
"MsgBody": [ // 消息体,由一个 element 数组组成,详见 TIMMessage 消息对象
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
},
{
"MsgType": "TIMFaceElem", // 表情
"MsgContent": {
"Index": 6,
"Data": "abc\\u0000\\u0001"
}
}
]
},
{
"From_Account": "peter", // 指定消息发送者
"SendTime":1620892821,
"MsgBody": [ // 消息体,由一个 element 数组组成,详见 TIMMessage 消息对象
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
}
]
}

]
}
指定消息接收者
如果消息体中增加了 To_Account,里面指定消息接收者的信息,那么消息只会发送给消息接收者,且该消息不计未读。(支持群类型 Private、Public、ChatRoom)。
说明
仅旗舰版支持此功能。
{
"GroupId": "@TGS#2C5SZEAEF",
"MsgList": [
{
"From_Account": "peter", // 指定消息发送者
"SendTime":1620892821,
"MsgBody": [ // 消息体,由一个 element 数组组成,详见 TIMMessage 消息对象
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
}
],
"To_Account":["brennanli2", "brennanli3"] //指定消息接收者(接收者成员上限50个),如果此字段被使用,消息则不计未读
}
]
}

请求包字段说明

字段
类型
属性
说明
GroupId
String
必填
要导入消息的群 ID。
RecentContactFlag
Integer
选填
会话更新识别,为1的时候标识触发会话更新,默认不触发(avchatroom 群不支持)。社群不支持此字段。
MsgList
Object
必填
导入的消息列表。
From_Account
String
必填
指定消息发送者。
SendTime
Integer
必填
消息发送时间。
Random
Integer
选填
32位无符号整数;如果5分钟内两条消息的随机值相同,后一条消息将被当做重复消息而丢弃。
MsgBody
Array
必填
TIM 消息,详情请参阅 TIMMsgElement对象的定义
MsgType
String
必填
TIM 消息对象类型,目前支持的消息对象包括: TIMTextElem(文本消息),TIMFaceElem(表情消息),TIMLocationElem(位置消息),TIMCustomElem(自定义消息)。
MsgContent
Object
必填
MsgContent 为 TIM 消息对象, 详情可参阅 TIMMsgElement对象的定义
TopicId
String
选填
话题的 ID,若具有此选项表示将消息导入至对应的话题中,仅支持话题的社群适用此选项。
To_Account
Array
选填
指定消息接收者(接收者成员上限50个),如果此字段被使用,消息则不计未读,仅旗舰版支持此功能,支持好友工作群(Work)、陌生人社交群(Public)、临时会议群(Meeting)。

应答包体示例

{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"ImportMsgResult": [
{
"MsgSeq": 1,
"MsgTime": 1620808101,
"Result": 0
},
{
"MsgSeq": 2,
"MsgTime": 1620892821,
"Result": 0
},
]
}

应答包字段说明

字段
类型
说明
ActionStatus
String
请求处理的结果,
OK 表示处理成功
FAIL 表示失败
ErrorInfo
String
错误信息
ErrorCode
Integer
错误码,
0表示成功
非0表示失败
ImportMsgResult
Array
具体的消息导入结果
Result
Integer
单条消息导入结果
0表示单条消息成功
10004表示单条消息发送时间无效
80002表示为消息内容过长,目前支持12K字节的消息,请调整消息长度
MsgTime
Integer
消息的时间戳
MsgSeq
Integer
消息序列号,唯一标示一条消息

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。 公共错误码(60000到79999)参见 错误码 文档。 本 API 私有错误码如下:
错误码
含义说明
10004
参数非法,请根据错误描述检查请求是否正确
10007
操作权限不足,例如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限
10010
群组不存在,或者曾经存在过,但是目前已经被解散
10015
操群组 ID 非法,请检查群组 ID 是否填写正确
10020
消息内容过长,目前最大支持12K字节的消息,请调整消息长度

接口调试工具

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

参考

设置成员未读消息计数(v4/group_open_http_svc/set_unread_msg_num