对全网设备推送相同消息,消息通过模板创建。
当推送目标为移动分析人群或自定义标签人群时,不支持定时和循环推送。
在调用本接口之前,确保已完成以下操作:
请求参数
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
classification | String | 否 | 1 | 用于传递 vivo 推送通道的消息类型:
不填则默认为 1。 |
taskName | String | 是 | 群发测试任务 | 推送任务名称。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空间 |
deliveryType | Long | 是 | 1 | 目标 ID 类型,数值选择:
|
msgkey | String | 是 | 1578807462788 | 业务方消息 ID,用户自定义,不可重复。 |
expiredSeconds | Long | 是 | 300 | 消息有效期,单位为秒。 |
templateName | String | 是 | 群发模板 | 模板名称,在控制台创建模板。 |
templateKeyValue | String | 否 | {“content”:”公告内容”} | 模板参数,为 Map 格式,和 |
pushStatus | Long | 否 | 0 | 群发时,推送登录状态:
|
bindPeriod | Integer | 否 | 登录时长,当
说明
| |
unBindPeriod | Long | 否 | 退出登录时长,当
| |
androidChannel | Integer | 否 | 安卓消息通道:
| |
strategyType | int | 否 | 1 | 推送策略类型:
不填则默认为 0。 |
StrategyContent | String | 否 | {\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”} | 推送策略详情(JSON 字符串)。 |
transparentMessagePayload | Map<String, JSONObject> | 否 | - | 厂商透传消息体。
透传消息体的格式如下:
|
transparentMessageUrgency | String | 否 | - | 厂商透传消息优先级(transparentMessagePayload 有值时有效)。 目前仅华为、荣耀以及鸿蒙支持,有 HIGH/NORMAL 可选。 针对华为、荣耀而言:
针对鸿蒙而言:
|
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //华为 FINANCE 财务类型消息 "vivo": "1" //vivo IM 类型消息 } | 用于传递厂商消息分类,详情请参见 厂商消息分类。 |
notifyLevel | Map | 否 | notifyLevel: {"oppo":"2"//OPPO通知栏+锁屏} | 厂商消息提醒等级,如 OPPO 消息等级如下所示:
|
miChannelId | String | 否 | "123321" | 小米厂商推送渠道的 channelId |
StrategyContent 字段说明
JSON 格式转化为 String 传值。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
fixedTime | long | 否 | 1630303126000 | 定时推送时间戳(单位:毫秒,精确到秒)。推送策略类型为定时( |
startTime | long | 否 | 1640966400000 | 循环周期开始时间戳(单位:毫秒,精确到天)。推送策略类型为循环( |
endTime | long | 否 | 1672416000000 | 循环周期结束时间戳(单位:毫秒,精确到天),循环结束时间不得超过当天后的 180 天。推送策略类型为循环( |
circleType | int | 否 | 3 | 循环类型:
推送策略类型为循环( |
circleValue | int[] | 否 | [1,3] | 循环值:
推送策略类型为循环( |
time | String | 否 | 09:45:11 | 循环推送时间(时分秒,格式为 HH:mm:ss) 。推送策略类型为循环( |
未执行的定时或循环推送任务总数上限默认为 100 条。
循环周期为开始时间的 0 点到结束时间的 24 点。
循环开始时间和结束时间均不可早于当天 0 点,且结束时间不得早于开始时间。
返回参数
参数名称 | 类型 | 示例 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 请求 ID |
ResultCode | String | OK | 请求结果码 |
ResultMessage | String | param is invalid | 请求错误描述 |
PushResult | JSON | 请求结果 | |
Success | boolean | true | 请求状态。 |
ResultMsg | String | param is invalid | 请求错误内容。 |
Data | String | 903bf653c1b5442b9ba07684767bf9c2 | 定时推送任务 ID。 |
代码示例
请确保您的 AccessKey 拥有 AliyunMPAASFullAccess 权限,详情请参考 对 RAM 账号进行应用级别的访问控制。
Java 代码示例
单击此处 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 创建 DefaultAcsClient 实例并初始化
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
PushBroadcastRequest request = new PushBroadcastRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setDeliveryType(2L);
request.setMsgkey(String.valueOf(System.currentTimeMillis()));
request.setExpiredSeconds(600L);
request.setTaskName("群发任务");
request.setTemplateName("群发测试");
//这是一个公告:#content#
Map<String, String> templatekv = new HashMap<String, String>();
templatekv.put("content", "公告内容");
request.setTemplateKeyValue(JSON.toJSONString(templatekv));
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
PushBroadcastResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
System.out.println(response.getPushResult().getData()); // 推送任务 ID或定时推送任务 ID
} catch (ClientException e) {
e.printStackTrace();
}
Python 代码示例
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushBroadcastRequest
import json
import time
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
# Initialize AcsClient instance
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
client = AcsClient(
accessKeyId,
accessKeySecret,
"cn-hangzhou"
);
# Initialize a request and set parameters
request = PushBroadcastRequest.PushBroadcastRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211720")
request.set_WorkspaceId("test")
request.set_TemplateName("broadcastTemplate")
templatekv = {"content":"这个一个公告"}
request.set_TemplateKeyValue(json.dumps(templatekv))
request.set_DeliveryType(1)
request.set_TaskName("python测试群发任务")
request.set_ExpiredSeconds(600)
request.set_Msgkey(str(time.time()))
# Print response
response = client.do_action_with_exception(request)
print response
Node.js 代码示例
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushBroadcastRequest } = sdk;
// 创建客户端
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
const client = new Client({
accessKeyId,
accessKeySecret,
endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-21'
});
// 初始化 request
const request = new PushBroadcastRequest();
request.appId = "ONEX570DA89211720";
request.workspaceId = "test";
request.templateName= "broadcastTemplate";
const templatekv = {
content: '这是公告哦',
};
request.templateKeyValue = JSON.stringify(templatekv);
request.deliveryType = 1;
request.taskName = "Node测试任务";
request.expiredSeconds=600;
const extendedParam = {
test: '自定义扩展参数'
};
request.extendedParams = JSON.stringify(extendedParam);
request.msgkey = String(new Date().valueOf())
// 调用 API
try {
client.pushBroadcast(request).then(res => {
console.log('SUCCESS', res);
}).catch(e => {
console.log('FAIL', e);
});
} catch(e) {
console.log('ERROR', e);
}
PHP 代码示例
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
->regionId('cn-hangzhou')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->broadcastPush();
} catch (\Exception $e) {
}
}
public function broadcastPush(){
$request = MPaaS::v20190821()->pushBroadcast();
$result = $request->host("mpaas.cn-hangzhou.aliyuncs.com")
// 是否开启 debug 模式
->debug(true)
->withAppId("ONEX570DA89211720")
->withWorkspaceId("test")
->withTemplateName("broadcastTemplate")
->withTemplateKeyValue(
json_encode(["content" => "这是一个公告"])
)
->withDeliveryType(1)
->withTaskName("PHP 测试群发任务")
->withExpiredSeconds(600)
->withMsgkey("". time())
->request();
}
}