PHP 如何使用阿里云的语音通知功能

HELLO小伙伴,好久不见,好几天没有写文章了。今天来讲一讲PHP如何使用阿里云的语音通知。
有的小伙伴根据阿里云提供的文档在阿里云控制台创建并认证好企业认证,所有的通知模板都已经创建好。
但是在下载SDK的时候就遇到了困难,用git下载的时候缺少很多的类。
用composer下载,在自动加载文件的时候出现了用不了,有的时候可以用但是会出现报错,哪个哪个类找不到,或者是哪个方法找不到。
今天就来分享一下我是如何做的。
在阿里云官方文档上面使用composer下载。
https://next.api.aliyun.com/api-tools/sdk/Dyvmsapi?spm=a2c4g.11186623.0.0.7fb25468pZJRsh&version=2017-05-25&language=php-tea&tab=primer-doc
在这个链接里面我们能看到有一个安装方式,

composer require alibabacloud/dyvmsapi-20170525 2.1.4

我们在composer安装完成之后,官方文档上面提示的是会有一个自动生成PHP文件。
其实这个文件是需要我们自己去新建的。
我们在app\common\library下面创建一个Sample.php的这个文件,并且更改一下命名空间
在这里插入图片描述
下面是我根据我的需求来写的方法:

<?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\SingleCallByVoiceRequest;
use AlibabaCloud\SDK\Dyvmsapi\V20170525\Models\SingleCallByTtsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

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 voi_main($accessKeyId, $accessKeySecret, array $args){
        // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html
        $client = self::createClient($accessKeyId, $accessKeySecret);
        $singleCallByVoiceRequest = new SingleCallByVoiceRequest($args);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $client->singleCallByVoiceWithOptions($singleCallByVoiceRequest, $runtime);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            dump($error);
            // 如有需要,请打印 error
            Utils::assertAsString($error->message);
        }
    }


    /**
     * @param string[] $args
     * @return void
     */
    public static function tts_main($accessKeyId, $accessKeySecret, array $args){
        // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html
        $client = self::createClient($accessKeyId, $accessKeySecret);
        $singleCallByTtsRequest = new SingleCallByTtsRequest($args);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $client->singleCallByTtsWithOptions($singleCallByTtsRequest, $runtime);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 如有需要,请打印 error
            Utils::assertAsString($error->message);
        }
    }
}

这里面的voi_main的这个方法是需要你在阿里云语音通知那里有mp3文件的方法。
而tts_main的这个方法是文本转语音的方法。
这里的$args是一个数组,这个数组是根据你对应需求的方法里面需要的参数。
这个数组的参数可以在阿里云里面调试的时候会获取到相应的方法。
剩下的就是在你控制器里面进行调用这个方法就可以了。
如有疑问,关注并私信我。我来给你解答。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于先生吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值