對全網裝置推送相同訊息,訊息通過模板建立。
當推送目標為移動分析人群或自訂標籤人群時,不支援定時和迴圈推送。
在調用本介面之前,確保已完成以下操作:
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
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 字串)。 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //華為 FINANCE 財務類型訊息 "vivo": "1" //vivo IM 類型訊息 } | 用於傳遞廠商訊息分類,詳情請參見 廠商訊息分類。 |
notifyLevel | Map | 否 | notifyLevel: {"oppo":"2"//OPPO通知欄+鎖屏} | 廠商訊息提醒等級,如 OPPO 訊息等級如下所示:
|
miChannelId | String | 否 | "123321" | 小米廠商推送渠道的 channelId |
timeMode | Integer | 否 | 0 | 時間模式:
|
bindStartTime | Long | 否 | 1746720000000 | 綁定開始時間戳 |
bindEndTime | Long | 否 | 1746806219999 | 綁定結束時間戳記 |
unBindStartTime | Long | 否 | 1746720000000 | 解除綁定開始時間戳 |
unBindEndTime | Long | 否 | 1746806219999 | 解除綁定結束時間戳記 |
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 的擷取方式 。
import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.PushBroadcastRequest;
import com.aliyun.mpaas20201028.models.PushBroadcastResponse;
import com.aliyun.teaopenapi.models.Config;
import java.text.SimpleDateFormat;
public static void main(String[] args) throws Exception {
// 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
// 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
// 本樣本以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡。
// 建議先完成環境變數配置
Config config = new Config();
// 必填,您的 AccessKey ID
config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
// 必填,您的 AccessKey Secret
config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
// mPaaS 的 REGION_ID 和 Endpoint,以杭州非金為例
config.setRegionId("cn-hangzhou");
config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
Client client = new Client(config);
PushBroadcastRequest request = new PushBroadcastRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTenantId("xxx");
request.setTemplateName("測試模版");
request.setExpiredSeconds(180L);
request.setTaskName("群發任務");
request.setAndroidChannel(2);
// 1-安卓系統,2、ios系統,7-鴻蒙系統
request.setDeliveryType(1L);
// 0-固定天數,1-時間範圍
// request.setTimeMode(1);
// 0-查詢繫結裝置,1-查詢繫結/解除綁定裝置資訊,2-查詢解除綁定裝置資訊
request.setPushStatus(0L);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long startTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
long endTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
request.setBindStartTime(startTime);
request.setBindEndTime(endTime);
request.setMsgkey(String.valueOf(System.currentTimeMillis()));
System.out.println("request==>"+JSON.toJSONString(request));
PushBroadcastResponse acsResponse = client.pushBroadcast(request);
System.out.println("response==>"+JSON.toJSONString(acsResponse));
}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 responseNode.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();
}
}