前言
今天分享一個SpringBoot整合騰訊雲簡訊的功能,平常除了工作,很多xdm做自己的小專案都可能用到簡訊,但自己去看文件挺費勁的,我這邊就幫你節省時間,直接把步驟給你列出來,照做就行。
實戰
1、申請金鑰及簽名模板
首先,要使用騰訊雲簡訊,你得先在騰訊雲有個賬號,申請金鑰及簽名模板。
1)、找到訪問管理-API金鑰管理,勿洩漏。
2)、簽名及模板
要申請,推薦用公眾號,描述中寫幾句讚美騰訊雲的話,幾分鐘後就可以過審了。
3)、應用SDK APPID
4)、簡訊工具類
應用ID、簽名、模板id都從上面找到後改為自己的就行了。
2、程式碼整合
騰訊雲簡訊官方文件:https://cloud.tencent.com/document/product/382/43194
1)、引入依賴
一般在common模組中引入即可
<!-- 騰訊雲簡訊 -->
<!--請到https://search.maven.org/search?q=tencentcloud-sdk-java查詢所有版本,最新版本如下-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.714</version>
</dependency>
2)、新增properties配置
一般這種第三方接入的配置使用properties較好,和yml配置做區分。金鑰參考前面的說明。
3)、新增配置類
package com.imooc.utils;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@Data
@PropertySource("classpath:tencentCloud.properties")
@ConfigurationProperties(prefix = "tencent.cloud")
public class TencentCloudProperties {
private String secretId;
private String secretKey;
}
4)、簡訊工具類
從官網拷過來修改即可,記得修改其中的應用ID、簽名、模板id。
package com.imooc.utils;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SMSUtils {
@Autowired
private TencentCloudProperties tencentCloudProperties;
public void sendSMS(String phone, String code) throws Exception {
try {
/* 必要步驟:
* 例項化一個認證物件,入參需要傳入騰訊雲賬戶金鑰對secretId,secretKey。
* 這裡採用的是從環境變數讀取的方式,需要在環境變數中先設定這兩個值。
* 你也可以直接在程式碼中寫死金鑰對,但是小心不要將程式碼複製、上傳或者分享給他人,
* 以免洩露金鑰對危及你的財產安全。
* CAM密匙查詢獲取: https://console.cloud.tencent.com/cam/capi
*/
Credential cred = new Credential(tencentCloudProperties.getSecretId(),
tencentCloudProperties.getSecretKey());
// 例項化一個http選項,可選的,沒有特殊需求可以跳過
HttpProfile httpProfile = new HttpProfile();
// httpProfile.setReqMethod("POST"); // 預設使用POST
/*
* SDK會自動指定域名。通常是不需要特地指定域名的,但是如果你訪問的是金融區的服務
* 則必須手動指定域名,例如sms的上海金融區域名: sms.ap-shanghai-fsi.tencentcloudapi.com
*/
httpProfile.setEndpoint("sms.tencentcloudapi.com");
// 例項化一個client選項
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 例項化要請求產品的client物件,clientProfile是可選的
SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
// 例項化一個請求物件,每個介面都會對應一個request物件
SendSmsRequest req = new SendSmsRequest();
String[] phoneNumberSet1 = {
"+86" + phone
}; //電話號碼
req.setPhoneNumberSet(phoneNumberSet1);
req.setSmsSdkAppId("xxx"); // 簡訊應用ID: 簡訊SdkAppId在 [簡訊控制檯] 新增應用後生成的實際SdkAppId
req.setSignName("Java分享XX"); // 簽名
req.setTemplateId("xxx"); // 模板id:必須填寫已稽核透過的模板 ID。模板ID可登入 [簡訊控制檯] 檢視
/* 模板引數(自定義佔位變數): 若無模板引數,則設定為空 */
String[] templateParamSet1 = {
code
};
req.setTemplateParamSet(templateParamSet1);
// 返回的resp是一個SendSmsResponse的例項,與請求物件對應
SendSmsResponse resp = client.SendSms(req);
// 輸出json格式的字串回包
// System.out.println(SendSmsResponse.toJsonString(resp));
}
catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}
5)、測試效果
在服務中寫一個方法測試即可,然後啟動閘道器和user服務,訪問 http://127.0.0.1:8000/u/sms 等一會兒就有簡訊通知了。
@Autowired
private SMSUtils smsUtils;
@GetMapping("sms")
public Object sendSMS() throws Exception {
smsUtils.sendSMS("159xxxxxxxx", "6752");
return "sendSMS OK!";
}
總結
整合第三方的簡訊介面其實很簡單,費時間的主要是申請一些東西,以及閱讀介面文件。
大家如果想省事,按照我的步驟來就行,接入個簡訊功能,也花不了什麼錢。既可以體驗下接入方式,也可以為自己的小專案增加一些亮點。
好了,今天的小知識你學會了嗎?
喜歡請點贊+關注↓↓↓,持續分享乾貨哦~