云開(kāi)發(fā) 短信發(fā)送

2020-07-21 17:55 更新

結(jié)合一些第三方提供的短信API,使用云開(kāi)發(fā)的云函數(shù)也能發(fā)送短信驗(yàn)證碼、系統(tǒng)和活動(dòng)通知等,下面以騰訊云的短信服務(wù)為例。騰訊云有針對(duì)Node環(huán)境的tencentcloud-sdk-nodejs模塊,集成了騰訊云多項(xiàng)服務(wù),除了短信之外,騰訊云服務(wù)的幾乎所有能力都會(huì)集成在這個(gè)開(kāi)發(fā)者工具套件(SDK)里。

一、開(kāi)通騰訊云短信服務(wù)

1、開(kāi)通短信服務(wù)

登錄短信控制臺(tái),這里的賬號(hào)不限于小程序的賬號(hào),其他賬號(hào)也可以;也不限于是個(gè)人賬號(hào)還是企業(yè)賬號(hào),不過(guò)賬號(hào)需要進(jìn)行實(shí)名認(rèn)證,個(gè)人認(rèn)證用戶只能發(fā)送短信驗(yàn)證碼、短信通知等,不能用于營(yíng)銷短信;企業(yè)認(rèn)證用戶可以發(fā)送短信驗(yàn)證碼、短信通知、營(yíng)銷短信等。如果賬號(hào)已經(jīng)認(rèn)證,直接申請(qǐng)短信服務(wù)就可以開(kāi)通了。

2、創(chuàng)建應(yīng)用

創(chuàng)建應(yīng)用可用于個(gè)性化管理短信發(fā)送任務(wù),例如設(shè)置不同的發(fā)送頻率和發(fā)送超量提醒等。打開(kāi)左側(cè)菜單里的應(yīng)用管理-應(yīng)用列表,點(diǎn)擊創(chuàng)建應(yīng)用,應(yīng)用名稱可以為你的小程序名稱+云開(kāi)發(fā),便于區(qū)分管理。創(chuàng)建后,會(huì)有一個(gè)SDKAppID,這個(gè)之后會(huì)用到。

3、建簽名和正文模板

國(guó)內(nèi)短信由簽名+正文組成,簽名符號(hào)為【】,發(fā)送短信內(nèi)容時(shí)必須帶簽名。所以要發(fā)送短信,需要申請(qǐng)短信簽名正文模板,兩者都通過(guò)審核后,就可以開(kāi)始發(fā)送短信了。

(1)創(chuàng)建簽名

打開(kāi)左側(cè)菜單里的國(guó)內(nèi)短信-簽名管理,點(diǎn)擊創(chuàng)建簽名,創(chuàng)建完簽名后,這個(gè)簽名內(nèi)容之后會(huì)用到。

  • 簽名用途:選擇【自用(簽名為本賬號(hào)實(shí)名認(rèn)證的公司、網(wǎng)站、產(chǎn)品名等)】。

  • 簽名類型:選擇【小程序】。

  • 簽名內(nèi)容:輸入公司名或小程序名或產(chǎn)品名稱

  • 證明類型:選擇小程序設(shè)置頁(yè)面截圖,然后上傳小程序設(shè)置頁(yè)面截圖,可以參考案例;

(2)創(chuàng)建正文模板

打開(kāi)左側(cè)菜單里的國(guó)內(nèi)短信-正文模板管理,點(diǎn)擊創(chuàng)建正文模板,創(chuàng)建完模板后,會(huì)有一個(gè)模板ID,這個(gè)之后會(huì)用到,也要記住你模板的變量位置。

  • 模板名稱,建議帶有明確目的的名稱,比如“注冊(cè)通知”、“購(gòu)買成功反饋”等;

  • 短信類型:選擇【普通短信】

  • 短信內(nèi)容:比如“您正在申請(qǐng)手機(jī)注冊(cè),驗(yàn)證碼為:{1},{2}分鐘內(nèi)有效!”,這里的{1}{2}是你要在代碼里傳入的變量,變量的編碼必須是從{1}開(kāi)始,傳入變量時(shí)也要按照順序傳入

3、獲取安全憑證

