微信小程序云开发,使用阿里云短信服务,搜索员工生日定期发送短信。

相关API文档地址:

阿里云短信服务API文档地址

小程序云开发云函数正则匹配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数组格式。

手机号码格式:

  • 国内短信:11位手机号码,例如15900000000。
  • 国际/港澳台消息:国际区号+号码,例如85200000000。

说明 验证码类型短信,建议使用接口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"
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章