透過企業微信群組自訂機器人(Webhook)將告警推送到企業微信群組,新手可依步驟逐步完成設定。

概述

企業微信群組機器人通知媒介,用來把夜鶯產生的告警事件透過企業微信群組自訂機器人(Webhook)推送到指定的企業微信群組,訊息形式為 Markdown 文字。

  • 適用情境:希望將告警發送到企業微信群組,團隊在群組內即時回應。
  • 你需要準備:一個企業微信群組,以及對該群組擁有「新增群組機器人」權限。
  • 整個設定分三步:①在企業微信群組裡新增群組機器人 → ②在夜鶯新建企業微信通知媒介 → ③在通知規則裡填入 Key

如果你希望透過企業微信的應用訊息(例如發送到個人單聊、依成員 userid @ 指定人)並支援發送圖文卡片,請參考企業微信應用文件。本文只介紹最常用、最簡單的群組機器人方式。

第一步:在企業微信群組裡新增群組機器人

  1. 開啟目標企業微信群組,右上角 群組設定 → 群組機器人 → 新增機器人 → 新建機器人

  2. 輸入機器人名稱(例如 夜鶯告警)和頭像,點擊「新增」。

  3. 新增完成後,在彈出的機器人管理頁中複製 Webhook 位址,格式如:

    https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    

    其中 ?key= 後面那一串就是後面在夜鶯裡要填的 Key(實際是一個 UUID),請先儲存好。

企業微信官方限制:單個機器人每分鐘最多發送 20 條訊息,超過會被限流。如果告警量非常大,建議拆分到多個群組/多個機器人,或在通知規則裡啟用告警收斂。

第二步:在夜鶯新建企業微信通知媒介

  1. 登入夜鶯 → 左側選單 通知 → 通知媒介

  2. 在左側媒介類型面板中點擊 企業微信,進入新建頁(對應 URL /notification-channels/add?ident=wecom)。

    通知媒介入口

  3. 填寫基礎資訊並儲存,絕大多數欄位系統已經預先填好,只需要修改「名稱」:

    企業微信通知媒介表單

    區塊 欄位 是否需要修改 說明
    基礎設定 名稱 需要 例如 企業微信群組機器人,在通知規則裡選擇媒介時看到的就是這個名稱
    基礎設定 啟用 保持開啟 關閉後該媒介不會被發送
    變數設定 聯絡方式 可不填 企業微信群組機器人的 webhook 介面不支援透過 atMobiles 參數 @ 指定人,不用選
    變數設定 參數設定 保持預設,不要刪除 已預先設定 keybot_name 兩個參數,真正的 Key 在第三步的通知規則裡填寫
    HTTP 設定 URL 保持預設 https://qyapi.weixin.qq.com/cgi-bin/webhook/send
    HTTP 設定 請求方法 POST 企業微信 Webhook 只接受 POST
    HTTP 設定 請求標頭 Content-Type: application/json 預設已填好
  4. 繼續往下可以看到「請求參數」和「請求內容」,這兩段是企業微信發送的核心邏輯,保持預設即可

    HTTP 設定和請求內容

    • 請求參數 裡預先設定了 key = {{$params.key}},表示真正的 Key 來自於通知規則裡填寫的 key 參數;

    • 請求內容 已預先設定為企業微信 Markdown 訊息格式:

      {
        "msgtype": "markdown",
        "markdown": {
          "content": "{{$tpl.content}}"
        }
      }
      

      其中 {{$tpl.content}} 來自於「訊息範本」中名為 Wecom 的範本(系統內建,包含告警級別、規則名稱、觸發值、標籤、時間等欄位)。

  5. 點擊左下角 儲存,一條類型為「企業微信」的通知媒介就建好了。

說明:夜鶯 v8 已不再像舊版那樣把 Key 存在媒介本身,同一個企業微信媒介可以被多個群組/多個機器人重複使用,每條通知規則填自己的 key 即可。

第三步:在通知規則裡填入 Key

企業微信機器人 Webhook 位址裡 ?key= 後面的那段 UUID,要在通知規則裡填寫:

  1. 左側選單 通知 → 通知規則 → 新增(或編輯既有規則)。

  2. 在「通知設定」區塊:

    • 通知媒介:選擇你剛剛建立的企業微信媒介;
    • 訊息範本:選擇 Wecom(系統內建,若沒有,請到「訊息範本」裡匯入預設範本);
    • Key:貼上第一步從企業微信取得的 Key(只填 key= 後面那一串 UUID,不要帶 URL);
    • Bot Name:選填,填一個方便自己辨識的名稱,例如 夜鶯監控
    • 適用級別 / 適用時段 / 適用標籤:依需求過濾要推送的事件。
  3. 儲存後,點擊「通知測試」即可發送一條測試訊息,正常情況下企業微信群組會立即收到一條 Markdown 告警。

一個企業微信媒介 + 多個機器人

如果不同業務線希望推送到不同群組,不需要新建媒介,只要在「通知規則」裡新增一條規則、填入不同的 key 即可。

進階:發送告警截圖

預設請求內容只會發送文字訊息。若要把告警曲線截圖一併推送到企業微信群組,可以在預設請求內容下方再追加一段圖片訊息。企業微信機器人支援 msgtype: image,但需要先在媒介的「進階設定」中把 App 相關憑證設定好,由夜鶯在發送時自動上傳圖片並取回 media_id。詳細步驟較多,新手不建議首次設定時啟用,等熟悉了基本的群組機器人後,再參考企業微信 · 群組機器人設定說明自行擴充。

常見問題

Q1:提示 invalid webhook url(webhook 位址無效)?

A:通知規則裡填的 Key 格式不對。應該只填 ?key= 後面那一串 UUID,不要帶 https://...?key= 前綴

Q2:提示 "errcode":93000 / "errmsg":"invalid bot"(機器人無效)?

A:Key 錯了或對應的機器人已被從群組裡移除。回到企業微信群組 → 群組設定 → 群組機器人,重新打開該機器人並確認 Webhook 位址。

Q3:訊息太多被限流(回傳 "errcode":45009 / too many requests)?

A:企業微信官方限制單機器人 20 條/分鐘。建議:

  • 啟用告警收斂/告警聚合;
  • 依業務拆分到多個群組;
  • 僅把一級/二級告警發到企業微信,三級告警改用電子郵件等非同步管道。

Q4:訊息收到了但沒有任何格式,顯示一大段原始 JSON?

A:請求內容裡 msgtype 必須是 markdown,且 JSON 格式要合法。如果你改過請求內容,請先對照 企業微信 markdown 訊息格式 校驗,並在儲存前使用 JSON 格式化工具確認沒有語法錯誤。

Q5:可以直接在請求內容裡填完整 URL 嗎?

A:可以。系統對 key 的取值做了相容處理——如果填寫的值以 http://https:// 開頭,會當作完整 Webhook 位址直接發送;否則會拼接為 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<你填的值>

Q6:支援 @ 指定成員嗎?

A:企業微信群組機器人的 webhook 介面不支援像釘釘那樣透過 atMobiles 參數 @ 手機號——只能在 markdown 內容中以 <@userid> 手動嵌入企業微信的成員 userid,使用相對複雜。如果一定要 @ 指定人,建議改用企業微信應用訊息

參考資料

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云