Skip to content
On this page

sms 短信

基本介绍

  • 短信服务(Short Message Service)

    短信服务是广大企业客户快速触达手机用户所优选使用的通信能力。调用 API 或用群发助手,即可发送验证码、通知类和营销类短信。

  • 短信模版(TemplateId)

    使用短信服务首先都需要创建短信模板提交审核,这样可以防止不法分子通过云服务商提供的短信服务实施短信诈骗。

  • 短信签名(SignName)

    短信末尾会附上签名以识别此条短信是由谁发送,这样可以令用户对短信来源有一个明确的印象。

  • 地域(RegionId)

    地域表示 SMS 的数据中心所在物理位置。可以根据费用、请求来源等选择合适的地域,一般是阿里云短信配置。

  • 访问密钥(AccessKey)

    AccessKey 简称 AK,指的是访问身份验证中用到的 AccessKey ID 和 AccessKey Secret。SMS 通过使用 AccessKey ID 和 AccessKey Secret 对称加密的方法来验证某个请求的发送者身份。AccessKey ID 用于标识用户;AccessKey Secret 是用户用于加密签名字符串和 SMS 用来验证签名字符串的密钥,必须保密。关于获取 AccessKey 的方法

推荐使用资源服务中的动态 sms 使用方式

引入依赖

目前 cbb 提供的 cbb-starter-sms 集成了四种 sms,分别为:云片 sms、阿里云 sms、七牛 sms、腾讯 sms

cbb-starter-sms 开放了统一接口,大家可以依葫芦画瓢模仿集成其他所需要的 sms

引入格式为 cbb-starter-sms 与对应的 sms 依赖

引入阿里云 sms 依赖

txt
<!--Sms-->
<dependency>
  <groupId>com.aea</groupId>
  <artifactId>cbb-starter-sms</artifactId>
</dependency>
<!--AliSms-->
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
</dependency>

配置 SMS

java
sms:
	# 是否开启sms配置
  enabled: true
	# 具体开启的sms类型,阿里云sms为aliyun
  name: aliyun
	# sms审核通过的短信模板
  template-id: SMS_xxxx
	# sms审核通过的短信签名
  sign-name: xxxxx
	# sms审核通过的短信签名
  access-key: xxxxxxx
	# sms审核通过的短信签名
  secret-key: xxxxxxx
	# sms审核通过的短信签名
  region-id: cn-hangzhou

如何使用

创建一个 Controller,注入 SmsTemplate

java
@RestController
@AllArgsConstructor
public class SmsController {

    private final SmsTemplate smsTemplate;
		//private final AliSmsTemplate smsTemplate;

    @PostMapping("send-message")
    public SmsResponse sendMessage(String phone) {
        Map<String, String> param = Kv.newMap();
        param.put("code", "xxxx");
        SmsData smsData = new SmsData(param).setKey("code");
        return smsTemplate.sendMessage(smsData, Collections.singleton(phone));
    }
}

提示 ⚠️

如果后续会更换 sms,推荐注入 SmsTemplate,这样后续修改实现也不需要再修改代码