批量发单聊消息

最近更新时间:2019-08-02 17:55:03

功能说明

  • 支持一次对最多500个用户进行单发消息。
  • 与单发消息相比,该接口更适用于营销类消息、系统通知 tips 等时效性较强的消息。
  • 管理员指定某一帐号向目标帐号批量发消息,接收方看到发送者不是管理员,而是管理员指定的帐号。
  • 该接口不触发回调请求。
  • 该接口不会检查发送者和接收者的好友关系(包括黑名单),同时不会检查接收者是否被禁言。

注意:

当使用服务端集成 REST API 发送批量消息时,存在是否将消息同步至发送方(管理员帐号或者由管理员指定的某帐号)问题,同步方式包括在线终端和漫游,REST API 提供 SyncOtherMachine 参数用于说明是否进行同步,详细使用方式参见下文请求包示例。

接口调用说明

请求 URL 示例

https://console.tim.qq.com/v4/openim/batchsendmsg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介

参数 说明
v4/openim/batchsendmsg 请求接口
sdkappid 创建应用时即时通信 IM 控制台分配的 SDKAppID
identifier 必须为 App 管理员帐号,更多详情请参见 App 管理员
usersig App 管理员帐号生成的签名,具体操作请参见 生成 UserSig
random 请输入随机的32位无符号整数

最高调用频率

100次/秒。如需提升调用频率,请根据 工单模板 提交工单申请处理。

请求包示例

管理员向目标帐号批量发消息

注意:

若不希望将消息同步至 From_Account,则 SyncOtherMachine 填写2。
若希望将消息同步至 From_Account,则 SyncOtherMachine 填写1。

{
    "SyncOtherMachine": 2, // 消息不同步至发送方
    "To_Account": [ // 目标帐号列表
        "bonnie",
        "rong"
    ],
    "MsgRandom": 19901224, // 消息随机数
    "MsgBody": [ // 消息
        {
            "MsgType": "TIMTextElem", // 消息类型,TIMTextElem为文本消息
            "MsgContent": {
                "Text": "hi, beauty" // 消息文本
            }
        }
    ]
}

管理员指定某一帐号向目标帐号批量发消息,同时设置离线推送信息

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"
    ],
    "MsgRandom": 19901224,
    "MsgBody": [
        {
            "MsgType": "TIMTextElem",
            "MsgContent": {
                "Text": "hi, beauty"
            }
        }
    ],
    "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 必填 消息接收方用户 Identifier
MsgRandom Integer 必填 消息随机数,用于后台定为问题
MsgBody Object 必填 TIM 消息,请参考 消息格式描述
MsgType String 必填 TIM 消息对象类型,目前支持的消息对象包括:TIMTextElem(文本消息), TIMFaceElem(表情消息),TIMLocationElem(位置消息),TIMCustomElem(自定义消息)
MsgContent Object 必填 MsgContent 为 TIM 消息对象,具体可参考 消息格式描述
OfflinePushInfo Object 选填 离线推送信息配置,具体可参考 消息格式描述

应答包体示例

  • 成功应答包体示例

    {
      "ErrorInfo": "",
      "ActionStatus": "OK",
      "ErrorCode": 0
    }
  • 错误应答包体示例

    {
      "ActionStatus": "FAIL",
      "ErrorInfo": "",
      "ErrorList": [ // 发送消息失败列表
          {
              "To_Account": "rong", // 目标帐号
              "ErrorCode":  90011 // 错误码
          }
      ]
    }

应答包字段说明

字段 类型 说明
ActionStatus String 请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorList Array 发消息失败列表,在此列表中的目标帐号,消息发送失败。若消息全部发送成功,则 ErrorList 为空。因此判断回包中是否含 ErrorList ,来判断消息是否全部发送成功
To_Account String 发送消息失败的帐号
ErrorCode Number 发送失败的错误码

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码、错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:

错误码 描述
90001 JSON 格式解析失败,请检查请求包是否符合 JSON 规范
90002 JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 TIMMsgElement 对象 的定义
90007 JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
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 数据包超长,消息包体请不要超过8k

接口调试工具

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

参考