透過騰訊雲語音服務(VMS · SendTtsVoice)撥打電話給值班人員播報告警,新手可依步驟逐步完成設定。
概述
騰訊雲語音通知媒介利用騰訊雲 VMS(語音訊息服務) · SendTtsVoice API,把告警以 TTS(文字轉語音)方式自動撥打到值班人員手機。用於對時效性要求最高的嚴重告警——電話比簡訊、IM 更能把人叫醒。
- 適用情境:夜間/假日的 P0 級告警、需要強制觸達的故障通知。
- 你需要準備:
- 一個已實名認證、已開通語音訊息 VMS 的騰訊雲帳號;
- 騰訊雲 SecretId / SecretKey(建議使用 CAM 子帳號);
- 已審核通過的 語音範本
TemplateId; - 已建立的 VoiceSdkAppid(語音應用 ID,於 VMS 控制台中建立)。
- 整個設定分三步:①在騰訊雲開通 VMS 並申請語音範本 → ②在夜鶯新建騰訊雲語音通知媒介 → ③使用者填手機號碼、通知規則裡選擇接收人。
騰訊雲 VMS 範本/簽名需要工單審核,週期 1~3 個工作日。
第一步:在騰訊雲控制台準備資料
- 登入 騰訊雲語音訊息控制台,首次使用需開通服務。
- 建立語音應用:進入 應用管理 → 建立應用,得到 VoiceSdkAppid(7 位數字)。
- 建立語音範本:
- 在 應用管理 → 你的應用 → 正文範本,申請一個 TTS 範本;
- 重點:範本只能有一個變數
{1},因為夜鶯預先設定的請求內容裡寫的是TemplateParamSet = ["{{$tpl.content}}"]——只傳了一個值,對應範本裡的{1}。 - 把固定話術寫在範本裡,讓
{1}只放變化部分:
然後到夜鶯 → 訊息範本 → 複製一份您有一條告警,{1},請及時處理Tencent Voice,把content欄位改短(例如改成{{$event.RuleName}})。 - 提交審核,通過後得到
TemplateId(一串數字,如1234567)。
- 在 CAM 存取管理 · 子帳號 建立一個子帳號,授予策略
QcloudVMSFullAccess(或等效權限),記下 SecretId / SecretKey(僅建立時顯示一次)。
第二步:在夜鶯新建騰訊雲語音通知媒介
-
登入夜鶯 → 左側選單 通知 → 通知媒介。
-
在左側類型面板中點擊 騰訊雲語音,進入新建頁面(URL
/notification-channels/add?ident=tx-voice)。 -
填寫基礎資訊:

