結(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)里。
登錄短信控制臺(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)通了。
創(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ì)用到。
國(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ì)用到。
(2)創(chuàng)建正文模板
打開(kāi)左側(cè)菜單里的國(guó)內(nèi)短信-正文模板管理,點(diǎn)擊創(chuàng)建正文模板,創(chuàng)建完模板后,會(huì)有一個(gè)模板ID
,這個(gè)之后會(huì)用到,也要記住你模板的變量位置。
{1}
和{2}
是你要在代碼里傳入的變量,變量的編碼必須是從{1}開(kāi)始,傳入變量時(shí)也要按照順序傳入
在使用云API之前,用戶首先需要在騰訊云控制臺(tái)上申請(qǐng)安全憑證(API密鑰),安全憑證包括 SecretID 和 SecretKey。打開(kāi)騰訊云訪問(wèn)密鑰的API密鑰管理,點(diǎn)擊新建密鑰,就可以創(chuàng)建密鑰了,創(chuàng)建之后,就可以看到 SecretID
和SecretKey
,這兩個(gè)之后會(huì)用到。
API 密鑰是構(gòu)建騰訊云 API 請(qǐng)求的重要憑證,使用騰訊云 API 可以操作你這個(gè)賬號(hào)名下的所有騰訊云資源,一定要妥善保管和定期更新,不要分享給別人或者上傳到網(wǎng)絡(luò)上。
使用開(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ù)即可,比如
SDKAppID
,簽名內(nèi)容
,ID
,修改完以上內(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());
});
}
更多建議: