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

2020-07-21 17:55 更新

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

一、開通騰訊云短信服務

1、開通短信服務

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

2、創(chuàng)建應用

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

3、建簽名和正文模板

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

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

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

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

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

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

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

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

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

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

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

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

3、獲取安全憑證

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

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

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

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

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

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

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)容比較多,但是基本都是從騰訊云短信的技術文檔里直接Copy過來的,我們只需要改里面相應的參數(shù)即可,比如

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

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

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

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

  • req.PhoneNumberSet為用戶的手機號碼,測試時可以填你自己的

修改完以上內(nèi)容之后,就可以觸發(fā)該云函數(shù)給相應的手機號發(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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號