相關API文檔地址:
1.登錄阿里雲,購買短信服務並添加簽名和模板
2., 登錄阿里雲,鼠標放在右上角的頭像圖標就會顯示 AccessKey 管理,在裏面找到你的 AccessKey ID 和 AccessKey Secret ,沒有的話創建一個。
3.創建雲函數,右鍵點擊雲函數,選擇在終端打開,然後在 cmd 執行 npm install @alicloud/pop-core -S 命令,安裝短信的node.js SDK 。
安裝 短信的node.js SDK , npm 命令 npm install @alicloud/pop-core -S
npm install @alicloud/pop-core -S
4. 發送短信示例代碼:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
const Core = require('@alicloud/pop-core');
cloud.init()
// 雲函數入口函數
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
var params = {
"RegionId": "cn-hangzhou",
"PhoneNumberJson": "[\"13977280000\"]",
"SignNameJson": "[\"*****公司\"]",
"TemplateCode": "SMS_194900262",
"TemplateParamJson": "[{\"name\":\"李2\",\"date\":\"2020-7-5\"}]"
}
var client = new Core({
accessKeyId: 'LTAI4G8Vi**********',
accessKeySecret: 'Me2tWwsNFGPsf************',
endpoint: 'https://dysmsapi.aliyuncs.com',
apiVersion: '2017-05-25'
});
var requestOption = {
method: 'POST'
};
const post_res= await client.request('SendBatchSms', params, requestOption).then((result) => {
console.log(JSON.stringify(result));
return {
code:1,
result: result,
}
}, (ex) => {
return {
code:0,
result: ex,
}
})
return post_res;
}
5.發送短信,模糊搜索數據庫匹配的完整發送短信代碼:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
const Core = require('@alicloud/pop-core');
cloud.init()
const db = cloud.database()
function getDate(){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
var nowDate = "-"+month + "-" + day;
return nowDate;
}
// 雲函數入口函數
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const _ = db.command
const birthdayArr = await db.collection('birthday').where({
_date: db.RegExp({
regexp: getDate(),
options: 'i',
})
}).get().then(res => {
return res.data;
})
var phoneArr =[];
var TemplateParamJson =[];
var SignNameJson=[]
birthdayArr.forEach(item=>{
if(item.phone){
phoneArr.push(item.phone)
let obj ={
name:item.name,
date:item._date
}
SignNameJson.push('****公司')
TemplateParamJson.push(obj)
}
})
var params = {
"RegionId": "cn-hangzhou",
"PhoneNumberJson":JSON.stringify(phoneArr),
"SignNameJson": JSON.stringify(SignNameJson),
"TemplateCode": "SMS_194900262",
"TemplateParamJson": JSON.stringify(TemplateParamJson)
}
var client = new Core({
accessKeyId: 'LTAI4G8Vit3SfF4p********',
accessKeySecret: 'Me2tWwsNFGPsfPgB**********',
endpoint: 'https://dysmsapi.aliyuncs.com',
apiVersion: '2017-05-25'
});
var requestOption = {
method: 'POST'
};
const post_res= await client.request('SendBatchSms', params, requestOption).then((result) => {
console.log(JSON.stringify(result));
return {
code:1,
result: result,
params:params
}
}, (ex) => {
return {
code:0,
result: ex,
params:params
}
})
return post_res;
}
在小程序端調用API的示例代碼:
onLoad(){
console.log('000')
wx.cloud.callFunction({
name: "birthday",
success(res) {
console.log('res',res)
},fail(err){
console.log('err',err)
}
})
},
調用後打印結果如圖說明發送短信成功了:
6.發送短信成功了,最後寫定時器,規定每天上午8點自動執行一次該函數,在雲函數的 config.json 文件添加 triggers,代碼:
{
"triggers": [
{
"name": "birthday",
"type": "timer",
"config": "0 0 8 * * * *"
}
]
}
代碼寫完了,下面是官方文檔------------------------------------------------------------------------
阿里雲發送短信API參數說明文檔:
調用SendBatchSms接口批量發送短信。
SendBatchSms接口是短信批量發送接口,支持在一次請求中分別向多個不同的手機號碼發送不同簽名的短信。手機號碼等參數均爲JSON格式,字段個數相同,一一對應,短信服務根據字段在JSON中的順序判斷髮往指定手機號碼的簽名。
如果您需要往多個手機號碼中發送同樣簽名的短信,請使用SendSms接口實現。
調用該接口發送短信時,請注意:
- 發送短信會根據發送量計費,價格請參考計費說明。
- 在一次請求中,最多可以向100個手機號碼分別發送短信。
請求參數
名稱 | 類型 | 是否必選 | 示例值 | 描述 |
---|---|---|---|---|
PhoneNumberJson | String | 是 | ["15900000000","13500000000"] |
接收短信的手機號碼,JSON數組格式。 手機號碼格式:
說明 驗證碼類型短信,建議使用接口SendSms單獨發送。 |
SignNameJson | String | 是 | ["阿里雲","阿里巴巴"] |
短信簽名名稱,JSON數組格式。 請在控制檯簽名管理頁面簽名名稱一列查看。 說明 必須是已添加、並通過審覈的短信簽名;且短信簽名的個數必須與手機號碼的個數相同、內容一一對應。 |
TemplateCode | String | 是 | SMS_152550005 |
短信模板CODE。請在控制檯模板管理頁面模板CODE一列查看。 說明 必須是已添加、並通過審覈的模板CODE;且發送國際/港澳臺消息時,請使用國際/港澳臺短信模版。 |
AccessKeyId | String | 否 | LTAIP00vvvvvvvvv |
主賬號AccessKey的ID。 |
Action | String | 否 | SendBatchSms |
系統規定參數。取值:SendBatchSms。 |
SmsUpExtendCodeJson | String | 否 | ["90999","90998"] |
上行短信擴展碼,JSON數組格式。無特殊需要此字段的用戶請忽略此字段。 |
TemplateParamJson | String | 否 | [{"name":"TemplateParamJson"},{"name":"TemplateParamJson"}] |
短信模板變量對應的實際值,JSON格式。 說明 如果JSON中需要帶換行符,請參照標準的JSON協議處理;且模板變量值的個數必須與手機號碼、簽名的個數相同、內容一一對應,表示向指定手機號碼中發對應簽名的短信,且短信模板中的變量參數替換爲對應的值。 |
返回數據
名稱 | 類型 | 示例值 | 描述 |
---|---|---|---|
BizId | String | 900619746936498440^0 |
發送回執ID,可根據該ID在接口QuerySendDetails中查詢具體的發送狀態。 |
Code | String | OK |
請求狀態碼。
|
Message | String | OK |
狀態碼的描述。 |
RequestId | String | F655A8D5-B967-440B-8683-DAD6FF8DE990 |
請求ID。 |
示例
請求示例
http(s)://[Endpoint]/?PhoneNumberJson=["15900000000","13500000000"]
&SignNameJson=["阿里雲","阿里巴巴"]
&TemplateCode=SMS_152550005
&<公共請求參數>
正常返回示例
XML
格式
<SendSmsResponse>
<Message>OK</Message>
<RequestId>44DF7A95-603F-4651-9298-BE1850BEB53F</RequestId>
<BizId>336006646937050335^0</BizId>
<Code>OK</Code>
</SendSmsResponse>
JSON
格式
{
"Message":"OK",
"RequestId":"2184201F-BFB3-446B-B1F2-C746B7BF0657",
"BizId":"197703245997295588^0",
"Code":"OK"
}