智能外呼
本文为您介绍了如何调用SmartCall接口发起智能语音交互通话。
功能介绍
智能语音交互通话支持使用控制台预设的机器人话术,或在每轮通话中通过回调接口返回业务方设置的回应方式。接口SmartCall需要和智能语音交互呼出回调HTTP接口联合使用,语音平台发起呼叫后,会把转换后的语音文本回传给业务方,业务方把下一步的执行动作返回给语音平台。
准备工作
调用API实现智能外呼功能之前,您需要完成以下操作:
提交企业资质。具体操作,请参见提交企业资质。
购买语音号码。具体操作,请参见购买号码。
获取AccessKey信息。详情请参见获取AccessKey。
完成本地SDK环境搭建。详情请参见安装SDK。
已在服务开通页面开通智能外呼ASR,并在订阅回执消息页面开启智能外呼ASR实时交互。详情请参见回调接口说明和智能外呼回调HTTP接口。
代码示例
本示例展示了调用SmartCall接口,实现智能语音交互通话功能。接口详情,请参见SmartCall。
如果您需要进行调试,请参见使用OpenAPI Explorer。
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
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");
SmartCallRequest smartCallRequest = new SmartCallRequest()
.setCalledShowNumber("05710000****")
.setCalledNumber("1580000****")
.setVoiceCode("3355eedd-3706-4f75-bff9-e645e88e****.wav")
.setRecordFlag(false);
// 复制代码运行请自行打印 API 的返回值
client.smartCall(smartCallRequest);
}
}
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dyvmsapi20170525.client import Client as Dyvmsapi20170525Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dyvmsapi20170525 import models as dyvmsapi_20170525_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> Dyvmsapi20170525Client:
"""
使用AK&SK初始化账号Client
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# 您的AccessKey ID,
access_key_id=access_key_id,
# 您的AccessKey Secret,
access_key_secret=access_key_secret
)
# 访问的域名
config.endpoint = 'dyvmsapi.aliyuncs.com'
return Dyvmsapi20170525Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client('accessKeyId', 'accessKeySecret')
smart_call_request = dyvmsapi_20170525_models.SmartCallRequest(
called_show_number='05710000****',
called_number='1580000****',
voice_code='3355eedd-3706-4f75-bff9-e645e88e****.wav',
record_flag=False
)
# 复制代码运行请自行打印 API 的返回值
client.smart_call(smart_call_request)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client('accessKeyId', 'accessKeySecret')
smart_call_request = dyvmsapi_20170525_models.SmartCallRequest(
called_show_number='05710000****',
called_number='1580000****',
voice_code='3355eedd-3706-4f75-bff9-e645e88e****.wav',
record_flag=False
)
# 复制代码运行请自行打印 API 的返回值
await client.smart_call_async(smart_call_request)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
// This file is auto-generated, don't edit it. Thanks.
package main
import (
"os"
dyvmsapi20170525 "github.com/alibabacloud-go/dyvmsapi-20170525/v2/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/client"
"github.com/alibabacloud-go/tea/tea"
)
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *dyvmsapi20170525.Client, _err error) {
config := &openapi.Config{
// 您的AccessKey ID
AccessKeyId: accessKeyId,
// 您的AccessKey Secret
AccessKeySecret: accessKeySecret,
}
// 访问的域名
config.Endpoint = tea.String("dyvmsapi.aliyuncs.com")
_result = &dyvmsapi20170525.Client{}
_result, _err = dyvmsapi20170525.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient(tea.String("accessKeyId"), tea.String("accessKeySecret"))
if _err != nil {
return _err
}
smartCallRequest := &dyvmsapi20170525.SmartCallRequest{
CalledShowNumber: tea.String("05710000****"),
CalledNumber: tea.String("1580000****"),
VoiceCode: tea.String("3355eedd-3706-4f75-bff9-e645e88e****.wav"),
RecordFlag: tea.Bool(false),
}
// 复制代码运行请自行打印 API 的返回值
_, _err = client.SmartCall(smartCallRequest)
if _err != nil {
return _err
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}
<?php
// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Dyvmsapi;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SmartCallRequest;
class Sample {
/**
* 使用AK&SK初始化账号Client
* @param string $accessKeyId
* @param string $accessKeySecret
* @return Dyvmsapi Client
*/
public static function createClient($accessKeyId, $accessKeySecret){
$config = new Config([
// 您的AccessKey ID
"accessKeyId" => $accessKeyId,
// 您的AccessKey Secret
"accessKeySecret" => $accessKeySecret
]);
// 访问的域名
$config->endpoint = "dyvmsapi.aliyuncs.com";
return new Dyvmsapi($config);
}
/**
* @param string[] $args
* @return void
*/
public static function main($args){
$client = self::createClient("accessKeyId", "accessKeySecret");
$smartCallRequest = new SmartCallRequest([
"calledShowNumber" => "05710000****",
"calledNumber" => "1580000****",
"voiceCode" => "3355eedd-3706-4f75-bff9-e645e88e****.wav",
"recordFlag" => false
]);
// 复制代码运行请自行打印 API 的返回值
$client->smartCall($smartCallRequest);
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
Sample::main(array_slice($argv, 1));
// This file is auto-generated, don't edit it. Thanks.
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;
namespace AlibabaCloud.SDK.Sample
{
public class Sample
{
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static AlibabaCloud.SDK.Dyvmsapi20170525.Client CreateClient(string accessKeyId, string accessKeySecret)
{
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
// 您的AccessKey ID
AccessKeyId = accessKeyId,
// 您的AccessKey Secret
AccessKeySecret = accessKeySecret,
};
// 访问的域名
config.Endpoint = "dyvmsapi.aliyuncs.com";
return new AlibabaCloud.SDK.Dyvmsapi20170525.Client(config);
}
public static void Main(string[] args)
{
AlibabaCloud.SDK.Dyvmsapi20170525.Client client = CreateClient("accessKeyId", "accessKeySecret");
AlibabaCloud.SDK.Dyvmsapi20170525.Models.SmartCallRequest smartCallRequest = new AlibabaCloud.SDK.Dyvmsapi20170525.Models.SmartCallRequest
{
CalledShowNumber = "05710000****",
CalledNumber = "1580000****",
VoiceCode = "3355eedd-3706-4f75-bff9-e645e88e****.wav",
RecordFlag = false,
};
// 复制代码运行请自行打印 API 的返回值
client.SmartCall(smartCallRequest);
}
}
}
// This file is auto-generated, don't edit it
import Dyvmsapi20170525, * as $Dyvmsapi20170525 from '@alicloud/dyvmsapi20170525';
// 依赖的模块可通过下载工程中的模块依赖文件或右上角的获取 SDK 依赖信息查看
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import * as $tea from '@alicloud/tea-typescript';
export default class Client {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
static createClient(accessKeyId: string, accessKeySecret: string): Dyvmsapi20170525 {
let config = new $OpenApi.Config({
// 您的AccessKey ID
accessKeyId: accessKeyId,
// 您的AccessKey Secret
accessKeySecret: accessKeySecret,
});
// 访问的域名
config.endpoint = "dyvmsapi.aliyuncs.com";
return new Dyvmsapi20170525(config);
}
static async main(args: string[]): Promise<void> {
let client = Client.createClient("accessKeyId", "accessKeySecret");
let smartCallRequest = new $Dyvmsapi20170525.SmartCallRequest({
calledShowNumber: "05710000****",
calledNumber: "1580000****",
voiceCode: "3355eedd-3706-4f75-bff9-e645e88e****.wav",
recordFlag: false,
});
// 复制代码运行请自行打印 API 的返回值
await client.smartCall(smartCallRequest);
}
}
Client.main(process.argv.slice(2));
执行结果
正常返回结果如下所示:
{
"Message":"OK",
"RequestId":"A90E4451-FED7-49D2-87C8-00700A8C****",
"Code":"OK",
"CallId":"1160128542100102814****"
}
调用SDK返回错误码,详情请参见错误码列表。