导入单聊消息
功能说明
按时间顺序导入历史单聊消息到即时通信 IM。
平滑过渡期间,将原有即时通信实时单聊消息按时间顺序导入到即时通信 IM。
该接口会更新会话。
该接口不会触发回调。
对于同一个单聊会话的消息,该接口会根据 MsgSeq , MsgRandom , MsgTimeStamp 字段的值对导入的消息进行去重。仅当这三个字段的值都对应相同时,才判定消息是重复的,消息是否重复与消息内容本身无关。 另外,若两条消息的 MsgSeq , MsgRandom , MsgTimeStamp 字段对应相同,而 from_account 和 to_account 相反,则这两条消息也认为是重复的。
重复导入的消息不会覆盖之前已导入的消息(即消息内容以首次导入的为准)。
单聊消息 MsgSeq 字段的作用及说明:该字段在发送消息时由用户自行指定,该值可以重复,非后台生成,非全局唯一。与群聊消息的 MsgSeq 字段不同,群聊消息的 MsgSeq 由后台生成,每个群都维护一个 MsgSeq,从1开始严格递增。单聊消息历史记录对同一个会话的消息先以时间戳排序,同秒内的消息再以 MsgSeq 排序。
接口调用说明
请求 URL 示例
https://xxxxxx/v4/openim/importmsg?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/openim/importmsg | 请求接口 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID |
identifier | |
usersig | |
random | 请输入随机的32位无符号整数,取值范围0 - 4294967295 |
contenttype | 请求格式固定值为 json |
最高调用频率
200次/秒。
请求包示例
平滑过渡期间,实时消息导入
{"SyncFromOldSystem": 5, // 平滑过渡期间,实时消息导入,消息计入未读计数,且消息会推送到终端"From_Account": "lumotuwe1", // 消息发送方账号"To_Account": "lumotuwe2", // 接收方账号"MsgSeq": 827092, // 消息序列号"MsgRandom": 1287657, // 消息随机数"MsgTimeStamp": 1556178721, // 消息时间,UNIX 时间戳,单位为秒"MsgBody": [ // 消息内容,本条消息是一条文本消息{"MsgType": "TIMTextElem", // 文本消息元素"MsgContent": {"Text": "hi, beauty"}}],"CloudCustomData": "your cloud custom data"}
历史消息导入
{"SyncFromOldSystem": 2, // 历史消息导入,消息不计入未读计数,且消息不会推送到终端"From_Account": "lumotuwe1", // 消息发送方账号"To_Account": "lumotuwe2", // 接收方账号"MsgSeq": 827092, // 消息序列号"MsgRandom": 1287657, // 消息随机数"MsgTimeStamp": 1556178721, // 消息时间,UNIX 时间戳,单位为秒"MsgBody": [ // 消息内容,本条消息是一条文本消息{"MsgType": "TIMTextElem", // 文本消息元素"MsgContent": {"Text": "hi, beauty" // 消息内容}}],"CloudCustomData": "your cloud custom data"}
请求包字段说明
字段 | 类型 | 属性 | 说明 |
SyncFromOldSystem | Integer | 必填 | 该字段只能填2或5,其他值是非法值 2表示历史消息导入,消息不计入未读计数,且消息不会推送到终端 5表示实时消息导入,消息计入未读计数,且消息会推送到终端 |
From_Account | String | 必填 | 消息发送方 UserID,用于指定发送消息方 |
To_Account | String | 必填 | 消息接收方 UserID |
MsgSeq | Integer | 选填 | 消息序列号(32位无符号整数),后台会根据该字段去重及进行同秒内消息的排序,详细规则请看本接口的功能说明。若不填该字段,则由后台填入随机数 |
MsgRandom | Integer | 必填 | 消息随机数(32位无符号整数),后台用于同一秒内的消息去重。请确保该字段填的是随机 |
MsgTimeStamp | Integer | 必填 | 消息时间戳,UNIX 时间戳,单位为秒。后台会根据该字段去重,详细规则请看本接口的功能说明。 |
MsgBody | Array | 必填 | |
MsgType | String | 必填 | TIM 消息对象类型,目前支持的消息对象包括: TIMTextElem(文本消息) TIMLocationElem(位置消息) TIMFaceElem(表情消息) TIMCustomElem(自定义消息) TIMSoundElem(语音消息) TIMImageElem(图像消息) TIMFileElem(文件消息) TIMVideoFileElem(视频消息) |
MsgContent | Object | 必填 | 对于每种 MsgType 用不同的 MsgContent 格式,具体可参考 消息格式描述 |
CloudCustomData | String | 选填 | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到) |
应答包体示例
{"ActionStatus" : "OK","ErrorInfo" : "","ErrorCode" : 0}
应答包字段说明
字段 | 类型 | 说明 |
ActionStatus | String | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 错误码,0表示成功,非0表示失败 |
ErrorInfo | String | 错误信息 |
错误码说明
除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的;
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:
错误码 | 描述 |
90001 | JSON 格式解析失败,请检查请求包是否符合 JSON 规范 |
90002 | |
90003 | JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 String 类型 |
90005 | JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型 |
90006 | JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型 |
90007 | JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型 |
90008 | JSON 格式请求包体中缺少 From_Account 字段或者 From_Account 字段不是 Integer 类型 |
90009 | 请求需要 App 管理员权限 |
90010 | |
90011 | 批量发消息目标账号超过500个,请减少 To_Account 中目标账号数量 |
90012 | To_Account 没有注册或不存在,请确认 To_Account 是否导入即时通信 IM 或者是否拼写错误 |
90026 | 消息离线存储时间错误(最多不能超过7天) |
90030 | JSON 格式请求包体中缺少 SyncFromOldSystem 字段或者 SyncFromOldSystem 字段不是 Integer 类型 |
90048 | 请求的用户账号不存在 |
90992 | 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务器是否正常向即时通信 IM 后台服务器返回回调结果 |
91000 | 服务内部错误,请重试 |
93000 | JSON 数据包超长,消息包体请不要超过12k |