发起全员/标签推送

全员/标签推送支持发送特定内容,还可根据标签、属性,针对特定用户群体发送个性化内容,例如会员活动、区域通知等,助力拉新、转化、促活等各个阶段运营工作的有效进行,同时支持推送送达报表,自助推送故障排查工具,具体效果请参见 效果展示
注意:
账号必须曾经登录过或者手动导入过,才可以接收到全员/标签推送的消息。

功能说明

支持向全部用户发送推送。
支持按用户属性发送推送。
支持按用户标签发送推送。
管理员推送消息,接收方看到消息发送者是管理员。
管理员指定某一账号向其他账号推送消息,接收方看到发送者不是管理员,而是管理员指定的账号。
支持漫游,漫游存储时长与普通消息的存储时长一致。
由于全员/标签推送需要下发的账号数量巨大,下发完全部账号需要一定时间(根据账号总数而定)。
支持通过 OnlineOnlyFlag 设置为1,则可以只发送推送,不保存会话和漫游以及未读消息。

接口调用说明

请求 URL 示例

https://xxxxxx/v4/timpush/push?usersig=xxx&identifier=admin&sdkappid=88888888&random=99999999&contenttype=json

请求参数说明

参数
说明
https
请求协议:HTTPS
请求方式:POST
xxxxxx
SDKAppID 所在国家/地区对应的专属域名。
中国:console.tim.qq.com
新加坡:adminapisgp.im.qcloud.com
首尔: adminapikr.im.qcloud.com
法兰克福:adminapiger.im.qcloud.com
硅谷:adminapiusa.im.qcloud.com
v4/timpush/push
请求接口
usersig
App 管理员账号生成的签名,参见 UserSig 后台 API
identifier
必须为 App 管理员账号
sdkappid
创建应用时,即时通信控制台分配的 SdkAppid
random
32位无符号整数随机数
contenttype
固定值为:json

调用频率

本接口包含全员、属性、标签推送,默认每天最多调用100次,每两次推送间隔必须大于1s。
注意:
接口调用频率,默认可免费调用100次/日。每提高1次/日,费用将增加10美元/日。如需调整接口频率,请前往 IM 控制台 操作。

请求包示例

全员推送示例

管理员进行全员推送:
{
"From_Account": "admin",
"MsgRandom": 3674128,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}
管理员指定某一账号进行全员推送(示例中发送方账号为 xiaoming):
{
"From_Account": "xiaoming",
"MsgRandom": 3674128,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}
注意:
From_Account 为消息推送方账号,支持指定为任意存在的账号。如果未指定发送方或指定的发送方不存在,则默认取接口调用方账号。
只推送在线用户(在线推送):
{
"From_Account": "xiaoming",
"MsgRandom": 3674128,
"OnlineOnlyFlag": 1, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 1 // 0表示进行离线推送,1表示不进行离线推送
}
}
注意:
OnlineOnlyFlag为1表示只进行推送(在线推送+离线推送),OfflinePushInfo.PushFlag为1表示不进行离线推送。因此上述实例表示只推送在线用户。

按用户标签推送示例

管理员给带有关注“股票A”和“股票B”标签的用户推送消息:
{
"From_Account": "admin",
"MsgRandom": 124032,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"Condition": {
"TagsAnd": ["股票A","股票B"]
},
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}
注意:
From_Account 为消息推送方账号,支持指定为任意存在的账号。如果未指定发送方或指定的发送方不存在,则默认取接口调用方账号。
管理员给关注“股票A”或“股票B”的用户推送消息:
{
"From_Account": "admin",
"MsgRandom": 124032,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"Condition": {
"TagsOr": ["股票A","股票B"]
},
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}

按用户属性推送

管理员给在深圳的超白金会员用户推送消息:
{
"From_Account": "admin",
"MsgRandom": 389475,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"Condition": {
"AttrsAnd": {
"会员等级": "超白金会员",
"city": "深圳"
}
},
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}
注意:From_Account 为消息推送方账号,支持指定为任意存在的账号。如果未指定发送方或指定的发送方不存在,则默认取接口调用方账号。
管理员给在深圳的超白金用户推送消息:
{
"From_Account": "admin",
"MsgRandom": 389475,
"OnlineOnlyFlag": 0, // 0表示存漫游和未读,此时推送并发用户限制200人/秒;1表示不存漫游和未读,此时无推送并发限制
"Condition": {
"AttrsAnd": {
"会员等级": "超白金用户",
"city": "深圳"
}
},
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0, // 0表示进行离线推送,1表示不进行离线推送
"Title": "离线推送标题",
"Desc": "离线推送内容"
}
}

