语音通知/语音验证码是指通过电话呼叫的方式向指定号码发送语音通知或对用户身份进行验证的播报,语音通知分为国内语音通知和国际/港澳台语音通知,语音验证码分为国内语音验证码和国际/港澳台语音验证码。本文为您介绍如何使用阿里云OpenAPI开发者门户或阿里云SDK发送语音通知或语音验证码。

背景信息

调用API时,您可以根据API文档了解使用说明,并查询必选的请求参数。发送请求后报错时,您可以在相应API文档中获取说明。

调用方式

准备工作

OpenAPI开发者门户示例

调用API发送语音通知/验证码的流程如下:2
  1. 通过API/SDK上传语音文件
    说明 如需创建文本转语音模板,请参见创建文本转语音模板,文本转语音模板暂不支持通过API接口创建。
  2. 通过QueryVoiceFileAuditInfo查询语音文件审核状态。
    说明 若审核不通过,请查看失败原因后重新上传语音文件。
  3. 根据业务需要调用相应的API接口发起语音通知/语音验证码。
    • 调用SingleCallByVoice,向指定号码发送语音通知文件类型的语音通知。
    • 调用SingleCallByTts,向指定号码发送语音验证码或文本转语音类型的语音通知。
  4. 通过QueryCallDetailByCallId查询语音通知/语音验证码发送详情。

使用语音服务API接口发送语音通知/语音验证码后,您可以通过配置MNS消息队列消费模式和HTTP批量推送模式来接收语音服务的回执消息。更多信息,请参见回执消息简介与配置流程

Java SDK示例

以调用SingleCallByVoice接口为例,为您演示如何通过阿里云SDK调用语音服务API。以下参数需要您根据实际情况自行填写。
  • CalledShowNumber:被叫显号。
    注意
    • 使用公共模式发起语音通知时,CalledShowNumber参数必须为空。
    • 使用专属号码发起语音通知时,CalledShowNumber参数必须为已购买的手机号码。
  • CalledNumber:接收语音通知的手机号码。
  • VoiceCode:语音文件ID。
import com.aliyun.tea.*;
import com.aliyun.dyvmsapi20170525.*;
import com.aliyun.dyvmsapi20170525.models.*;
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_);
        com.aliyun.dyvmsapi20170525.Client client = Sample.createClient("accessKeyId", "accessKeySecret");
        SingleCallByVoiceRequest singleCallByVoiceRequest = new SingleCallByVoiceRequest()
                .setCalledShowNumber("05710000****")
                .setCalledNumber("1861111****");
        // 复制代码运行请自行打印API的返回值
        client.singleCallByVoice(singleCallByVoiceRequest);
    }
}

更多示例,请参见OpenAPI开发者门户

原版SDK的安装流程及代码示例,请参见Java SDK
说明 语音服务原版SDK和API已不再维护。我们强烈推荐您使用新版SDK及配套的API接口