有没有做美食的小视频网站,公司网站建设方案建议,购卡链接网站怎么做,营销型网站郭老师案例分享文章目录 1 前言2 准备工作2.1 了解流程2.2 配置信息 2.3 短信签名和模板2.3.1 签名2.3.2 模板2.3.3 存入数据库 3 SDK4 集成Springboot4.1 集成4.2 测试 5 后记 1 前言
线上系统开发中#xff0c;短信功能是经常要用到的#xff0c;比如注册、修改手机号、修改密码时短信… 文章目录 1 前言2 准备工作2.1 了解流程2.2 配置信息 2.3 短信签名和模板2.3.1 签名2.3.2 模板2.3.3 存入数据库 3 SDK4 集成Springboot4.1 集成4.2 测试 5 后记 1 前言
线上系统开发中短信功能是经常要用到的比如注册、修改手机号、修改密码时短信验证码等。我们这里是一个基于Springboot的微服务项目选择a-li-yun的短信接口。
2 准备工作
2.1 了解流程
登录a-li-yun短信控制台了解短信相关知识。我们这里需要短信发送功能进一步了解相关API。
2.2 配置信息
凭证登录a-li短信控制台通过快速学习我们知道我们需要创建accessKeyaccessKeySecret,即用户的访问凭证具体如何创建这里不赘述自行查阅文档。域名endpoint即我们通过那个地址访问a-li-yun的短信接口。
2.3 短信签名和模板
签名和模板是a-li-yun短信功能所必须的下面讲解下签名和模板的添加。
2.3.1 签名 添加签名一个账户只能添加一个验证码类型的签名我已经添加了一个你们根据需要自行选择图示 添加签名后等待一定时间审核通过即可图示
2.3.2 模板 添加模板 审核不通过原因 场景连接这里场景连接一定要填写公网可访问连接比如你上线的App、网站网址或者你的博客等待的。模板内容如需自定义仔细阅读变量规范、模板申请规范或者直接说使用模板库中预定义模块适当修改文字可满足大部分应用场景。 效果图示
2.3.3 存入数据库
与短信功能相关的签名、模板这些信息保存在数据库的配置表中。 签名效果就是短信开头的【】中的信息开发需要用到签名名称signName。模板效果就是短信的内容开发中需要用到模板名称templateCode其他信息保存在数据库中。
3 SDK
虽然是做了前面的准备工作但是具体怎么应用还是很模糊查阅相关技术文档很多都是旧版本的内容。这里我们还是通过a-li-yun的OpenAPI来学习最新的应用技术这里我们以短信发送为例图示
api参数示例依赖一目了然而且是最新版本的内容下面我们开始集成到项目中。
4 集成Springboot
4.1 集成 pom.xml复制上面依赖信息 dependencygroupIdcom.xxx/groupIdartifactIddysmsapi20170525/artifactIdversion2.0.21/version/dependency分析 短信功能我们项目中多个模块需要用到我们把短信发送功能封装到AliSms类中AliSms配置为IOC容器中的bean位置放置在公共模块中。需要用到的配置信息比如accessKeysecretKey,endpoint,我们在nacos中配置图示 参考官网给出的SDK封装我们自己的AliSms类源码,xxx-a-li-yun import com.xxx.dysmsapi20170525.Client;
import com.xxx.dysmsapi20170525.models.SendSmsRequest;
import com.xxx.dysmsapi20170525.models.SendSmsResponse;
import com.xxx.teautil.models.RuntimeOptions;
import cn.hutool.core.bean.BeanUtil;import java.util.Map;/*** author Administrator* version 1.0* description ali sms* date 2022-09-30 11:19* xxx短信类*/
public class AliSms {private final Client client;private final SendSmsRequest request;public AliSms(Client client, SendSmsRequest request) {this.client client;this.request request;}public MapString, Object sendSms(String templateCode, String templateParam, String phoneNumbers) throws Exception {request.setTemplateCode(templateCode);request.setTemplateParam(templateParam);request.setPhoneNumbers(phoneNumbers);RuntimeOptions runtime new RuntimeOptions();SendSmsResponse response null;try {response client.sendSmsWithOptions(request, runtime);} catch (Exception e) {e.printStackTrace();throw new Exception(短信发送失败);}return BeanUtil.beanToMap(response);}
}import com.xxx.dysmsapi20170525.Client;
import com.xxx.teaopenapi.models.Config;
import com.xxx.dysmsapi20170525.models.SendSmsRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** author Administrator* version 1.0* description sms短信发送* date 2022-10-04 12:50*/
Configuration
public class SmsAutoConfiguration {/*** 短信服务账户accessKey*/Value(${spring.cloud.alicloud.access-key})private String accessKey;/*** 短信服务账户accessKey*/Value(${spring.cloud.alicloud.secret-key})private String secretKey;/*** 短信服务endpoint*/Value(${spring.cloud.alicloud.sms.endpoint})private String endpoint;/*** 短信服务签名*/Value(${spring.cloud.alicloud.sms.signName})private String signName;Beanpublic AliSms aliSms() {return new AliSms(createClient(), sendSmsRequest());}private SendSmsRequest sendSmsRequest() {SendSmsRequest request new SendSmsRequest();request.setSignName(signName);return request;}private Client createClient(){Config config new Config()// 您的 AccessKey ID.setAccessKeyId(accessKey)// 您的 AccessKey Secret.setAccessKeySecret(secretKey);// 访问的域名config.endpoint endpoint;Client client null;try {client new Client(config);} catch (Exception e) {e.printStackTrace();throw new RuntimeException(创建xxx客户端失败);}return client;}}pom.xml添加依赖全部相关依赖 dependencygroupIdcom.xxx/groupIdartifactIddysmsapi20170525/artifactIdversion2.0.21/version/dependencydependencygroupIdcom.xxx/groupIdartifactIdtea-util/artifactIdversion0.2.14/version/dependency4.2 测试
测试代码前端代码及后端接口根据业务需求自己设计这里只展示业务实现层的短信发送方法的简单测试实现
Autowiredprivate AliSms aliSms;Overridepublic void sendSms(Sms sms) {try {log.info(发送短信{}, JSON.toJSONString(sms, true));String templateParam {\code\:\ 123456 \};MapString, Object info aliSms.sendSms(sms.getTemplateCode(), templateParam, sms.getMobile());log.info(发送结果:{}, JSON.toJSONString(info, true));} catch (Exception e) {e.printStackTrace();throw new RuntimeException(发送短信失败);}}测试结果 控制台 {basePath:xxx,description:发送短信,ip:192.168.10.1,method:com.gaogzhen.controller.SmsController.sendSms,parameter:{sms:{countryCode:86,mobile:自己填写的手机号,templateCode:自己的模板CODE}},result:{code:200},spendTime:0,uri:/sms/sendTo,url:xxx,username:1014066909280374785
} 手机截图
5 后记
tips:上述xxx为a-li-yun去掉-卧槽这就涉嫌广告不给审核通过nb 欢迎交流学习下面为联系方式和仓库源代码地址 ❓Q-Q:-806797785- ⭐️源代码仓库地址-gitee.com/gaogzhen/coin-exchange-