微信小程序雲開發,使用阿里雲短信服務,搜索員工生日定期發送短信。

相關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"
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章