阿里云语音通知API试接入
文档地址
1.安装SDK
composer require alibabacloud/dyvmsapi-20170525
2.准备工作
在“语音号码”页面完成资质的申请和号码的购买。
在“文本转语音模板”页面完成模板申请,或在“语音通知文件”页面完成文件上传。
获取AccessKey信息,详情请参见获取AccessKey。
完成本地SDK环境搭建,详情请参见安装SDK。
3.代码示例
<?php
// This file is auto-generated, don't edit it. Thanks.
namespace Alibabacloud\Dyvmsapi20170525;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Dyvmsapi;
use AlibabaCloud\Tea\Console\Console;
use AlibabaCloud\Tea\Rpc\Rpc\Config;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByVoiceRequest;
class Client {
/**
* 使用AK&SK初始化账号Client
* @param string $accessKeyId
* @param string $accessKeySecret
* @param string $regionId
* @return Dyvmsapi Client
*/
public static function createClient($accessKeyId, $accessKeySecret, $regionId){
$config = new Config([]);
// 您的AccessKey ID
$config->accessKeyId = $accessKeyId;
// 您的AccessKey Secret
$config->accessKeySecret = $accessKeySecret;
// 您的可用区ID
$config->regionId = $regionId;
return new Dyvmsapi($config);
}
/**
* 语音文件通知
* @param array $args
* @return void
*/
public static function main($args){
$client = self::createClient("填写你的accessKeyId", "填写你的accessKeySecret", "cn-hangzhou");
$request = new SingleCallByVoiceRequest([
// 被叫显号,若您使用的模板为公共号池号码外呼模板,则该字段值必须为空;
// 若您使用的模板为专属号码外呼模板,则必须传入已购买的号码,仅支持一个号码,您可以在语音服务控制台上查看已购买的号码。
"calledShowNumber" => "18850xxxx",
// 被叫号码。仅支持中国内地号码。一次请求仅支持一个被叫号。
"calledNumber" => "15750xxxx",
// 语音文件的语音ID。
"voiceCode" => "e271f3f2-e155-4366-a9f4-0fe55765b3ec.wav"
]);
$response = $client->singleCallByVoice($request);
Console::log($response->message);
}
/**
* 语音验证码通知
* @param array $args
* @return void
*/
public static function call($args){
$client = self::createClient("填写你的accessKeyId", "填写你的accessKeySecret", "cn-hangzhou");
$request = new SingleCallByTtsRequest([
// 被叫显号,若您使用的模板为公共号池号码外呼模板,则该字段值必须为空;
// 若您使用的模板为专属号码外呼模板,则必须传入已购买的号码,仅支持一个号码,您可以在语音服务控制台上查看已购买的号码。
"calledShowNumber" => \Yii::$app->params['DyvmsConfig']['CalledShowNumber'],
// 被叫号码。仅支持中国内地号码。一次请求仅支持一个被叫号。
"calledNumber" => $args['phone'],
// 语音文件的语音ID。
"ttsCode" => \Yii::$app->params['DyvmsConfig']['TtsCode'],
'outId'=>$args['outId'],
"accessKeyId" => \Yii::$app->params['DyvmsConfig']['AccessKeyId'] //补坑(签名错误)
]);
return $client->SingleCallByTts($request);
}
}
4.返回结果
{
"Message": "OK",
"RequestId": "4ABF7FB6-449C-4624-8CC6-9AAE3684xxxx",
"Code": "OK",
"CallId": "118720962490^10551812xx"
}
最后:
最后最后补充一个语音验证码文档的坑,实力化Request传参数的时候,文档少了一个参数,导致总是报签名不一致的错误。