目录
- 一、准备工作
- 1.开通 阿里云语音服务
- 2.申请企业资质
- 3.创建语音通知模板,审核通过
- 4.调用API接口---SingleCallByTts
- 5.调试API接口---SingleCallByTts
- 二、代码实现
- 1.导入依赖 com.aliyun:aliyun-java-sdk-dyvmsapi:3.0.2
- 2.创建工具类,用于发送语音通知
- 3.在你的业务逻辑中调用AliyunVoiceClientUtil 发送语音通知。
- 三、完整代码
一、准备工作
- 注册阿里云账号并完成企业实名认证。
- 已开通语音服务。
- 申请企业资质并审核通过。
- 若选用专属模式外呼则需要真实号管理;
若选用公共模式外呼(推荐使用)
,由阿里云提供统一的号码池,您无需自行购买号码 - 创建语音通知模板
- 调用API接口前,您可以根据API文档了解接口说明,并查询必选的请求参数。发送请求后报错时,您可以在相应API文档中获取说明
1.开通 阿里云语音服务
登录阿里云官网,选择产品 > 企业服务与云通信 > 语音服务:
单击立即开通(语音服务开通):
2.申请企业资质
语音服务 开通 之后,申请企业资质:
3.创建语音通知模板,审核通过
4.调用API接口—SingleCallByTts
SingleCallByTts
5.调试API接口—SingleCallByTts
SingleCallByTts
二、代码实现
SingleCallByTts:发送 文本转语音
类型的语音通知
1.导入依赖 com.aliyun:aliyun-java-sdk-dyvmsapi:3.0.2
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.2.5</version>
</dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dyvmsapi</artifactId><version>3.0.2</version>
</dependency>
2.创建工具类,用于发送语音通知
package com.example.notificationdemo.util;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 lombok.extern.slf4j.Slf4j;/*** 阿里云 语音通话 --- 根据文本转语音模板进行语音通话* @author qzz* @date 2024/6/14*/
@Slf4j
public class AliyunVoiceClientUtil {private String accessKeyId = "你的阿里云Key";private String accessKeySecret = "你的阿里云Secret";/*** 语音通话到某个用户* @param phoneNumber 被叫号码* @param ttsParam 语音模板中的变量参数---请按模版参数有序存入* @param ttsCode Tts模板ID* @return*/public SingleCallByTtsResponse sendSingleCallToUser(String phoneNumber, String ttsCode, String ttsParam, String outId) throws ClientException {//1.初始化acsClient实例 暂时不支持多regionDefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dyvmsapi", "dyvmsapi.aliyuncs.com");IAcsClient acsClient = new DefaultAcsClient(profile);//2.创建请求并设置参数SingleCallByTtsRequest request = new SingleCallByTtsRequest();//必填-被叫号码request.setCalledNumber(phoneNumber);//必填-Tts模板IDrequest.setTtsCode(ttsCode);//语音模板中的变量参数 示例:{"name":"123456","rainfall":50}request.setTtsParam(ttsParam);//可选-音量 取值范围 0--100 默认取值 100request.setVolume(100);//可选-播放次数 默认取3request.setPlayTimes(3);//可选-语音通话的语速。取值范围为:-500~500request.setSpeed(5);//可选-外部扩展字段,此ID将在回执消息中带回给调用方request.setOutId(outId);//3.发送请求并获取响应SingleCallByTtsResponse singleCallByTtsResponse = acsClient.getAcsResponse(request);if(singleCallByTtsResponse.getCode() != null && singleCallByTtsResponse.getCode().equals("OK")) {//请求成功log.info("processing sendCVoice success!RequestId = %s , Code = %s , phone = %s",singleCallByTtsResponse.getRequestId(), singleCallByTtsResponse.getCode(), phoneNumber);}return singleCallByTtsResponse;}
}
3.在你的业务逻辑中调用AliyunVoiceClientUtil 发送语音通知。
package com.example.notificationdemo.controller;import com.aliyuncs.exceptions.ClientException;
import com.example.notificationdemo.util.AliyunVoiceClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author qzz* @date 2024/6/14*/
@RestController
public class TestController {@Autowiredprivate AliyunVoiceClientUtil aliyunVoiceClientUtil;/*** 发送语音通话* @param phoneNumber 被叫手机号* @param ttsCode Tts模板ID* @param ttsParam 语音模板中的变量参数---请按模版参数有序存入* @param outId 可选-外部扩展字段,此ID将在回执消息中带回给调用方* @return*/@PostMapping(value = "/api/{version}/send/single-call/")public void sendSingleCall(@RequestParam("phoneNumber") String phoneNumber, @RequestParam("ttsCode") String ttsCode,@RequestParam("ttsParam") String ttsParam,@RequestParam(value = "outId", required = false) String outId) throws ClientException {aliyunVoiceClientUtil.sendSingleCallToUser(phoneNumber,ttsCode,ttsParam,outId);}
}
注意:
使用 accessKeyId、accessKeySecret 需要 授权 管理语音服务(VMS)的权限
三、完整代码
可点击此处下载