阿里云语音电话工具类

package cc.mrbird.febs.common.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dyvmsapi.model.v20170525.SingleCallByTtsRequest;
import com.aliyuncs.dyvmsapi.model.v20170525.SingleCallByTtsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Supplier;


/**
 * @author :qying
 * @date :Created in 2021/5/19 11:02
 * @description:阿里语音通知工具类
 * @modified By:`
 * @version: 1.0
 */
@Slf4j
public class AliyunVoiceUtils {

    public static void main(String[] args) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "AccessKeyID", "AccessKeySecret");
        IAcsClient client = new DefaultAcsClient(profile);

        SingleCallByTtsRequest request = new SingleCallByTtsRequest();
        request.setRegionId("cn-hangzhou");
        request.setEndpoint("dyvmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setCalledNumber("18888888888");  // 呼叫手机号
        request.setTtsCode("TTS_21724qwqw2");  // 模板ID
        request.setTtsParam("{     \"device\": \"烟雾传感器\" }"); // 模板参数  json字符串
        request.setPlayTimes(2);
        request.setSpeed(0);
        try {
            SingleCallByTtsResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }

    /**
     * @ClassName  语音呼叫
     * @Description
     * managerPhone 手机号  device :设备名
     * @author qying
     * @date 2021/5/19 \
     */
    public static void singleCallByTts(Map<String, Object> map, String managerPhone, String device,String TtsCode) throws ClientException {
        List<String> list = Arrays.asList(managerPhone.split(StringPool.COMMA));
        if(list.size()>0){
            for (String phone:list) {
                DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",  String.valueOf(map.get("AccessKeyID")), String.valueOf(map.get("AccessKeySecret")));
                IAcsClient client = new DefaultAcsClient(profile);

                SingleCallByTtsRequest request = new SingleCallByTtsRequest();
                request.setRegionId("cn-hangzhou");
                request.setEndpoint("dyvmsapi.aliyuncs.com");
                request.setVersion("2017-05-25");
                request.setCalledNumber(phone);
                request.setTtsCode(TtsCode);
                request.setTtsParam("{     \"device\": \""+device+"\" }");
                request.setPlayTimes(2);
                request.setSpeed(0);
                SingleCallByTtsResponse singleCallByTtsResponse = client.getAcsResponse(request);
                if (singleCallByTtsResponse.getCode() != null && singleCallByTtsResponse.getCode().equals("OK")) {
                    //请求成功
                    log.info("请求成功");
                } else {
                    log.info("语音呼叫失败,code{}", singleCallByTtsResponse.getCode());
                    if (singleCallByTtsResponse.getCode().equals("isv.BUSINESS_LIMIT_CONTROL")) {
                        log.info("流控限制,3分钟后重试");
                        ExecutorService executor = Executors.newFixedThreadPool(2);
                        //jdk1.8之前的实现方式
                        CompletableFuture<String> future = CompletableFuture.supplyAsync(new Supplier<String>() {
                            @Override
                            public String get() {
                                int state = 0;
                                try {
                                    ThreadSleepMSG(map, phone,device,TtsCode);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                                return "语音重新呼叫成功,数量:"+state;
                            }
                        }, executor);

                    }
                }
            }
        }
    }

    private static void ThreadSleepMSG(Map<String, Object> map, String phone, String tailNumber,String TtsCode){
        try {
            Thread.sleep(3 * 60 * 1000L);
            singleCallByTts(map, phone, tailNumber,TtsCode);
        }catch (Exception e){
           e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
根据引用\[1\]中的阿里云短信服务官方文档,您可以通过以下步骤来创建一个阿里云发送短信的工具类: 1. 开通阿里云账号并登录,然后申请一个子权限账户,并授予该账户短信服务管理的权限。 2. 在短信服务控制台中申请签名和模板,具体的规则可以参考审核标准。 3. 根据短信接收对象的不同,选择相应的签名和模板。 4. 调用阿里云短信服务的接口来发送短信。 在编写工具类时,您可以使用引用\[2\]中提供的阿里云短信依赖,即aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi。您可以在您的项目中添加这两个依赖,并按照官方文档提供的示例代码来调用阿里云短信服务的接口。 如果您需要同时向多个不同的手机号码发送不同签名的短信,可以参考引用\[3\]中的文档,该文档提供了相关的参考信息。 请注意,以上是一个简要的概述,具体的实现细节和代码编写需要根据您的具体需求和项目环境进行调整。建议您参考阿里云短信服务的官方文档和示例代码来完成您的工具类的编写。 #### 引用[.reference_title] - *1* *3* [阿里云短信服务工具类](https://blog.csdn.net/qq_40147276/article/details/93724745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【阿里云】短信服务 无认证 测试版本 附带短信发送工具类](https://blog.csdn.net/SPX113/article/details/125862420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿邱先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值