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

更新 發佈閱讀 8 分鐘

🪄 前言:為什麼要改?

raw-image

微軟在 2025 年底確定淘汰舊的 Microsoft Teams Incoming Webhook (O365 Connector),並將通知機制整合進 Power Automate / Teams Workflow

這代表以前那條

<https://company.webhook.office.com/webhookb2/>...

的 URL 將不再維護,你需要改成新的:

<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

raw-image

⚙️ 教學步驟:簡化版 Payload 實作

Step 1. 在 Python 端修改程式碼

這裡的核心是把舊 webhook 換成 Workflow URL

Workflow URL 要先到Teams Workflow設定才能取得,
詳見[Step 2. 建立 Teams Workflow]

並將原本 "text": "..." 的結構改為 "text": [ {...}, {...} ] 陣列格式。

import requests

# 🆕 新 Workflow Webhook URL
webhook_url = "<https://environment.api.powerplatform.com/powerautomate/automations/direct/workflows/>..."

headers = {'Content-Type': 'application/json'}

payload ={
"text": [
{"title": "🚀 GCP Pub/Sub 通知", "content": "測試訊息"},
{"title": "🔥 第二則訊息", "content": "Hello Power Automate!"}
]
}
response = requests.post(webhook_url, headers=headers, json=payload)
print(response.status_code, response.text)

💡 為什麼用陣列?

因為 Workflow 可以使用「Apply to each」自動對每筆資料重複貼出一張卡片。

這對 Pub/Sub 一次推多筆事件特別實用。


Step 2. 建立 Teams Workflow

下圖是Workflow的工作流程示意圖

┌──────────────────────────────────────┐
│ When a Teams webhook request received│
│ (接收 Python 發送的 JSON) │
└──────────────┬───────────────────────┘

┌──────────────▼──────────────┐
│ Apply to each │
│ Items = @triggerBody()?['text'] │
└──────────────┬──────────────┘

┌──────────────▼──────────────┐
│ Post adaptive card in Teams │
│ (使用 Flow bot 發送) │
└─────────────────────────────┘

1️⃣ 打開 Microsoft Teams → Workflows

raw-image


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

raw-image

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

raw-image

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

raw-image

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

raw-image

Step 3. Workflow 動作設定

1️⃣回到Microsoft Teams → Workflows → 首頁,選取剛建立的工作流程並編輯

raw-image
raw-image

2️⃣執行以下步驟

  1. [選取先前步驟的輸出](標記1)中輸入:@triggerBody()?['text']
  2. 在 Adaptive Card 欄位中(標記2)貼上
{
"type": "AdaptiveCard",
"$schema": "<http://adaptivecards.io/schemas/adaptive-card.json>",
"version": "1.5",
"body": [
{"type": "TextBlock", "text": "@{items('Send_each_adaptive_card')?['title']}", "weight": "Bolder"},
{"type": "TextBlock", "text": "@{items('Send_each_adaptive_card')?['content']}", "wrap": true}
]
}

📎 小技巧:

若拿到的程式碼中拿到預設的內容是items('Apply_to_each')
在存檔時應該會出現Flow 報錯 Apply_to_each 不存在,

​這時請將items('Apply_to_each')把上面 JSON 改成items('Send_each_adaptive_card')

3️⃣正確填完應該為以下結果,就可以按存檔完成流程建立

raw-image

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

raw-image

💬 結語:適合誰用?

這個簡化版本最適合:

  • 想快速替換舊 webhook 的告警機制與通知流程的系統
  • 不需要自訂卡片樣式,只想要文字通知
  • 使用 Pub/Sub、CI/CD job、排程系統做提醒

只要兩步就能搞定新 Workflow 的轉換,未來如果想升級樣式(html的顏色/字樣...等),只要把 JSON 改成 RichTextBlock 即可,會另寫一篇提供[完整版Payload 實作]

