通过API/SDK使用语音通知/语音验证码
语音通知/语音验证码是指通过电话呼叫的方式向指定号码发送语音通知或对用户身份进行验证的播报,语音通知分为国内语音通知和国际/港澳台语音通知,语音验证码分为国内语音验证码和国际/港澳台语音验证码。本文为您介绍如何使用阿里云OpenAPI开发者门户或阿里云SDK发送语音通知或语音验证码。
背景信息
调用API时,您可以根据API文档了解使用说明,并查询必选的请求参数。发送请求后报错时,您可以在相应API文档中获取说明。
调用方式
OpenAPI开发者门户示例:如果您经常使用交互式操作界面,或者您是初次使用阿里云产品的开发者用户,可选用此方式。您可以在OpenAPI开发者门户中调试和获取SDK请求示例,详情请参见什么是OpenAPI Explorer。
Java SDK示例:适用于SDK编码场景。使用升级版Java SDK要求您已提前安装Java 8或以上版本,安装详情请参见安装与使用教程。其他编程语言SDK,请参见语音服务SDK。
准备工作
OpenAPI开发者门户示例
调用API发送语音通知/验证码的流程如下:
- 说明
如需创建文本转语音模板,请参见创建文本转语音模板,文本转语音模板暂不支持通过API接口创建。
通过QueryVoiceFileAuditInfo查询语音文件审核状态。
说明若审核不通过,请查看失败原因后重新上传语音文件。
根据业务需要调用相应的API接口发起语音通知/语音验证码。
调用SingleCallByVoice,向指定号码发送语音通知文件类型的语音通知。
调用SingleCallByTts,向指定号码发送语音验证码或文本转语音类型的语音通知。
通过QueryCallDetailByCallId查询语音通知/语音验证码发送详情。
使用语音服务API接口发送语音通知/语音验证码后,您可以通过配置MNS消息队列消费模式和HTTP批量推送模式来接收语音服务的回执消息。更多信息,请参见回执消息简介与配置流程。
Java SDK示例
调用接口前,需配置环境变量,通过环境变量读取访问凭证。AccessKey ID和AccessKey Secret的环境变量名:VMS_AK_ENV 、VMS_SK_ENV。配置详情请参见配置访问凭证。
以调用SingleCallByVoice接口为例,为您演示如何通过阿里云SDK调用语音服务API。以下参数需要您根据实际情况自行填写。
CalledShowNumber:被叫显号。
重要使用公共模式发起语音通知时,CalledShowNumber参数必须为空。
使用专属号码发起语音通知时,CalledShowNumber参数必须为已购买的手机号码。
CalledNumber:接收语音通知的手机号码。
VoiceCode:语音文件ID。
import com.aliyun.dyvmsapi20170525.*;
import com.aliyun.dyvmsapi20170525.models.*;
import com.aliyun.tea.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param AccessKeyId
* @param AccessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.dyvmsapi20170525.Client createClient(
String accessKeyId,
String accessKeySecret
) throws Exception {
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dyvmsapi.aliyuncs.com";
return new com.aliyun.dyvmsapi20170525.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
// 阿里云账号AccessKey ID拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户
// 此处以把AccessKey ID和AccessKey Secret保存在环境变量为例说明。 您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把AccessKey ID和AccessKey Secret保存到代码里,会存在密钥泄漏风险
com.aliyun.dyvmsapi20170525.Client client = Sample.createClient(
System.getenv("VMS_AK_ENV"),
System.getenv("VMS_SK_ENV")
);
SingleCallByVoiceRequest singleCallByVoiceRequest = new SingleCallByVoiceRequest()
.setCalledShowNumber("05710000****")
.setCalledNumber("1861111****")
.setVoiceCode("TTS_100****");
// 复制代码运行请自行打印API的返回值
client.singleCallByVoice(singleCallByVoiceRequest);
}
}
更多示例,请参见OpenAPI开发者门户。