注意:当使用服务端集成 REST API 发送批量消息时,存在是否将消息同步至发送方(管理员帐号或者由管理员指定的某帐号)问题,同步方式包括在线终端和漫游,REST API 提供 SyncOtherMachine 参数用于说明是否进行同步,详细使用方式参见下文请求包示例。
https://xxxxxx/v4/openim/batchsendmsg?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 adminapiind.im.qcloud.com adminapiusa.im.qcloud.com |
v4/openim/batchsendmsg | 请求接口 |
sdkappid | 创建应用时即时通信 IM 控制台分配的 SDKAppID |
identifier | 必须为 App 管理员帐号,更多详情请参见 App 管理员 |
usersig | App 管理员帐号生成的签名,具体操作请参见 生成 UserSig |
random | 请输入随机的32位无符号整数,取值范围0 - 4294967295 |
contenttype | 请求格式固定值为json |
200次/秒。
本文以发送文本消息为例,如需发送其他类型的消息,只需将 MsgBody 字段改成相应消息类型即可,更多详情请参见 消息格式描述。
注意:若不希望将消息同步至 From_Account,则 SyncOtherMachine 填写2。
若希望将消息同步至 From_Account,则 SyncOtherMachine 填写1。
{
"SyncOtherMachine": 2, // 消息不同步至发送方
"To_Account": [ // 目标帐号列表
"bonnie",
"rong"
],
"MsgSeq": 28360, // 消息序列号
"MsgRandom": 19901224, // 消息随机数
"MsgBody": [ // 消息
{
"MsgType": "TIMTextElem", // 消息类型,TIMTextElem为文本消息
"MsgContent": {
"Text": "hi, beauty" // 消息文本
}
}
],
"CloudCustomData": "your cloud custom data"
}
From_Accout 为管理员指定的发送方,接收方看到发送者不是管理员,而是 From_Account。下述 Json 请求表达的是 dave 向帐号 bonnie 和帐号 rong 发送一条消息; bonnie 和 rong 收到消息,看到消息发送方是 dave。
注意:若不希望将消息同步至 From_Account,则 SyncOtherMachine 填写2。
若希望将消息同步至 From_Account,则 SyncOtherMachine 填写1。
{
"SyncOtherMachine": 1, // 消息同步至发送方
"From_Account": "dave",
"To_Account": [
"bonnie",
"rong"
],
"MsgSeq": 28360, // 消息序列号
"MsgRandom": 19901224, // 消息随机数
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"CloudCustomData": "your cloud custom data",
"OfflinePushInfo": {
"PushFlag": 0,
"Desc": "离线推送内容",
"Ext": "这是透传的内容",
"AndroidInfo": {
"Sound": "android.mp3"
},
"ApnsInfo": {
"Sound": "apns.mp3",
"BadgeMode": 1, // 这个字段缺省或者为 0 表示需要计数,为 1 表示本条消息不需要计数,即右上角图标数字不增加
"Title":"apns title", // apns title
"SubTitle":"apns subtitle", // apns subtitle
"Image":"www.image.com" // image url
}
}
}
字段 | 类型 | 属性 | 说明 |
---|---|---|---|
SyncOtherMachine | Integer | 选填 | 1:把消息同步到 From_Account 在线终端和漫游上 2:消息不同步至 From_Account;若不填写默认情况下会将消息存 From_Account 漫游 |
From_Account | String | 选填 | 管理员指定消息发送方帐号(若需设置 From_Account 信息,则该参数取值不能为空) |
To_Account | Array | 必填 | 消息接收方用户 UserID |
MsgSeq | Integer | 选填 | 消息序列号(32位无符号整数),后台会根据该字段去重及进行同秒内消息的排序,详细规则请看本接口的功能说明。若不填该字段,则由后台填入随机数 |
MsgRandom | Integer | 必填 | 消息随机数(32位无符号整数),后台用于同一秒内的消息去重。请确保该字段填的是随机 |
MsgBody | Array | 必填 | TIM 消息,请参考 消息格式描述 |
MsgLifeTime | Integer | 选填 | 消息离线保存时长(单位:秒),最长为7天(604800秒)。若设置该字段为0,则消息只发在线用户,不保存离线及漫游 |
MsgType | String | 必填 | TIM 消息对象类型,目前支持的消息对象包括:
|
MsgContent | Object | 必填 | MsgContent 为 TIM 消息对象,具体可参考 消息格式描述 |
CloudCustomData | String | 选填 | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到) |
SendMsgControl | Array | 选填 | 消息发送控制选项,是一个 String 数组,只对本次请求有效。"NoUnread"表示该条消息不计入未读数。"NoLastMsg"表示该条消息不更新会话列表。"WithMuteNotifications"表示该条消息的接收方对发送方设置的免打扰选项生效(默认不生效)。示例:"SendMsgControl": ["NoUnread","NoLastMsg","WithMuteNotifications"] |
OfflinePushInfo | Object | 选填 | 离线推送信息配置,具体可参考 消息格式描述 |
IsNeedReadReceipt | Integer | 选填 | 该条消息是否需要已读回执,0为不需要,1为需要,默认为0 |
{
"ErrorInfo": "",
"ActionStatus": "OK",
"ErrorCode": 0,
"MsgKey": "128493_903762_1572870301"
}
{
"ActionStatus": "SomeError",
"ErrorCode": 0,
"ErrorInfo": "",
"MsgKey": "4852_28135_1579678877",
"ErrorList": [ // 发送消息失败列表
{
"To_Account": "rong", // 失败帐号
"ErrorCode": 70107 // 错误码,70107表示该帐号不存在
}
]
}
{
"ActionStatus": "FAIL",
"ErrorInfo": "invalid To_Account",
"ErrorCode": 90012
}
字段 | 类型 | 说明 |
---|---|---|
ActionStatus | String | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 本次请求的错误码 |
ErrorInfo | String | 详细错误信息 |
ErrorList | Array | 发消息失败的帐号列表,在此列表中的目标帐号,消息发送失败或帐号不存在。若消息全部发送成功,则 ErrorList 为空 |
ErrorList.To_Account | String | 消息发送失败的目标帐号 |
ErrorList.ErrorCode | Integer | 消息发送失败的错误码,若目标帐号的错误码为70107表示该帐号不存在 |
MsgKey | String | 消息唯一标识,用于撤回。长度不超过50个字符 |
除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码、错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:
错误码 | 描述 |
---|---|
70107 | 请求的用户帐号不存在 |
70169 | 服务端内部超时,请稍后重试 |
90001 | JSON 格式解析失败,请检查请求包是否符合 JSON 规范 |
90002 | JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 TIMMsgElement 对象 的定义 |
90004 | JSON 格式请求包中 MsgSeq 字段非法 |
90007 | JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型 |
90008 | JSON 格式请求包体中缺少 From_Account 字段,或者From_Account 不存在 |
90009 | 请求需要 App 管理员权限 |
90010 | JSON 格式请求包不符合消息格式描述,请参考 TIMMsgElement 对象 的定义 |
90011 | 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量 |
90012 | To_Account 没有注册或不存在,请确认 To_Account 是否导入即时通信 IM 或者是否拼写错误 |
90026 | 消息离线存储时间错误(最多不能超过7天) |
90048 | 请求的用户帐号不存在 |
90992 | 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务器是否正常向即时通信 IM 后台服务器返回回调结果 |
91000 | 服务内部错误,请重试 |
93000 | JSON 数据包超长,消息包体请不要超过12k |
通过 REST API 在线调试工具 调试本接口。
本页内容是否解决了您的问题?