透過阿里雲簡訊服務(SendSms)將告警以簡訊方式發送到值班人員手機,新手可依步驟逐步完成設定。
概述
阿里雲簡訊通知媒介利用 阿里雲 簡訊服務 · SendSms API,把告警以一般簡訊的形式推送到手機。一般作為電子郵件/IM 的補充管道——即使手機未安裝 IM,簡訊也能收到。
- 適用情境:維運值班兜底通知、未安裝 IM 的主管/客戶需要被同步告警。
- 你需要準備:
- 一個已實名認證、已開通簡訊服務的阿里雲帳號;
- 阿里雲 AccessKey ID / AccessKey Secret(建議使用 RAM 子帳號);
- 已審核通過的簡訊簽名
SignName(例如「夜鶯監控」); - 已審核通過的簡訊範本
TemplateCode(形如SMS_123456789)。
- 整個設定分三步:①在阿里雲申請簽名與範本 → ②在夜鶯新建阿里雲簡訊通知媒介 → ③為使用者設定手機號碼,並在通知規則裡選擇接收人。
阿里雲簡訊簽名與範本都需要工單審核(1~3 個工作日),且不同產業對文案要求不同,建議提前多申請幾個備用範本。
第一步:在阿里雲控制台準備資料
-
登入 阿里雲簡訊服務控制台,首次使用需要開通。
-
申請簡訊簽名:進入 國內訊息 → 簽名管理 → 新增簽名。企業使用者建議填寫營業執照上的公司簡稱,個人使用者只能用個人姓名、App 名稱等。
-
申請簡訊範本:進入 國內訊息 → 範本管理 → 新增範本。
-
範本類型選「通知簡訊」(告警情境不能選「行銷簡訊」);
-
重點:變數名稱要叫
incident,因為夜鶯預先設定的請求內容裡寫的是TemplateParam = {"incident":"故障{{$tpl.incident}},請及時處理"}——也就是說「故障 + 規則名 + ,請及時處理」這一整段會作為${incident}的取值傳給阿里雲; -
建議的範本內容(最簡單):
您有一條告警 ${incident}審核通過後使用者手機收到的簡訊是:
【你的簽名】您有一條告警 故障CPU使用率超門檻,請及時處理。 -
提交審核,通過後得到
SMS_XXXXXXXX。
-
-
在 RAM 存取控制 建立子帳號,授予
AliyunDysmsFullAccess權限,記下 AccessKey ID / AccessKey Secret。
第二步:在夜鶯新建阿里雲簡訊通知媒介
-
登入夜鶯 → 左側選單 通知 → 通知媒介。
-
在左側類型面板中點擊 阿里雲簡訊,進入新建頁面(URL
/notification-channels/add?ident=ali-sms)。 -
填寫基礎資訊:

區塊 欄位 是否需要修改 說明 基礎設定 名稱 需要 例如 阿里雲簡訊變數設定 聯絡方式 保持預設 Phone簡訊以使用者的手機號碼作為 $sendtoHTTP 設定 URL 保持預設 https://dysmsapi.aliyuncs.comHTTP 設定 請求方法 POSTHTTP 設定 請求標頭 保持預設 Content-Type: application/json、Host: dysmsapi.aliyuncs.com,簽章時需要,請勿刪除 -
往下找到「請求參數」,把預先設定的欄位裡的佔位符替換成你的實際值:

參數名稱 值 說明 AccessKeyId 你的 AK ID 第一步 RAM 控制台取得的 LTAI5t...AccessKeySecret 你的 AK Secret 對應的 Secret PhoneNumbers {{ $sendto }}保持預設,發送時會替換為接收人手機號碼 SignName 你的簡訊簽名 第一步審核通過的簽名名稱,完全照抄,一個字都不能差 TemplateCode SMS_XXXXXXXX第一步審核通過的範本編號 TemplateParam {"incident":"故障{{$tpl.incident}},請及時處理"}JSON 字串;左邊 key(這裡是 incident)必須與阿里雲範本裡的${xxx}變數名稱完全一致。{{$tpl.incident}}來自系統內建的Aliyun SMS訊息範本(預設為{{$event.RuleName}})夜鶯後端會自動使用你填寫的 AK/SK 計算 ACS3-HMAC-SHA256 簽章,並在呼叫前把
AccessKeyId / AccessKeySecret從 query 中移除,不會以明文形式出現在實際請求中。 -
點擊 儲存。
第三步:為使用者設定手機號碼 & 通知規則
- 進入 人員組織 → 使用者管理,為需要接收簡訊的使用者填寫手機號碼欄位(11 位中國手機號碼;國際號碼需另外開通國際簡訊)。
- 進入 通知 → 通知規則 → 新增:
- 通知媒介:選擇阿里雲簡訊媒介;
- 訊息範本:選系統內建的
Aliyun SMS——它的incident欄位預設渲染為{{$event.RuleName}},搭配預設的請求內容TemplateParam = {"incident":"故障{{$tpl.incident}},請及時處理"},最終送到阿里雲的${incident}取值約等於故障<規則名>,請及時處理; - 接收人 / 接收團隊:選擇目標使用者;
- 適用級別 / 適用時段:依需求過濾;
- 儲存。
- 點擊「通知測試」,若參數正確,手機會在數秒內收到一條
【你的簽名】 您有一條告警 xxx的簡訊。
阿里雲側的計費與合規
- 簡訊按條計費,每 70 字一條,超過的內容會拆分成多條收費。具體價格參考 阿里雲簡訊定價。
- 簡訊內容必須與範本審核時的文案完全一致。範本裡沒有的文字、或被審核駁回的關鍵字,阿里雲會拒發(回傳
isv.OUT_OF_SERVICE或isv.ILLEGAL_CONTENT)。 - 每個簽名 + 範本對同一手機號碼有頻率限制(預設 1 分鐘 5 條、1 小時 10 條、24 小時 50 條,通知類範本可工單申請調整)。
常見問題
Q1:回傳 SignatureDoesNotMatch?
A:AK Secret 填錯;或簽名內容包含不可見字元(換行、空格)。
Q2:回傳 isv.SMS_SIGNATURE_ILLEGAL / 簽名不合法?
A:SignName 參數值與實際審核通過的簽名不一致,請檢查空格、標點、中英文括號。簽名欄位必須嚴格一致。
Q3:回傳 isv.OUT_OF_SERVICE / isv.ILLEGAL_CONTENT?
A:範本內容與審核時不符,或含有敏感詞。回到阿里雲控制台,點進範本詳情查看「原始範本內容」,把 TemplateParam 填入的值控制在與範本一致的上下文中。
Q4:回傳 isv.MOBILE_NUMBER_ILLEGAL?
A:使用者填的手機號碼格式不對。國內號碼只填 11 位(不帶 +86);國際號碼需走 SendMessageToGlobe(不同 API,需另建一個通知媒介、手動修改 URL 與 action)。
Q5:我希望簡訊裡同時出現告警規則名 + 觸發值 + 時間,但範本只接受一個變數?
A:
- 方法一:申請一個包含多個變數的範本,例如
【${name}】 ${level} 告警:${detail},然後在TemplateParam裡分別賦值; - 方法二:讓
{{$tpl.incident}}在訊息範本裡拼接成一行緊湊文字(不超過 20 字),直接塞到一個變數裡發送。
Q6:一次告警想群發給多人?
A:阿里雲 SendSms 單次最多支援 1000 個手機號碼,但夜鶯目前是按接收人逐一呼叫,一人一次。人數較多時建議適當拉長「重試間隔」以避免頻率限制。