區塊 欄位 是否需要修改 說明 基礎設定 名稱 需要 例如 騰訊雲語音變數設定 聯絡方式 保持預設 Phone發送時 $sendto取使用者的手機號碼HTTP 設定 URL 保持預設 https://vms.tencentcloudapi.com(VMS 固定網域)HTTP 設定 請求方法 POST -
請求標頭部分,除了常規的
Content-Type / Host外,騰訊雲特有的驗證欄位也都放在這裡——這是唯一需要你修改的幾個:
參數名稱 值 是否需要修改 Content-Typeapplication/json保持預設 Hostvms.tencentcloudapi.com保持預設 Secret_ID你的 SecretId 需要修改,第一步 CAM 取得的 AKID Secret_Key你的 SecretKey 需要修改 Servicevms保持預設 X-TC-ActionSendTtsVoice保持預設 X-TC-Regionap-beijing依語音應用所在地域修改,常見 ap-guangzhou/ap-beijing/ap-nanjingX-TC-Version2020-09-02保持預設(API 版本) 說明:
Secret_ID/Secret_Key雖然是填在「請求標頭」裡,但夜鶯後端在發送前會把它們取出來計算 TC3-HMAC-SHA256 簽章,並從實際請求標頭中移除——不會以明文傳給騰訊雲。 -
捲動到「請求內容」,預設範本已經幫你寫好:
{ "CalledNumber": "+86{{ $sendto }}", "TemplateId": "需修改為實際的範本 id", "TemplateParamSet": ["{{$tpl.content}}"], "VoiceSdkAppid": "需修改為實際的 appid" }把其中的佔位符替換成你的值:
欄位 值 說明 CalledNumber+86{{ $sendto }}保持預設——必須帶 +86前綴(國際 E.164 格式)TemplateId你的範本 ID 第一步審核通過的數字 ID TemplateParamSet["{{$tpl.content}}"]依範本變數順序對應一個陣列——夜鶯預設只傳一個值,因此你的騰訊雲範本只能有一個 {1}。{{$tpl.content}}來自系統內建的Tencent Voice訊息範本,預設渲染為S<級別>{Triggered/Recovered}<規則名>VoiceSdkAppid你的 AppID 第一步建立的 7 位數字 -
點擊 儲存。
第三步:使用者設定手機號碼 & 通知規則
- 進入 人員組織 → 使用者管理,為接電話的使用者填寫手機號碼(11 位國內號碼,不帶
+86前綴,前綴會由請求內容自動拼上)。 - 進入 通知 → 通知規則 → 新增:
- 通知媒介:選騰訊雲語音媒介;
- 訊息範本:選系統內建的
Tencent Voice——它的content欄位預設渲染為S{{$event.Severity}}{{if $event.IsRecovered}}Recovered{{else}}Triggered{{end}}{{$event.RuleName}},例如S1Triggered CPU使用率超門檻。搭配預設請求內容TemplateParamSet = ["{{$tpl.content}}"],這串文字會作為{1}的取值發給騰訊雲; - 注意
{{$tpl.content}}的長度必須在騰訊雲單變數長度限制內(預設 ≤ 30 字元),告警規則名很長時建議複製一份Tencent Voice範本改短再用; - 接收人 / 接收團隊:選擇目標使用者;
- 適用級別:建議只勾一級(Critical);
- 儲存。
- 點擊「通知測試」,目標手機應在 10 秒內響鈴並播報一段 TTS 告警語音。
騰訊雲側計費與配額
- VMS 按通話時長/條數計費,詳見 騰訊雲 VMS 定價。
- 對同一手機號碼有每日呼叫次數上限(預設較低),可工單申請調整。
- 若對方按鍵(例如按 1 認領),騰訊雲會回呼預留的 URL——夜鶯目前預設不接入此回呼;需要認領流程可自行實作。
常見問題
Q1:回傳 AuthFailure.SignatureFailure?
A:Secret_Key 錯了,或機器時間漂移過大(TC3 簽章對時間敏感,超過 ±5 分鐘即判失敗)。請檢查伺服器 NTP 時間是否準確。
Q2:回傳 UnauthorizedOperation / CAM?
A:子帳號未掛 QcloudVMSFullAccess 策略;或者你使用的 SecretId 屬於未開通 VMS 的帳號。
Q3:回傳 FailedOperation.InvalidTemplate / 範本未審核通過?
A:請檢查 TemplateId 是否寫對;登入 VMS 控制台查看範本狀態是否為「審核通過」。
Q4:回傳 FailedOperation.InsufficientBalance?
A:帳戶餘額不足。請儲值或設定儲值告警。
Q5:回傳 InvalidParameterValue.InvalidCalledNumber?
A:CalledNumber 必須是 E.164 格式,國內號碼寫成 +861XXXXXXXXXX。夜鶯的預設範本已經幫你在 {{ $sendto }} 前拼了 +86,請勿重複。
Q6:TemplateParamSet 陣列長度與範本不匹配會回傳什麼?
A:騰訊雲會回傳 InvalidParameterValue.TemplateParamSet。請打開 VMS 範本,數一下 {1} {2} {3} 有幾個,陣列長度要與其相等;並且不能有空字串。
Q7:多個接收人會如何排程?
A:SendTtsVoice 單次只呼一個號碼,夜鶯會按接收人逐一呼叫。人數多時建議適當拉長「重試間隔」(例如 500ms)以避免觸發並行限流。
Q8:我使用的是海外帳號/國際號碼?
A:騰訊雲國際語音服務(SendCallVoice 等)屬於不同產品線,夜鶯預設 ident 不涵蓋。需要國際語音請在媒介裡把 URL 改成國際 endpoint、X-TC-Action 改為對應介面名稱,並按國際號碼格式填寫 CalledNumber。