maven依赖包(jdk1.8以上)
<!-- 阿里云 SDK --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.4.6</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dyvmsapi</artifactId> <version>1.2.2</version> </dependency>
import com.alibaba.fastjson.JSONObject; 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 lombok.extern.slf4j.Slf4j; @Slf4j public class SingleCallByTts { //异常产生时间、异常标题 /* * date 电话时间 * eventTitle 电话标题 * calledNumber 被呼叫的电话号码 * playTimes 语音重听次数 * volume 语音音量 * * */ public static boolean callByTts(String date, Object eventTitle, String calledNumber, int playTimes, int volume) throws ClientException { boolean callResult = false; //云通信产品-语音API服务产品名称(产品名固定,无需修改) final String product = "Dyvmsapi"; //产品域名(接口地址固定,无需修改) final String domain = "dyvmsapi.aliyuncs.com"; //AK信息 final String accessKeyId = "LTAIqCyCA3iGSyYE"; // RAM账号的AccessKey ID final String accessKeySecret = "8NJHcqUukg0mMgTz7iCBpPLUdhyvPH"; // RAM账号AccessKey Secret try { //初始化acsClient 暂时不支持多region IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient client = new DefaultAcsClient(profile); // 创建API请求并设置参数 SingleCallByTtsRequest request = new SingleCallByTtsRequest(); request.setRegionId("cn-hangzhou"); //必填-被叫显号 request.setCalledShowNumber("057156028367"); //必填-被叫号码 request.setCalledNumber(calledNumber); // request.setCalledNumber("155xxxxxxxx"); //必填-TTS文本模板Code request.setTtsCode("TTS_178451118"); //替换TTS模板中变量的JSON串 JSONObject jo = new JSONObject(); // LocalDateTime now = LocalDateTime.now(); // DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // String format = now.format(pattern); jo.put("name", eventTitle); jo.put("Date", date); request.setTtsParam(JSONObject.toJSONString(jo)); // request.setTtsParam("{\"name\":\"xxxxx\",\"Date\":\"2019-11-24 15:01:00\"}"); //播放次数(最多3次) request.setPlayTimes(playTimes); //音量0--200 request.setVolume(volume); // request.setSpeed(5); //可选-外部扩展字段,此ID将在回执消息中带回给调用方,预留给调用方使用的ID, 最终会通过在回执消息中将此ID带回给调用方 request.setOutId("abcdefgh"); SingleCallByTtsResponse response = client.getAcsResponse(request); if (response.getCode() != null && response.getCode().equals("OK")) { //请求成功 log.info("语音文本外呼---------------成功"); callResult = true; } else { //请求成功 log.info("语音文本外呼---------------失败"); } //请求ID log.info("RequestId=" + response.getRequestId()); //状态码-返回OK代表请求成功,其他错误码详见错误码列表 log.info("Code=" + response.getCode()); //状态码的描述 log.info("Message=" + response.getMessage()); //调用的回执ID log.info("CallId=" + response.getCallId()); /** * 错误码列表 * OK 请求成功 * isp.RAM_PERMISSION_DENY RAM权限DENY * isv.OUT_OF_SERVICE 业务停机 * isv.PRODUCT_UN_SUBSCRIPT 未开通云通信产品的阿里云客户 * isv.OUT_OF_SERVICE 业务停机 * isv.PRODUCT_UNSUBSCRIBE 产品未开通 * isv.ACCOUNT_NOT_EXISTS 账户不存在 * isv.ACCOUNT_ABNORMAL 账户异常 * isv.TTS_TEMPLATE_ILLEGAL TTS模板不合法 * isv.DISPLAY_NUMBER_ILLEGAL 号显不合法 * isv.TEMPLATE_MISSING_PARAMETERS 文本转语音模板参数缺失 * isv.BLACK_KEY_CONTROL_LIMIT 模板变量中存在黑名单关键字 * isv.INVALID_PARAMETERS 参数异常 * isv.PARAM_NOT_SUPPORT_URL 变量不支持url参数 * isp.SYSTEM_ERROR 系统错误 * isv.MOBILE_NUMBER_ILLEGAL 号码格式非法 * isv.BUSINESS_LIMIT_CONTROL 触发流控 * isv.PARAM_LENGTH_LIMIT 参数长度受限 */ } catch (ServerException e) { e.printStackTrace(); log.error(e.getMessage()); } catch (ClientException e) { log.error("ErrCode:" + e.getErrCode()); log.error("ErrMsg:" + e.getErrMsg()); log.error("RequestId:" + e.getRequestId()); } return callResult; } public static void main(String[] args) throws ClientException { callByTts("2024-12-04 11:30:30", "XXXXXXXX", "18888888888", 2, 10); } }
需要注册一个阿里账户,获取 accessKeyId和accessKeySecret。
还需要获取一个TTS语音模板