<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
<version>1.0.0</version>
</dependency>
public class VmsUtil {
private static final Logger log = LoggerFactory.getLogger(VmsUtil.class);
private static VmsUtil instance;
@Autowired
private static SystemRunningLogRepository systemRunningLogRepository;
private VmsUtil() {
}
public static VmsUtil getInstance() {
if (instance == null) instance = new VmsUtil();
return instance;
}
//产品名称:云通信语音API产品,开发者无需替换
static final String product = "Dyvmsapi";
//产品域名,开发者无需替换
static final String domain = "dyvmsapi.aliyuncs.com";
//此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = AliyunInfo.AccessKeyId;
static final String accessKeySecret = AliyunInfo.AccessSecretKey;
/**
* 单次呼叫
* @param phoneNumber
* @param voiceTemplateCode
*/
public static void excuteCall(String phoneNumber, String voiceTemplateCode) {
try {
if (StringUtils.isNotEmpty(phoneNumber)) {
singleCallByTts(phoneNumber, voiceTemplateCode);
}
} catch (ClientException e) {
SystemRunningLog systemRunningLog = new SystemRunningLog();
systemRunningLog.setOccurTime(Instant.now());
systemRunningLog.setActivated(true);
String content = "语音呼叫失败:" + e.getErrMsg();
systemRunningLog.setContent(content);
systemRunningLog.setDescription(e.getErrorDescription());
systemRunningLogRepository.save(systemRunningLog);
}
}
/**
* 批量呼叫
* @param phoneList
* @param voiceTemplateCode
*/
public static void batchExcuteCall(List<String> phoneList, String voiceTemplateCode) {
if(phoneList.isEmpty()){
return;
}
for (String phoneNumber : phoneList) {
excuteCall(phoneNumber, voiceTemplateCode);
}
}
/**
* 文本转语音外呼
*
* @return
* @throws ClientException
*/
public static SingleCallByTtsResponse singleCallByTts(String phoneNumber, String voiceTemplateCode) throws ClientException {
//设置访问超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile(AliyunInfo.RegionId, accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint(AliyunInfo.RegionId, AliyunInfo.RegionId, product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SingleCallByTtsRequest request = new SingleCallByTtsRequest();
//必填-被叫显号,可在语音控制台中找到所购买的显号
request.setCalledShowNumber(AliyunInfo.CalledShowNumber);
//必填-被叫号码
request.setCalledNumber(phoneNumber);
//必填-Tts模板ID
request.setTtsCode(voiceTemplateCode);
//可选-当模板中存在变量时需要设置此值
request.setTtsParam("{\"name\":\"test\"}");
//可选-外部扩展字段,此ID将在回执消息中带回给调用方
request.setOutId("yourOutId");
//hint 此处可能会抛出异常,注意catch
SingleCallByTtsResponse singleCallByTtsResponse = acsClient.getAcsResponse(request);
return singleCallByTtsResponse;
}
}