阿里云短信接入服务

阿里云短信服务

比如验证码

阿里云短信接入官方文档

自己项目的码云地址

一、了解阿里云用户权限操作

image-20210826232918130

1. 登录阿里云,点击头像看到获取AccessKey

image-20210826233540342

2. 使用子账号可以自己设置:

3. 创建用户组

image-20210826234150045

4. 配置用户组权限(sms)

image-20210826234414734

image-20210826234518512

5. 创建用户

image-20210826234711938

​ 创建了用户将用户添加到用户组

6. 得到用户的AccessKey(id,密码)

一定要把这个账号保存下来!!!!之后各种微服务都要用到这个账号!!!!

image-20210826235943566

二、开通阿里云短信服务

1、阿里云搜索短信服务,进入短信服务控制台,开通短信服务

image-20210827000505504

短信发送频率:

image-20210827001119226

2、找到帮助文档


三、添加短信模板

短信的具体内容

等待审核通过(需要正当理由)

image-20210827002039991


四、添加签名(也就是短信开头那个)

image-20210827002707900


五、编写测试代码

此时已经拿到授权码,短信服务,短信模板,短信签名

控制台的快速学习中有默认的demo:

image-20210827003720723

安装使用SDK

Java SDK 文档

六、编写可复用的微服务接口,实现验证码的发送

demo

1. 新建一个springboot的项目,导入依赖

    <!--导入依赖-->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.0.3</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.75</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

2. 测试短信服务

    // 连接阿里云,有三个参数
    // 1.地区  一般不变   2.accsessKey账号替换   3.账号的密码!  自己去阿里云找自己的账号密码
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
    //构建一个客户端
    IAcsClient client = new DefaultAcsClient(profile);

    //构建一个请求!
    CommonRequest request = new CommonRequest();
    request.setMethod(MethodType.POST);
    request.setDomain("dysmsapi.aliyuncs.com");  //不要动
    request.setVersion("2017-05-25");    //不要动
    request.setAction("sendSms");   //自定义

    //自定义的参数(手机号,验证码,签名,模板)
    //        request.putQueryParameter("RegionId","cn-hangzhou");  
    request.putQueryParameter("phoneNumbers", "手机号");   //这里的手机号是接受短信的对象
    request.putQueryParameter("signName", "阿里云对应的签名名称写在这里");
    request.putQueryParameter("TemplateCode", "阿里云模板对应的Code写在这里");
    //构建一个短信验证码
    HashMap<String, Object> map = new HashMap<>();
    map.put("code", 2233);
    request.putQueryParameter("TemplateParam", JSON.toJSONString(map));

    try {
        CommonResponse response = client.getCommonResponse(request);   //发送
        System.out.println(response.getData());  //响应
    } catch (ServerException e) {
        e.printStackTrace();
    } catch (ClientException e) {
        e.printStackTrace();
    }

3. 真实业务

1. 创建业务文件夹

image-20210901215542448

2. 创建接口SendSms
public interface SendSms {
    //要传进来一个手机号,模板号,还有随机生成的验证码
    public boolean send(String phoneNum, String templateCode, Map<String, Object> code);
}

3. 封装SendSms的实现类
@Service
public class SendSmsImpl implements SendSms {
    @Override
    public boolean send(String phoneNum, String templateCode, Map<String, Object> code) {
        // 连接阿里云,有三个参数
        // 1.地区  一般不变   2.accsessKey账号替换   3.账号的密码!  自己去阿里云找自己的账号密码
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "密码");
        //构建一个客户端
        IAcsClient client = new DefaultAcsClient(profile);

        //构建一个请求!
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");  //不要动
        request.setVersion("2017-05-25");    //不要动
        request.setAction("sendSms");   //自定义

        //自定义的参数(手机号,验证码,签名,模板)
//        request.putQueryParameter("RegionId","cn-hangzhou");
        request.putQueryParameter("phoneNumbers", phoneNum);   //这里的手机号是接受短信的对象
        request.putQueryParameter("signName", "阿里云对应的签名名称写在这里");
        request.putQueryParameter("TemplateCode", templateCode);
        request.putQueryParameter("TemplateParam", JSON.toJSONString(code));

        try {
            CommonResponse response = client.getCommonResponse(request);   //发送
            System.out.println(response.getData());  //响应
            return response.getHttpResponse().isSuccess();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return false;
    }
}
4. 接口:模拟真实测试:springboot集成redis

