【Teams 通知】舊版 Webhook 淘汰!Power Automate / Workflow 轉換教學 (簡化版)

🪄 前言:為什麼要改?

微軟在 2025 年底確定淘汰舊的 **Microsoft Teams Incoming Webhook (O365 Connector)**,
並將通知機制整合進 Power Automate / Teams Workflow。
這代表以前那條
1 | https://company.webhook.office.com/webhookb2/... |
的 URL 將不再維護,你需要改成新的:
1 | https://environment.api.powerplatform.com/powerautomate/automations/direct/workflows/... |
幸好,轉換並不難。
目前通知機制的流程為: GCP Pub/Sub ⇒ Cloud Function(Python ) ⇒ Webhook(URL) ⇒ Teams
需要修改的部分為:
✔️ Cloud Function(Python ):調整腳本程式碼
✔️ Webhook(URL) : 改為 從 Teams 中的 Power Automate / Workflow產生的URL
✅ 總結比較
| 類型 | 舊 Webhook | 新 Workflow |
|---|---|---|
| URL 網域 | webhook.office.com |
environment.api.powerplatform.com |
| 傳輸格式 | HTML 文字 | Adaptive Card JSON |
| 顏色/樣式 | HTML tag | RichTextBlock / TextRun |
| 成功回應 | 200 | 202 |
| 顯示效果 | 純文字 | 支援紅字、粗體、連結、動作 |
⚙️ 教學步驟:簡化版 Payload 實作
Step 1. 在 Python 端修改程式碼
這裡的核心是把舊 webhook 換成 Workflow URL,
並將原本 "text": "..." 的結構改為 "text": [ {...}, {...} ] 陣列格式。
1 | import requests |
1 | import requests |
💡 為什麼用陣列?
因為 Workflow 可以使用「Apply to each」自動對每筆資料重複貼出一張卡片。
這對 Pub/Sub 一次推多筆事件特別實用。
Step 2. 建立 Teams Workflow
下圖是Workflow的工作流程示意圖
1 | ┌──────────────────────────────────────┐ |
1️⃣ 打開 Microsoft Teams → Workflows

2️⃣ 點選上方[建立]欄位後,點選[收到webhook要求時發布在頻道中(Post to a channel when a webhook request is received)]的範本

3️⃣填入該通知設定的流程名稱

4️⃣設定要通知的團隊(Teams)與頻道(Channel),這是階層的關係(團隊內的某個頻道)

5️⃣儲存後複製 HTTP POST URL → 貼回 Python 的 webhook_url

Step 3. Workflow 動作設定
1️⃣回到Microsoft Teams → Workflows → 首頁,選取剛建立的工作流程並編輯

2️⃣執行以下步驟
- [選取先前步驟的輸出] (標記1)中輸入:
@triggerBody()?['text'] - 在 Adaptive Card 欄位中(標記2)貼上
1 | { |
📎 小技巧:
若拿到的程式碼中拿到預設的內容是items('Apply_to_each')
在存檔時應該會出現Flow 報錯 Apply_to_each 不存在,
這時請將items('Apply_to_each')把上面 JSON 改成items('Send_each_adaptive_card')。
3️⃣正確填完應該為以下結果,就可以按存檔完成流程建立

4️⃣測試後會在Teams指定的接收通知頻道收到以下結果

💬 結語:適合誰用?
這個簡化版本最適合:
- 想快速替換舊 webhook 的告警機制與通知流程的系統
- 不需要自訂卡片樣式,只想要文字通知
- 使用 Pub/Sub、CI/CD job、排程系統做提醒
只要兩步就能搞定新 Workflow 的轉換,未來如果想升級樣式(html的顏色/字樣…等),只要把 JSON 改成 RichTextBlock 即可,會另寫一篇提供[完整版Payload 實作]