留言
avatar-img
留言分享你的想法!
avatar-img
DavidHi的沙龍
9會員
26內容數
此篇教學 : 使用GitHub架設免費的部落格網站,搭上Hexo靜態模板,在主題頁面中尋找屬於自己的風格套版,輕鬆擁有自己的Blog外,加上留言板/SEO等設定在記錄生活同時也增進與讀者的互動頻率。
DavidHi的沙龍的其他內容
2024/11/02
本文介紹了選擇排序演算法的基本邏輯與實作過程,透過範例分析陣列排序的交換步驟,以及相關的程式碼範例,幫助讀者理解選擇排序的時間與空間複雜度。選擇排序是一個簡單易懂的演算法,對於初學者來說是學習排序演算法的良好基礎。
Thumbnail
2024/11/02
本文介紹了選擇排序演算法的基本邏輯與實作過程,透過範例分析陣列排序的交換步驟,以及相關的程式碼範例,幫助讀者理解選擇排序的時間與空間複雜度。選擇排序是一個簡單易懂的演算法,對於初學者來說是學習排序演算法的良好基礎。
Thumbnail
2024/10/14
本文介紹插入排序演算法,透過與泡沫排序的比較,詳解其運作邏輯與時間、空間複雜度的分析。以撲克牌的整理為例,解釋如何逐步將數字插入已排序的序列中,並提供C#程式碼範例來幫助理解此演算法的實作過程,適合對基礎演算法有興趣的讀者。
Thumbnail
2024/10/14
本文介紹插入排序演算法,透過與泡沫排序的比較,詳解其運作邏輯與時間、空間複雜度的分析。以撲克牌的整理為例,解釋如何逐步將數字插入已排序的序列中,並提供C#程式碼範例來幫助理解此演算法的實作過程,適合對基礎演算法有興趣的讀者。
Thumbnail
2024/09/24
本文探討排序演算法中最基本的一種:泡沫排序。雖然在日常工作中我們多使用內建函數來進行排序,但瞭解其背後的邏輯和效能對於演算法學習至關重要。此文分步介紹了泡沫排序的實作過程,並分析其時間與空間複雜度,助於讀者更深入掌握基礎演算法。
Thumbnail
2024/09/24
本文探討排序演算法中最基本的一種:泡沫排序。雖然在日常工作中我們多使用內建函數來進行排序,但瞭解其背後的邏輯和效能對於演算法學習至關重要。此文分步介紹了泡沫排序的實作過程,並分析其時間與空間複雜度,助於讀者更深入掌握基礎演算法。
Thumbnail
看更多
你可能也想看
Thumbnail
在數位轉型的浪潮中,流程自動化已成為各大企業提升效率和競爭力的重要手段。本篇文章深入探討如何使用 Power Automate 呼叫 Power Automate Desktop,並一步步介紹相關設定過程,助您輕鬆實現流程自動化。
Thumbnail
在數位轉型的浪潮中,流程自動化已成為各大企業提升效率和競爭力的重要手段。本篇文章深入探討如何使用 Power Automate 呼叫 Power Automate Desktop,並一步步介紹相關設定過程,助您輕鬆實現流程自動化。
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
本文介紹如何使用 TG Bot 來操作 MongoDB,包括讀取所有 domain、讀取特定 domain、新增 domain、批量新增 domain、修改 domain 和刪除 domain。透過 TG Bot 的指令操作,實現了自動化管理和多環境管理。
Thumbnail
本文介紹如何使用 TG Bot 來操作 MongoDB,包括讀取所有 domain、讀取特定 domain、新增 domain、批量新增 domain、修改 domain 和刪除 domain。透過 TG Bot 的指令操作,實現了自動化管理和多環境管理。
Thumbnail
本次更新了貼圖教學內容,包括靜態貼圖上傳、動態貼圖上傳、貼圖轉移教學、表情貼上傳、貼圖拼貼、群組機器人設定和頻道機器人設定教學。
Thumbnail
本次更新了貼圖教學內容,包括靜態貼圖上傳、動態貼圖上傳、貼圖轉移教學、表情貼上傳、貼圖拼貼、群組機器人設定和頻道機器人設定教學。
Thumbnail
本文介紹了Power Automate Desktop中的變數資料類型,包括簡單資料類型和進階資料類型,並提供了常見變數的用途和實際應用案例。這將有助於初學者更好地理解Power Automate Desktop的變數基本觀念,並期待下一篇文章將繼續介紹更多功能。
Thumbnail
本文介紹了Power Automate Desktop中的變數資料類型,包括簡單資料類型和進階資料類型,並提供了常見變數的用途和實際應用案例。這將有助於初學者更好地理解Power Automate Desktop的變數基本觀念,並期待下一篇文章將繼續介紹更多功能。
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
這篇文章分享了申請 AppWorks School 轉職培訓的過程,包括背景及源起、報名前準備、報名及面談、總結等內容,並提供了未來申請者的建議。如果你正在尋求轉職機會,這篇文章可能對你有所幫助。
Thumbnail
這篇文章分享了申請 AppWorks School 轉職培訓的過程,包括背景及源起、報名前準備、報名及面談、總結等內容,並提供了未來申請者的建議。如果你正在尋求轉職機會,這篇文章可能對你有所幫助。
Thumbnail
在現代的工作環境中,自動化已經成為提高效率和節省時間的關鍵。微軟的 Power Automate 提供了一個強大的工具,讓使用者能夠輕鬆地自動化日常工作流程和任務。本篇文章將介紹如何入門使用 Power Automate,以便你能夠開始建立自己的自動化流程。
Thumbnail
在現代的工作環境中,自動化已經成為提高效率和節省時間的關鍵。微軟的 Power Automate 提供了一個強大的工具,讓使用者能夠輕鬆地自動化日常工作流程和任務。本篇文章將介紹如何入門使用 Power Automate,以便你能夠開始建立自己的自動化流程。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News