在application.properties配置redis后,打开本地redis的服务

srever.port=9000

spring.redis.host=127.0.0.1
spring.redis.port=6379
接口:
package com.sms.controller;

import com.sms.service.SendSms;
import io.netty.util.internal.StringUtil;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.swing.text.html.HTMLDocument;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

/**
 * @author 蒋二妹
 * @DATE 2021/9/1 - 22:06
 */
@RestController
@CrossOrigin     //跨域支持
public class SmsApiController {

    @Autowired
    private SendSms sendSms;
    
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send/{phone}")
    public String code(@PathVariable("phone") String phone){
        //调用发送方法(模拟真实测试:springboot集成redis)
        //通过手机号获取redis中是否存储过验证码,如果还有则没有过期,没有就重新生成存储进redis
        String code = redisTemplate.opsForValue().get(phone);
        if (StringUtils.isEmpty(code)) {
            return phone + ":" + code + "已存在,还没有过期";
        }
        
        //重新生成验证码并存储到redis
        code = UUID.randomUUID().toString().substring(0, 4);
        HashMap<String, Object> param = new HashMap<>();
        param.put("code", code);
        
        boolean isSend = sendSms.send(phone, "需要使用的模板code", param);
        
        if (isSend) {
            redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);
            return phone + ":" + code + "发送成功!";
        }else {
            return "发送失败!";
        }
    }
}

4. 启动启动类测试即可

localhost:9000/13511299999 回车查看返回字符串,此时手机也收到了一条短信验证码

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 单片机接入阿里云服务器的方式可以通过UDP连接实现。首先,单片机需要有一个网络模块,例如ESP8266或者W5500等,具备UDP通信功能,并支持与阿里云服务器建立连接。其次,需要在阿里云服务器上配置相应的网络设置,如公网IP地址和开放UDP端口等。接下来,单片机需要通过编程控制网络模块,与阿里云服务器建立UDP连接。 在单片机的代码中,首先需要初始化网络模块,并配置网络参数,例如设置阿里云服务器的IP地址和UDP端口号等。然后,通过网络模块的API函数,建立与阿里云服务器的UDP连接。在连接建立后,单片机可以通过发送UDP数据包的方式与阿里云服务器进行通信。例如,可以通过定时发送数据包的方式,将传感器采集到的数据发送给阿里云服务器进行处理。 在阿里云服务器端,可以使用相应的服务来接收和处理单片机发送的UDP数据包。例如,可以使用阿里云提供的IoT平台或者云服务器搭建的应用程序等,接收UDP数据包并进行相应的处理。处理过程中,可以对接收到的数据进行解析、存储、分析等操作。同时,也可以通过UDP连接向单片机发送相应的指令或者数据,与单片机进行双向通信。 总之,通过UDP连接,单片机可以实现与阿里云服务器的通信,从而实现数据的传输和处理。这样可以将单片机的功能扩展到云端,实现更加灵活和强大的应用。 ### 回答2: 要将单片机接入UDP连接阿里云服务器,需要进行以下步骤: 1. 配置阿里云服务器:首先,需要在阿里云上创建一个服务器实例,并获得服务器的公网IP地址、端口号和登录凭证(用户名和密码)。 2. 单片机网络配置:将单片机与网络连接,分配一个合适的IP地址。可以使用以太网模块或Wi-Fi模块实现连接。 3. 编写单片机程序:使用单片机开发工具,如Keil等,编写程序以实现UDP连接功能。需要使用相应的库函数,如lwIP库等。 4. 连接服务器:使用单片机的网络接口,建立与阿里云服务器的UDP连接。通过指定服务器的IP地址和端口号,单片机可以与服务器进行通信。 5. 发送和接收数据:可以在程序中定义需要发送和接收的数据格式。根据需要,选择发送和接收指定的信息。 6. 数据处理:对于接收到的数据,单片机可以进行相应的处理,如解析数据、执行控制指令等。 7. 错误处理和调试:进行错误处理和调试,确保单片机与阿里云服务器之间的通信可靠性和稳定性。 总之,将单片机连接到UDP阿里云服务器需要进行网络配置和编写程序,建立连接,发送和接收数据,并进行相应的数据处理和调试。这样,单片机就能够接入UDP连接阿里云服务器,并与服务器进行通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值