功能说明
该 API 接口的作用是导入群组的消息,不会触发回调、不会下发通知。
当 App 需要从其他即时通信系统迁移到即时通信 IM 时,使用该协议导入存量群消息数据。
接口调用说明
适用的群组类型
群组类型 | 支持此 REST API |
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
说明
AVChatRoom(直播群)不支持导入群消息,对此类型的群组进行操作时会返回10007错误;因为此类型群组所适用的场景不支持查看入群前的历史消息,所以没有提供这一功能。
请求 URL 示例
https://xxxxxx/v4/group_open_http_svc/import_group_msg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
请求参数说明
参数 | 说明 |
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 | |
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 | 必填 | |
MsgType | String | 必填 | TIM 消息对象类型,目前支持的消息对象包括: TIMTextElem(文本消息),TIMFaceElem(表情消息),TIMLocationElem(位置消息),TIMCustomElem(自定义消息)。 |
MsgContent | Object | 必填 | |
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字节的消息,请调整消息长度 |