在使用云API之前,用戶首先需要在騰訊云控制臺(tái)上申請(qǐng)安全憑證(API密鑰),安全憑證包括 SecretID 和 SecretKey。打開(kāi)騰訊云訪問(wèn)密鑰的API密鑰管理,點(diǎn)擊新建密鑰,就可以創(chuàng)建密鑰了,創(chuàng)建之后,就可以看到 SecretIDSecretKey,這兩個(gè)之后會(huì)用到。

API 密鑰是構(gòu)建騰訊云 API 請(qǐng)求的重要憑證,使用騰訊云 API 可以操作你這個(gè)賬號(hào)名下的所有騰訊云資源,一定要妥善保管和定期更新,不要分享給別人或者上傳到網(wǎng)絡(luò)上。

二、使用云函數(shù)發(fā)送短信

使用開(kāi)發(fā)者工具新建一個(gè)云函數(shù),比如sms,打開(kāi)云函數(shù)目錄中的 package.json ,新增最新版tencentcloud-sdk-nodejs 依賴,右鍵云函數(shù)目錄選擇在終端中打開(kāi)輸入命令npm install安裝依賴::

"dependencies": {
  "wx-server-sdk":"latest",
  "tencentcloud-sdk-nodejs":"latest"
}

然后再在云函數(shù)的目錄下面新建一個(gè)config文件夾,在config文件夾里創(chuàng)建一個(gè)config.js,云函數(shù)的目錄結(jié)構(gòu)如下圖所示:

sms // 云函數(shù)目錄
├── config //config文件夾
│   └── config.js //config.js文件
└── index.js
└── config.json 
└── package.json 

然后再在config.js里輸入以下代碼,填入獲取安全憑證里的SecretID 和 SecretKey:

module.exports = {
    secretId: 'wxda99ae45313257046',
    secretKey: 'josgjwoijgowjgjsogjo',
  }

再在index.js里輸入以下代碼,代碼的內(nèi)容比較多,但是基本都是從騰訊云短信的技術(shù)文檔里直接Copy過(guò)來(lái)的,我們只需要改里面相應(yīng)的參數(shù)即可,比如

  • req.SmsSdkAppid為創(chuàng)建應(yīng)用環(huán)節(jié)里的SDKAppID,

  • req.Sign為創(chuàng)建簽名里的簽名內(nèi)容,

  • req.TemplateID為創(chuàng)建正文模板環(huán)節(jié)里的模板ID,

  • req.TemplateParamSet為模板內(nèi)容里的變量,值為數(shù)組,有多少個(gè)變量就往數(shù)組里填多少個(gè)字符串

  • req.PhoneNumberSet為用戶的手機(jī)號(hào)碼,測(cè)試時(shí)可以填你自己的

修改完以上內(nèi)容之后,就可以觸發(fā)該云函數(shù)給相應(yīng)的手機(jī)號(hào)發(fā)送短信了:

const cloud = require('wx-server-sdk')
const tencentcloud = require("tencentcloud-sdk-nodejs");
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
const config= require("./config/config.js")
const {secretId,secretKey} = config
exports.main = async (event, context) => {
  const smsClient = tencentcloud.sms.v20190711.Client;
  const models = tencentcloud.sms.v20190711.Models;
  const Credential = tencentcloud.common.Credential;
  const ClientProfile = tencentcloud.common.ClientProfile;
  const HttpProfile = tencentcloud.common.HttpProfile;


  let cred = new Credential(secretId,secretKey)
  let httpProfile = new HttpProfile();
  httpProfile.reqMethod = "POST";
  httpProfile.reqTimeout = 30;
  httpProfile.endpoint = "sms.tencentcloudapi.com";
  let clientProfile = new ClientProfile();
  clientProfile.signMethod = "HmacSHA256";
  clientProfile.httpProfile = httpProfile;


  let client = new smsClient(cred, "ap-guangzhou", clientProfile);
  let req = new models.SendSmsRequest();


  req.SmsSdkAppid = "1400364657";
  req.Sign = "HackWeek";
  req.ExtendCode = "";
  req.SenderId = "";
  req.SessionContext = "";
  req.PhoneNumberSet = ["+86185****3"];
  req.TemplateID = "597853";
  req.TemplateParamSet = ["1234","5"];


  client.SendSms(req, function (err, response) {
      if (err) {
          console.log(err);
          return;
      }
      console.log(response.to_json_string());
  });
}

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)