allocatr/application/common/services/alibaba/DyvmsService.php
2025-04-01 12:00:41 +08:00

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 = Env::get('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()
{
}
// 防止反序列化
private 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);
}
}