相关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"
}