请求包字段说明

字段
类型
属性
说明
From_Account
String
选填
消息推送方账号(支持指定为任意存在的账号)
注意:如果未指定发送方或指定的发送方不存在,则默认取接口调用方账号。
MsgRandom
Integer
必填
消息随机数(32位无符号整数),后台用于同一秒内的消息去重。请确保该字段填的是随机
OnlineOnlyFlag
Integer
选填
默认为 0,表示存漫游和未读,此时推送并发用户限制200人/秒。
1 表示不存历史消息且不计未读,此时无推送并发限制。
Condition
Object
选填
Condition 共有4种条件类型,分别是:
属性的 “或条件” AttrsOr
属性的 “与条件” AttrsAnd
标签的 “或条件” TagsOr
标签的 “与条件” TagsAnd
注意:AttrsOr 、 AttrsAnd 、TagsOr 、TagsAnd 不能并存。如果没有 Condition,则推送给全部用户。
TagsOr
Array
选填
标签条件的并集。标签是一个不超过50字节的字符串。
注意:属性推送和标签推送不可同时作为推送条件。TagsOr 条件中的标签个数不超过10个。
TagsAnd
Array
选填
标签条件的交集。标签是一个不超过50字节的字符串。
注意:属性推送和标签推送不可同时作为推送条件。TagsAnd 条件中的标签个数不超过10个。
AttrsOr
Object
选填
属性条件的并集。
注意:属性推送和标签推送不可同时作为推送条件。
AttrsAnd
Object
选填
属性条件的交集。
注意:属性推送和标签推送不可同时作为推送条件。
MsgBody
Array
必填
消息内容,具体格式请参见 MsgBody 消息内容说明(一条消息可包括多种消息元素,所以 MsgBody 为 Array 类型)
MsgType
String
必填
TIM 消息对象类型,目前支持的消息对象包括:
TIMTextElem(文本消息)
TIMLocationElem(位置消息)
TIMFaceElem(表情消息)
TIMCustomElem(自定义消息)
TIMSoundElem(语音消息)
TIMImageElem(图像消息)
TIMFileElem(文件消息)
TIMVideoFileElem(视频消息)
MsgContent
Object
必填
对于每种 MsgType,用不同的 MsgContent 格式,具体请参见 TIMMsgElement 对象 的定义
OfflinePushInfo
Object
选填
离线推送信息配置,具体请参见 消息格式描述

应答包体示例

{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"TaskId": "53743040_144115212910570789_4155518400_15723514"
}

应答包字段说明

字段
类型
说明
ActionStatus
String
请求处理的结果:
OK:表示处理成功
FAIL:表示失败
ErrorCode
Integer
错误码
ErrorInfo
String
错误信息
TaskId
String
推送任务 ID

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:
错误码
含义说明
90001
JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
90002
JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参见 TIMMsgElement 对象 的定义。
90005
JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型。
90007
JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型。
90009
请求需要 App 管理员权限。
90010
JSON 格式请求包不符合消息格式描述,请参见 TIMMsgElement 对象 的定义。
90020
标签长度超过限制(不能超过50字节)。
90022
推送条件中的 TagsOr 和 TagsAnd 有重复标签。
90024
推送过于频繁,每两次推送间隔必须大于1秒。
90026
消息离线存储时间错误(最多不能超过7天)。
90032
推送条件中的 tag 数量大于10,或添加标签请求中的标签数量大于10。
90033
属性无效。
90039
按属性推送和按标签推送不可同时存在。
90040
推送条件中其中1个 tag 为空。
90045
未开通全员/标签推送功能。
90047
推送次数超过当天限额(默认为100次)。
91000
服务内部错误,请重试。

接口调试工具

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

参考