58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace app\common\services\alibaba;
|
|
|
|
|
|
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Dyvmsapi;
|
|
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByTtsRequest;
|
|
use Darabonba\OpenApi\Models\Config;
|
|
use think\Env;
|
|
class DyvmsService
|
|
{
|
|
// 保存实例的静态变量
|
|
protected static ?DyvmsService $instance = null;
|
|
|
|
protected Dyvmsapi $service;
|
|
|
|
// 私有构造函数,防止外部直接实例化
|
|
private function __construct($options = [])
|
|
{
|
|
$config = \config('alibaba_dyvms');
|
|
if (!empty($options)) {
|
|
$config = array_merge($config, $options);
|
|
}
|
|
$this->service = new Dyvmsapi(new Config($config));
|
|
}
|
|
|
|
// 单例方法,确保只有一个实例
|
|
public static function getInstance($options = []): ?DyvmsService
|
|
{
|
|
if (self::$instance === null) {
|
|
self::$instance = new self($options); // 创建实例
|
|
}
|
|
return self::$instance; // 返回实例
|
|
}
|
|
|
|
// 防止克隆实例
|
|
private function __clone()
|
|
{
|
|
}
|
|
|
|
// 防止反序列化
|
|
public function __wakeup()
|
|
{
|
|
}
|
|
|
|
// 调用阿里云接口发送语音
|
|
public function call($tel,$ttsCode,$outId): array|\AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByTtsResponse
|
|
{
|
|
$request = new SingleCallByTtsRequest([
|
|
'calledNumber' => $tel,
|
|
'calledShowNumber' => '',//显示专属号码
|
|
'ttsCode' => $ttsCode,// 语音文件ID
|
|
'outId' => $outId, //外部ID
|
|
// 其他必要参数可以继续添加
|
|
]);
|
|
return $this->service->singleCallByTts($request);
|
|
}
|
|
} |