透過阿里雲語音服務 SingleCallByTts 撥打電話給值班同仁播報告警,新手可依步驟逐步完成設定。
概述
阿里雲語音通知媒介利用 阿里雲 語音服務(VMS) · 語音通知(SingleCallByTts) API,把告警以 TTS(文字轉語音)方式自動撥打到值班人員手機。一般用於「必須叫醒人」的 P0 級告警。
- 適用情境:夜間/假日的嚴重告警,電話比 IM 更容易把人叫醒。
- 你需要準備:
- 一個已實名認證、已開通語音服務的阿里雲帳號;
- 阿里雲 AccessKey ID / AccessKey Secret(建議使用 RAM 子帳號,僅授予語音服務的發送權限);
- 已通過審核的 TTS 語音範本(
TtsCode/TTS_1234567); - (選填)已申請的被叫顯號(
CalledShowNumber),若未申請,將顯示阿里雲官方號碼。
- 整個設定分三步:①在阿里雲開通語音服務並申請 TTS 範本 → ②在夜鶯新建阿里雲語音通知媒介 → ③為使用者設定手機號碼,並在通知規則裡選擇接收人。
阿里雲語音服務對於 TTS 範本、顯號等需要工單審核,週期通常 1~3 個工作日,建議提前 1 週啟動。
第一步:在阿里雲控制台準備資料
-
登入 阿里雲語音服務控制台,首次使用需開通服務。
-
建立 TTS 範本(語音範本):
-
進入 國內語音 → 語音範本管理 → 新增範本;
-
範本類型選「文字轉語音範本」;
-
重點:變數名稱要叫
incident,因為夜鶯預先設定的請求內容裡寫的是TtsParam = {"incident":"故障{{$tpl.incident}},一鍵認領請按1"}——也就是說,最終會把「故障 + 規則名 + ,一鍵認領請按1」這一整段文字作為${incident}的取值傳給阿里雲; -
建議的範本內容(最簡單、最能避免變數長度問題):
您有一條告警 ${incident}審核通過後實際播報會是:
您有一條告警 故障CPU使用率超門檻,一鍵認領請按1。 -
提交審核,通過後得到範本編號
TTS_XXXXXXXX。
-
-
(選填)申請被叫顯號:進入 號碼管理 → 號碼申請,申請一個專屬號碼
CalledShowNumber。未申請的話,將使用阿里雲預設外撥號碼。 -
在 RAM 存取控制 建立一個子帳號,授予權限
AliyunDyvmsFullAccess,記下 AccessKey ID 與 AccessKey Secret(Secret 只顯示一次,務必妥善保存)。
第二步:在夜鶯新建阿里雲語音通知媒介
-
登入夜鶯 → 左側選單 通知 → 通知媒介。
-
在左側類型面板中點擊 阿里雲語音,進入新建頁面(URL
/notification-channels/add?ident=ali-voice)。 -
填寫基礎資訊:

區塊 欄位 是否需要修改 說明 基礎設定 名稱 需要 例如 阿里雲語音,在通知規則裡選擇媒介時看到的就是這個名稱變數設定 聯絡方式 保持預設 Phone語音通知必須以使用者的手機號碼作為 $sendtoHTTP 設定 URL 保持預設 https://dyvmsapi.aliyuncs.com(語音服務固定網域)HTTP 設定 請求方法 POSTHTTP 設定 請求標頭 保持預設 Content-Type: application/json、Host: dyvmsapi.aliyuncs.com,簽章時需要,請勿刪除 -
往下捲動到「請求參數」,這裡是唯一需要修改的地方:

把預先設定的欄位裡的佔位符替換成你的實際值:
參數名稱 值 說明 AccessKeyId 你的 AK ID 在第一步 RAM 控制台取得的 LTAI5t...AccessKeySecret 你的 AK Secret 對應的 Secret,請妥善保存切勿外流 CalledNumber {{ $sendto }}保持預設,發送時會替換成接收人的手機號碼 CalledShowNumber 你的顯號 或 留空 未申請顯號就把這一整列刪掉,阿里雲會以預設號碼撥出 TtsCode TTS_XXXXXXXX第一步申請到的語音範本編號 TtsParam {"incident":"故障{{$tpl.incident}},一鍵認領請按1"}範本裡的變數賦值,JSON 字串;左邊 key(這裡是 incident)必須與阿里雲 TTS 範本裡的${xxx}變數名稱完全一致。{{$tpl.incident}}來自系統內建的Aliyun Voice訊息範本(預設為{{$event.RuleName}})夜鶯後端會自動使用你填寫的 AK/SK 計算 ACS3-HMAC-SHA256 簽章,並在發送前把
AccessKeyId / AccessKeySecret從請求中移除,不會以明文形式出現在呼叫中。 -
點擊 儲存。
第三步:為使用者設定手機號碼 & 通知規則
- 進入 人員組織 → 使用者管理,為需要接電話的使用者填寫手機號碼欄位(必須是 11 位中國手機號碼;如需國際漫遊請在阿里雲單獨開通)。
- 進入 通知 → 通知規則 → 新增:
- 通知媒介:選擇阿里雲語音媒介;
- 訊息範本:選系統內建的
Aliyun Voice——它的incident欄位預設渲染為{{$event.RuleName}}(僅規則名,最短)。搭配預設請求內容TtsParam = {"incident":"故障{{$tpl.incident}},一鍵認領請按1"},最終送到阿里雲的變數值約等於故障<規則名>,一鍵認領請按1; - 接收人 / 接收團隊:選擇目標使用者(使用者必須已填手機號碼);
- 適用級別:建議只勾一級告警(Critical);
- 儲存。
- 點擊「通知測試」,測試機應在 10 秒內響起並播報一段 TTS 告警語音。
阿里雲側的計費與配額
- 語音通知按通話時長計費,具體價格參考 阿里雲語音服務定價。
- 每個自然日同一號碼呼叫次數有預設上限(可工單申請調高)。被叫接通率、接聽時長都可在阿里雲控制台的「用量統計」中查看。
- 接通後若對方按鍵(例如按「1」認領),阿里雲會把按鍵事件回呼到你預留的回呼位址——夜鶯 v8 預設不處理這種回呼;如果確需認領流程,需要自行接收回呼 Webhook。
常見問題
Q1:回傳 InvalidAccessKeyId.NotFound / SignatureDoesNotMatch?
A:AK 填錯或 Secret 填錯。常見原因:
- 把子帳號的 Display Name 當成 AK ID 填了;
- 貼上 AK Secret 時帶了多餘的空格/換行;
- 子帳號所在的 RAM 策略未授權語音服務,
AliyunDyvmsFullAccess沒掛上去。
Q2:回傳 isv.SMART_INVALID_APP_KEY / TtsCode Invalid?
A:TtsCode 填錯或語音範本未審核通過。登入語音服務控制台 → 語音範本管理,確認範本狀態為 審核通過。
Q3:TtsParam 報錯 TtsParam variable not match?
A:TtsParam 裡的 key 必須與語音範本裡 ${xxx} 部分完全一樣,並且所有變數都要給值。例如範本 您有一條告警 ${incident},請按 ${button} 認領,TtsParam 必須寫成 {"incident":"...","button":"1"}。
Q4:isv.MOBILE_NUMBER_ILLEGAL?
A:使用者填的手機號碼格式不對。語音服務要求不帶國碼的 11 位中國手機號碼;國際號碼需單獨工單申請。