天天看點

借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結

随着物聯網的普及,當裝置發生異常時候的通知方式也有了多種多樣的實作。從傳統的背景異常清單,到短信通知,到微信消息通知等。但是當裝置探測到火警異常時,需要實時通知到相關人員。

下面具體介紹如何借助阿裡雲的【語音服務】實作。

1. 準備工作

1.1 登入阿裡雲

語音服務

,進行資質申請,需要準備好企業資訊,法人資訊以及加蓋企業公章的入網承諾書、号碼申請公函;

借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結

1.2 資質申請通過後,就可以購買号碼了。

注1:目前隻能申請企業歸屬地所屬的号碼,比如企業是在杭州的,就不能購買上海的号碼段;

注2:因為阿裡雲接入的是移動聯通電信三大營運商,号碼段經常發生變化,在實際購買時可能存在号碼庫為空的場合,這種情況下建議下個工單給小二,催下進度;

注3:号碼是按月租費計算,實際通話費用按照撥打時間進行附加收費;

借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結

1.3 準備【文本轉語音模闆】;

注1:模闆内容和阿裡雲短信一樣,可以自己定義替換變量;

注2:文本輸入完成後,建議試聽一下,計算下時長,如果超過1分鐘後就按照2分鐘進行收費啦;

注3:可以自己選擇聲音類型,這個功能瞬間點贊;

借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結
借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結

2. 試試看效果

阿裡雲上的配置基本做好了,接下來就是如何嵌入我們的代碼啦。

2.1 重新梳理一下語音服務的流程。

借助阿裡雲【語音服務】實作異常實時報警1. 準備工作2. 試試看效果3. 總結

2.2 整理好需要用到的阿裡雲參數資料。

2.2.1 $accessKeyId,$accessKeySecret(可通過

https://ak-console.aliyun.com

頁面建立)

注:由于$accessKeyId,$accessKeySecret是阿裡雲全局的,比如短信,OSS等,請注意保管,必要時可以通過【建立子使用者accessKey】配置權限進行使用;           

2.2.2 CalledShowNumber主叫号碼,即1.2中購買的号碼,用于接聽電話時顯示;

2.2.3 CalledNumber被叫号碼,僅支援中國大陸号碼。根據業務需求,設定需要處理該異常消息的人員電話;

2.2.4 TtsCode模闆ID,即1.3中配置好的模闆ID;

2.2.5 模闆中配置的參數值,比如$position(報警位址),$devicename(裝置名稱),$time(報警時間)

2.3 下載下傳

PHP的DEMO

,另外,阿裡雲還支援

Java

Python

的位址,大家可以去試一下。

注:目前最新的

語音服務新版SDK源碼

已經托管至開源平台Github及主流依賴倉庫

2.4 打開【aliyun-dyvms-php-sdkapi_demosingleCallByTts.php】,代入2.3中的各項參數。

ini_set("display_errors", "on");

require_once dirname(__DIR__) . '/api_sdk/vendor/autoload.php';

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Dyvms\Request\V20170525\SingleCallByTtsRequest;

// 加載區域結點配置
Config::load();

/**
 * 文本轉語音外呼
 *
 * 語音服務API産品的DEMO程式,直接執行此檔案即可體驗語音服務産品API功能
 * (隻需要将AK替換成開通了雲通信-語音服務産品功能的AK即可)
 * 備注:Demo工程編碼采用UTF-8
 */
function singleCallByTts() {
    //産品名稱:雲通信語音服務API産品,開發者無需替換
    $product = "Dyvmsapi";

    //産品域名,開發者無需替換
    $domain = "dyvmsapi.aliyuncs.com";

    // TODO 此處需要替換成開發者自己的AK (https://ak-console.aliyun.com/)
    $accessKeyId = "$2.3.1準備的accessKeyId "; // AccessKeyId

    $accessKeySecret = "$2.3.1準備的accessKeySecret"; // AccessKeySecret


    // 暫時不支援多Region
    $region = "cn-hangzhou";

    // 服務結點
    $endPointName = "cn-hangzhou";

    //初始化acsClient,暫不支援region化
    $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

    // 增加服務結點
    DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

    // 初始化AcsClient用于發起請求
    $acsClient = new DefaultAcsClient($profile);

    //組裝請求對象-具體描述見控制台-文檔部分内容
    $request = new SingleCallByTtsRequest();
    //必填-被叫顯号
    $request->setCalledShowNumber("$1.2購買的号碼");
    //必填-被叫号碼
    $request->setCalledNumber("$需要撥打的電話号碼");
    //必填-Tts模闆Code
    $request->setTtsCode("$1.3配置的模闆ID");
    //選填-Tts模闆中的變量替換JSON,假如Tts模闆中存在變量,則此處必填
    $request->setTtsParam("{\"position\":\"$杭州濱江濱興路500号\",\"devicename\":\"$煙感\",\"time\":\"$9:10\"}");
    //選填-音量
    $request->setVolume(100);
    //選填-播放次數
    $request->setPlayTimes(3);
    //選填-外呼流水号
    $request->setOutId("213123123");

    //hint 此處可能會抛出異常,注意catch
    $response = $acsClient->getAcsResponse($request);

    return $response;
}

// 調用示例:
set_time_limit(0);
header("Content-Type: text/plain; charset=utf-8");

$response = singleCallByTts();
echo "文本轉語音外呼(singleCallByTts)接口傳回的結果:\n";
print_r($response);           

2.5 執行後的頁面輸出如下:

文本轉語音外呼(singleCallByTts)接口傳回的結果:

stdClass Object

(

[Message] => OK
[RequestId] => 9F9310B3-4390-44B9-89B5-C33A907A282D
[Code] => OK
[CallId] => 118407437815^105205032815           

)

2.6 耐心等待幾秒鐘,被撥打的電話号碼就會收到一條來電,根據我們的參數配置會循環3遍提示。

【您位于杭州濱江濱興路500号的煙感在9:10疑似火警,請您及時确認以免造成人員及财産損失】

大家也可以試聽下實際的

通話錄音

3. 總結

通過阿裡雲的語音服務,幫助我們能夠快速搭建異常通知系統。這裡隻是介紹其中最簡單的一種應用,實際上還有【語音驗證碼】【智能外呼機器人】等功能,對于擁有自有線路的使用者,還可以SIP Trunk的接入方式将語音網關與語音服務平台進行對接。

我們現在主要在以下場景進行了應用:

  • 火警
  • 電網裝置報警
  • 物業費用等電話催繳通知
  • 會員服務續費到期通知

最後小小吐槽下,希望提供阿裡雲語音服務的營運商線路能夠穩定些,不要老是進行切換。

繼續閱讀