AlibabaDyvmsapi.php
6.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
namespace app\common\library;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Dyvmsapi;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByTtsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByVoiceRequest;
/**
* 阿里云语音服务
* Class AlibabaDyvmsapi
* @package app\common\library
*/
class AlibabaDyvmsapi
{
public $accessKeyId = null;
public $accessKeySecret = null;
public function __construct()
{
$this->accessKeyId = config('site.call_accessKeyId');
$this->accessKeySecret = config('site.call_accessKeySecret');
}
/**
* 使用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
]);
// Endpoint 请参考 https://api.aliyun.com/product/Dyvmsapi
$config->endpoint = "dyvmsapi.aliyuncs.com";
return new Dyvmsapi($config);
}
/**
* 语音验证码
* @param array $params
* @return array|boolean
*/
public function singleCallByTts($params){
// 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html
$client = self::createClient($this->accessKeyId, $this->accessKeySecret);
// $params = [
// "calledNumber" => "1590****000",//接收语音通知的手机号码
// "ttsCode" => "TTS_100****",//已通过审核的语音通知文本转语音模板或语音验证码模板的模板 ID。
// "calledShowNumber" => "0571****5678",//被叫显号。
// "ttsParam" => "{\"AckNum\":\"123456\"}",//模板中的变量参数,JSON 格式。
// "playTimes" => 3,//一通电话内语音通知内容的播放次数。取值范围:1~3,默认取值 3。
// "volume" => 100,//语音通知的播放音量。取值范围:0~100,默认取值 100。
// "speed" => 5,//语速控制。取值范围为:-500~500。
// "outId" => "225869*****"//发起请求时预留给调用方的自定义 ID,最终会通过在回执消息中将此 ID 带回给调用方。字符串类型,长度为 1~15 个字节。
// ];
$singleCallByTtsRequest = new SingleCallByTtsRequest($params);
$runtime = new RuntimeOptions([]);
try {
// 复制代码运行请自行打印 API 的返回值
$response = $client->singleCallByTtsWithOptions($singleCallByTtsRequest, $runtime);
return $response->body->toMap();
}
catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
// 错误 message
// var_dump($error->message);
// 诊断地址
// var_dump($error->data["Recommend"]);
$logFile = RUNTIME_PATH . 'log/语音验证码异常日志-' . date('Y-m-d') . '.txt';
file_put_contents($logFile , var_export($error->message, true) . PHP_EOL, FILE_APPEND);
// Utils::assertAsString($error->message);
return false;
}
}
/**
* 语音通知
* @param array $params
* @return array|boolean
*/
public function SingleCallByVoice($params){
// 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html
$client = self::createClient($this->accessKeyId, $this->accessKeySecret);
// $params = [
// "calledNumber" => "1590****000",//接收语音通知的手机号码
// "voiceCode" => "2d4c-4e78-8d2a-afbb06cf****.wav",语音通知文件的语音 ID。
// "calledShowNumber" => "0571****5678",//被叫显号。
// "playTimes" => 3,//一通电话内语音通知内容的播放次数。取值范围:1~3,默认取值 3。
// "volume" => 100,//语音通知的播放音量。取值范围:0~100,默认取值 100。
// "speed" => 5,//语速控制。取值范围为:-500~500。
// "outId" => "22596****"//发起请求时预留给调用方的自定义 ID,最终会通过在回执消息中将此 ID 带回给调用方。字符串类型,长度为 1~15 个字节。
// ];
$singleCallByVoiceRequest = new SingleCallByVoiceRequest($params);
$runtime = new RuntimeOptions([]);
try {
// 复制代码运行请自行打印 API 的返回值
$response = $client->singleCallByVoiceWithOptions($singleCallByVoiceRequest, $runtime);
return $response->body->toMap();
}
catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
// 错误 message
// var_dump($error->message);
// 诊断地址
// var_dump($error->data["Recommend"]);
$logFile = RUNTIME_PATH . 'log/语音通知常日志-' . date('Y-m-d') . '.txt';
file_put_contents($logFile , var_export($error->message, true) . PHP_EOL, FILE_APPEND);
// Utils::assertAsString($error->message);
return false;
}
}
}