Springboot项目调用阿里云语音服务案例【真实有用】

1、首先去阿里云官网申请语音服务, 拿到AK权限(这里看官方操作流程就好了 ),这里我们使用的是文字模板转语音提醒的功能(官方的案例是拿语音文件进行语音提醒),定义好模板里面的参数 ${param}

Springboot项目调用阿里云语音服务案例【真实有用】_第1张图片

2、导入以下Maven依赖
<dependency>
    <groupId>com.aliyungroupId>
    <artifactId>aliyun-java-sdk-dyvmsapiartifactId>
    <version>1.2.2version>
dependency>
3、在yml文件中写自己的阿里云AK参数(前三个参数基本上都差不多的, 除了最后两个)
oss:
  product: Dyvmsapi
  domain: dyvmsapi.aliyuncs.com
  endpoint: http://oss-cn-hangzhou.aliyuncs.com
  accessKeyId: XXXXXXXXXXXXX
  accessKeySecret: XXXXXXXXXXXXXXXXX
4、Java调用阿里云语音服务接口的代码
/**
 * 语音拨号API
 *
 * @author shiwen
 * @date 2020/9/14
 */
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.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * 阿里云语音服务调用接口 - 根据文本模板来进行语音通知
 */
@Configuration
public class VoiceNotificationApi {

    @Value("${oss.product}")
    private String product;
    @Value("${oss.domain}")
    private String domain;
    @Value("${oss.accessKeyId}")
    private String accessKeyId;
    @Value("${oss.accessKeySecret}")
    private String accessKeySecret;

    /**
     * 调用阿里云语音服务的方法
     *    当address为空的时候, 就说明不是采用面对面咨询的方式
     *    使用GeneralUtil.isNotNullAndEmpty(address)判断
     *
     * @return
     * @throws ClientException
     */
    public SingleCallByTtsResponse sendCVoice(String phone, String visitorName, String address) throws ClientException{
        //设置访问超时时间
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
        //初始化acsClient 暂时不支持多region
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);
        SingleCallByTtsRequest request = new SingleCallByTtsRequest();
        //必填-被叫显号,可在语音控制台中找到所购买的显号
        request.setCalledShowNumber("XXXXXXXXXX");
        //必填-被叫号码
        request.setCalledNumber(phone);
        //必填-Tts模板ID
        request.setTtsCode("XXXXXXXXXXXXXXXX");
        // 这里主要是填写我们语音文字模板里面的参数 ${param}
        request.setTtsParam("{\"visitorName\":\"" + visitorName +"\", \"address\":\"" + address + "\"}");
        //可选-音量 取值范围 0--200
        request.setVolume(200);
        //可选-播放次数
        request.setPlayTimes(2);
        //可选-外部扩展字段,此ID将在回执消息中带回给调用方
        SingleCallByTtsResponse singleCallByTtsResponse = acsClient.getAcsResponse(request);
        if(singleCallByTtsResponse.getCode() != null && singleCallByTtsResponse.getCode().equals("OK")) {
            //请求成功
            LogUtil.info("processing sendCVoice success!RequestId = %s , Code = %s , phone = %s",
                    singleCallByTtsResponse.getRequestId(), singleCallByTtsResponse.getCode(), phone);
        }
        return singleCallByTtsResponse;
    }

}

你可能感兴趣的:(SpringBoot,阿里云服务,阿里云语音服务)