Java对接阿里云短信服务(保姆级,新手秒会)

一,阿里云部分

登录阿里云搜索短信服务进入控制台,进行下面五个步骤的申请(默认已开通服务)

在这里插入图片描述
1. 申请资质
资质是申请签名的实名化信息,需要提供企业的信息和个人信息
在这里插入图片描述2. 申请签名
签名就是短信的标题,如下图中的【飞书】
要注意,每个带星号的参数都要慎重填写,注意关键信息节点(这里踩过坑,由于填信息不仔细,审核不通过很耽误时间)
在这里插入图片描述
在这里插入图片描述

3. 申请模版
模板就是短信的内容,如下图
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3483a1aaf04d4e00a4e1e6e5797f5573.png
至此,阿里云方面的准备工作算是基本完成了!

注:

  • 短信服务已开通,套餐要有余量
  • 签名要配置好
  • 签名对应的模板配好
  • 接下来是写Java 来对接

二,Java 代码部分

  • 可以点击此链接进入短信接入的文档 点击调试可以生成示例代码(如下图)
    在这里插入图片描述在这里插入图片描述必填参数在这里插入图片描述
    注:
    上面生成的代码太乱,可以使用我下面的代码,整合成短信工具类,将需要的信息改为自己的即可

  • 导入依赖

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>3.0.0</version>
        </dependency>
        
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.0</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>2.1.0</version>
        </dependency>
  • 工具类
public class SmsUtil {

    private static final String ACCESS_KEY_ID = "";//AccessKey自己账号的
    private static final String ACCESS_KEY_SECRET = "";
    private static final String ENDPOINT = "dysmsapi.aliyuncs.com";//固定死
    private static final String SIGNNAME = "";//签名名称
    private static final String TCODE = "";//模版的编号

    public static String  sendSms(String phoneNumbers) throws Exception {

        String code=generateVerificationCode();

        Config config = new Config()
                .setAccessKeyId(ACCESS_KEY_ID)
                .setAccessKeySecret(ACCESS_KEY_SECRET)
                .setEndpoint(ENDPOINT);

        Client client = new Client(config);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setPhoneNumbers(phoneNumbers)
                .setSignName(SIGNNAME)
                .setTemplateCode(TCODE)
                //此处是设计模版的时候预留的变量${code}就验证码,用下面的随机生成4位数字传入
                .setTemplateParam(String.format("{\"code\":\"%s\"}", code));

        try {
            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
            return code;
        } catch (TeaException error) {
            return "失败";
        }
    }


    /**
     * 验证码随机四位
     */
    private static String generateVerificationCode() {
        // 生成四位数字验证码
        Random random = new Random();
        int code = random.nextInt(10000); // 随机生成 0 到 9999 的整数
        return String.format("%04d", code); // 保证生成的是四位数字,不足四位时前面补0
    }
}

  • controller调用
    /**
     * 发送短信
     * @param phone
     * @return
     */
    @RequestMapping("sendCode")
    public ResultVO sendMessage(@RequestParam String phone){
        try {
            String code = SmsUtil.sendSms(phone);
            //使用redis 存起来,过期时间300秒,用于登录时拿出来验证
            redisTemplate.opsForValue().set("yzm"+phone,code,300, TimeUnit.SECONDS);

            return ResultUtil.success("验证码发送成功");
        } catch (Exception e) {
            return ResultUtil.error("验证码发送失败");
        }
    }

完结!!!

实时录音可以通过Java Sound API来实现,同时可以将录音数据传输到阿里云上,实现语音识别等功能。以下是一个简单的示例代码: ```java import javax.sound.sampled.*; import com.aliyun.asr.client.AsrClient; import com.aliyun.asr.client.AsrClientFactory; import com.aliyun.asr.model.StartAsrRequest; import com.aliyun.asr.model.StartAsrResponse; public class RealtimeRecording { public static void main(String[] args) throws Exception { // 创建音频输入流 AudioFormat format = new AudioFormat(16000, 16, 1, true, false); DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info); line.open(format); line.start(); // 创建阿里云语音识别客户端 AsrClient asrClient = AsrClientFactory.getAsrClient(); StartAsrRequest request = new StartAsrRequest(); request.setEnablePunctuation(true); request.setEnableInverseTextNormalization(true); // 开始录音和识别 while (true) { byte[] buffer = new byte[640]; int count = line.read(buffer, 0, buffer.length); if (count > 0) { request.setAudio(buffer); StartAsrResponse response = asrClient.startAsr(request); System.out.println(response.getResult()); } } } } ``` 在这个示例代码中,创建了一个音频输入流,并通过Java Sound API实时录音。然后,创建了一个阿里云语音识别客户端,并在录音过程中不断地将录音数据传输到阿里云进行语音识别。最后,输出识别结果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值