透過騰訊雲簡訊服務(SendSms)將告警以簡訊形式發送,新手可依步驟逐步完成設定。
概述
騰訊雲簡訊通知媒介利用騰訊雲 SMS · SendSms API,把告警以一般簡訊的形式下發到手機。常作為電子郵件/IM 的兜底管道。
- 適用情境:必須兜底通知、未安裝 IM 的使用者、值班人員交接班提醒等。
- 你需要準備:
- 已開通騰訊雲簡訊 SMS 的帳號;
- 騰訊雲 SecretId / SecretKey(建議使用 CAM 子帳號,僅授予 SMS 發送權限);
- SmsSdkAppId(簡訊應用 ID,於 SMS 控制台中建立);
- 已審核通過的 簡訊簽名 與 簡訊範本。
- 整個設定分三步:①在騰訊雲控制台準備應用/簽名/範本 → ②在夜鶯新建騰訊雲簡訊通知媒介 → ③使用者填手機號碼、通知規則裡選擇接收人。
簽名與範本需要工單審核(通常數小時到 1 個工作日),首次接入建議預留時間。
第一步:在騰訊雲控制台準備資料
- 登入 騰訊雲簡訊控制台。
- 建立簡訊應用:進入 應用管理 → 建立應用,得到 SmsSdkAppId(一串數字)。
- 建立簡訊簽名:
簽名管理 → 建立簽名,依引導填寫企業/個人資質審核。 - 建立簡訊範本:
正文範本 → 建立正文範本。- 範本類型選「通知類」;
- 重點:範本只能有一個變數
{1},因為夜鶯預先設定的請求內容裡寫的是TemplateParamSet = ["{{$tpl.content}}"]——只傳了一個值,對應{1}。 - 把固定話術寫在範本裡,讓
{1}只放變化部分:
然後到夜鶯 → 訊息範本 → 複製一份您有一條 {1} 級別的告警,請及時處理Tencent SMS,把content欄位改成你想填進{1}的內容。 - 審核通過後取得
TemplateId(數字 ID)。
- 在 CAM 建立子帳號,授予策略
QcloudSMSFullAccess(或自訂最小權限),記下 SecretId / SecretKey。
第二步:在夜鶯新建騰訊雲簡訊通知媒介
-
登入夜鶯 → 左側選單 通知 → 通知媒介。
-
在左側類型面板點擊 騰訊雲簡訊,進入新建頁面(URL
/notification-channels/add?ident=tx-sms)。 -
填寫基礎設定:

欄位 說明 名稱 例如 騰訊雲簡訊聯絡方式 保持預設 PhoneURL 保持預設 https://sms.tencentcloudapi.com請求方法 POST -
請求標頭部分,除了常規的
Content-Type / Host,騰訊雲還要求填寫驗證相關欄位:
參數名稱 值 是否需要修改 Content-Typeapplication/json保持預設 Hostsms.tencentcloudapi.com保持預設 Secret_ID你的 SecretId 需要修改 Secret_Key你的 SecretKey 需要修改 Servicesms保持預設 X-TC-ActionSendSms保持預設 X-TC-Region你的地域 需要修改,例如 ap-guangzhou/ap-beijing,依簡訊應用所在地域填寫X-TC-Version2021-01-11保持預設 Secret_ID/Secret_Key不會以明文發送:夜鶯在發出請求前會用它們計算 TC3-HMAC-SHA256 簽章,並從請求標頭中移除。 -
最後修改「請求內容」,把佔位符換成你的值:
{ "PhoneNumberSet": ["{{ $sendto }}"], "SignName": "需修改為實際的簽名", "SmsSdkAppId": "需修改為實際的 appid", "TemplateId": "需修改為實際的範本 id", "TemplateParamSet": ["{{$tpl.content}}"] }欄位 值 說明 PhoneNumberSet["{{ $sendto }}"]保持預設——發送時會替換成接收人的手機號碼;國內號碼要求 E.164 格式,即 +86138XXXXXXXX(見 Q4 說明)SignName你的簡訊簽名 第一步審核通過的簽名名稱,一字不差 SmsSdkAppId你的應用 ID 第一步建立的數字 ID TemplateId你的範本 ID 第一步審核通過的數字 ID TemplateParamSet["{{$tpl.content}}"]依範本變數順序對應一個陣列——夜鶯預設只傳一個值,因此你的騰訊雲簡訊範本只能有一個 {1}。{{$tpl.content}}來自系統內建的Tencent SMS訊息範本,預設渲染為級別狀態: S<級別> {Triggered/Recovered}規則名稱: <規則名> -
點擊 儲存。
第三步:使用者設定手機號碼 & 通知規則
-
進入 人員組織 → 使用者管理,為目標使用者填寫 手機號碼。
國內號碼兩種填法都可以:
- 直接 11 位
138XXXXXXXX(建議),並在請求內容PhoneNumberSet裡把{{ $sendto }}改成"+86{{ $sendto }}"; - 或直接儲存完整的
+86138XXXXXXXX,請求內容保持預設。
- 直接 11 位
-
進入 通知 → 通知規則 → 新增:
- 通知媒介:選騰訊雲簡訊;
- 訊息範本:選系統內建的
Tencent SMS——它的content欄位預設渲染為級別狀態: S<級別> {Triggered/Recovered}規則名稱: <規則名>,例如級別狀態: S1 Triggered規則名稱: CPU使用率超門檻。搭配預設請求內容TemplateParamSet = ["{{$tpl.content}}"],這串文字會作為{1}的值發給騰訊雲; - 注意簡訊整體長度按 70 字元/條計費,告警規則名 + 級別狀態過長時可複製一份
Tencent SMS範本改短; - 接收人 / 接收團隊:選擇目標使用者;
- 適用級別 / 適用時段:依需求過濾;
- 儲存。
-
點擊「通知測試」,手機應在數秒內收到一條
【簽名】您有一條告警 xxx的簡訊。
計費與合規
- 按成功發送條數計費,每 70 字/條。詳見 騰訊雲 SMS 定價。
- 每個手機號碼有頻率限制(預設 1 分鐘 1 條,同簽名 + 範本 1 天 10 條),通知類範本可工單申請調高。
- 實際發送內容必須與範本審核內容完全一致,否則會被攔截(
FailedOperation.InsertAuthFail/FailedOperation.TemplateIncorrectOrUnapproved)。
常見問題
Q1:AuthFailure.SignatureFailure?
A:Secret_Key 錯了或本機時間漂移過大。請確保伺服器時間與 NTP 同步。
Q2:FailedOperation.TemplateIncorrectOrUnapproved / 範本未審核?
A:
TemplateId填錯;- 範本未審核通過;
TemplateParamSet陣列長度與範本變數數不一致。
Q3:FailedOperation.SignatureIncorrectOrUnapproved / 簽名錯誤?
A:SignName 與審核通過的簽名不完全一致(注意空格、括號、中英文字元)。
Q4:InvalidParameterValue.InvalidPhoneNumber?
A:騰訊雲要求手機號碼為 E.164 格式(+86...)。兩種做法:
- 使用者的「手機號碼」欄位本身儲存為
+86138XXXXXXXX; - 或在請求內容裡把
{{ $sendto }}改成+86{{ $sendto }}自動拼接。
Q5:FailedOperation.InsufficientBalance?
A:帳戶餘額不足,請儲值並在控制台設定餘額告警。
Q6:LimitExceeded.PhoneNumberCountLimit 單次號碼數超限?
A:SendSms 單次最多 200 個號碼。夜鶯預設是按接收人逐一呼叫,一人一次——若要一次請求打包多個號碼,可以把請求內容改為:
{
"PhoneNumberSet": {{batchContactsJsonMarshal $sendtos}},
"SignName": "...",
"SmsSdkAppId": "...",
"TemplateId": "...",
"TemplateParamSet": ["{{$tpl.content}}"]
}
注意:這種模式下所有號碼收到的簡訊內容完全一致。
Q7:國際簡訊?
A:國際號碼直接以國碼拼接即可(如 +6587654321);但需要在騰訊雲控制台單獨開通國際簡訊,並使用國際簡訊範本。