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

更新 發佈閱讀 12 分鐘

🪄 前言:為什麼要改?

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 實作(含顏色、粗體與連結樣式)

這邊實作完整版的方式有兩種,因為完整版涵蓋的功能有(含顏色、粗體與連結樣式)等,因此會

  1. Python 傳簡單資料、Flow 用 RichTextBlock 組樣式卡
  2. Python 傳簡單資料+RichTextBlock 組樣式卡、Flow 不用特別設定

我目前示範的是第1種

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格式為以下內容
#"text": f"<b style='color:red;'>【{log_level}】</b> <b>[{project_id}]</b> - {service_name} <br><br> <b>錯誤訊息</b> : {error_msg}<br> <b>詳細資訊</b>:<a href='{url}' style='color:red;'>{url}</a>"

#修改text為以下的資料結構
"text": [
{
"log_level": log_level,
"project_id": project_id,
"service_name": service_name,
"error_msg": error_msg,
"url": url
}
]
}

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

2️⃣執行以下步驟

  1. [選取先前步驟的輸出] (標記1)中輸入:@triggerBody()?['text']
  2. 在 Adaptive Card 欄位中(標記2)貼上
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.5",
"body": [
{
"type": "RichTextBlock",
"inlines": [
{
"type": "TextRun",
"text": "【@{items('Send_each_adaptive_card')?['log_level']}】",
"color": "Attention",
"weight": "Bolder"
},
{
"type": "TextRun",
"text": " [@{items('Send_each_adaptive_card')?['project_id']}] - @{items('Send_each_adaptive_card')?['service_name']}",
"weight": "Bolder"
}
]
},
{
"type": "TextBlock",
"text": "",
"spacing": "Small"
},
{
"type": "RichTextBlock",
"inlines": [
{
"type": "TextRun",
"text": "錯誤訊息: ",
"weight": "Bolder"
},
{
"type": "TextRun",
"text": "@{items('Send_each_adaptive_card')?['error_msg']}",
"wrap": true
}
]
},
{
"type": "RichTextBlock",
"inlines": [
{
"type": "TextRun",
"text": "詳細資訊: ",
"weight": "Bolder"
},
{
"type": "TextRun",
"text": "@{items('Send_each_adaptive_card')?['url']}",
"color": "Attention",
"selectAction": {
"type": "Action.OpenUrl",
"url": "@{items('Send_each_adaptive_card')?['url']}"
}
}
]
}
]
}

📎 小技巧:

若拿到的程式碼中拿到預設的內容是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

這樣就能同時:

  • 維持原有 payload 架構(你不用改 Python 程式太多)
  • 又能在 Teams 呈現紅字、粗體、超連結效果

💬 結語:適合誰用?

這個完整版本最適合:

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









留言
avatar-img
DavidHi的沙龍
10會員
37內容數
此篇教學 : 使用GitHub架設免費的部落格網站,搭上Hexo靜態模板,在主題頁面中尋找屬於自己的風格套版,輕鬆擁有自己的Blog外,加上留言板/SEO等設定在記錄生活同時也增進與讀者的互動頻率。
DavidHi的沙龍的其他內容
2025/10/30
示範如何將舊的 Microsoft Teams Incoming Webhook 遷移至 Power Automate。 文章包含 Python Cloud Function 程式碼修改、Teams Workflow 設定,以及簡化版 Adaptive Card Payload 實作。
Thumbnail
2025/10/30
示範如何將舊的 Microsoft Teams Incoming Webhook 遷移至 Power Automate。 文章包含 Python Cloud Function 程式碼修改、Teams Workflow 設定,以及簡化版 Adaptive Card Payload 實作。
Thumbnail
2024/11/02
本文介紹了選擇排序演算法的基本邏輯與實作過程,透過範例分析陣列排序的交換步驟,以及相關的程式碼範例,幫助讀者理解選擇排序的時間與空間複雜度。選擇排序是一個簡單易懂的演算法,對於初學者來說是學習排序演算法的良好基礎。
Thumbnail
2024/11/02
本文介紹了選擇排序演算法的基本邏輯與實作過程,透過範例分析陣列排序的交換步驟,以及相關的程式碼範例,幫助讀者理解選擇排序的時間與空間複雜度。選擇排序是一個簡單易懂的演算法,對於初學者來說是學習排序演算法的良好基礎。
Thumbnail
2024/10/14
本文介紹插入排序演算法,透過與泡沫排序的比較,詳解其運作邏輯與時間、空間複雜度的分析。以撲克牌的整理為例,解釋如何逐步將數字插入已排序的序列中,並提供C#程式碼範例來幫助理解此演算法的實作過程,適合對基礎演算法有興趣的讀者。
Thumbnail
2024/10/14
本文介紹插入排序演算法,透過與泡沫排序的比較,詳解其運作邏輯與時間、空間複雜度的分析。以撲克牌的整理為例,解釋如何逐步將數字插入已排序的序列中,並提供C#程式碼範例來幫助理解此演算法的實作過程,適合對基礎演算法有興趣的讀者。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
本文介紹三款TG植物性切削液:TG2469、TG2121和TG3600,它們具有環保、高效的特性,能有效提升加工效率、延長刀具壽命並改善工作環境。文章詳細說明三款切削液的特性、適用材質和優勢,並強調其符合ESG、綠色供應鏈的標準,以及對提升臺灣傳統產業的意義。
Thumbnail
本文介紹三款TG植物性切削液:TG2469、TG2121和TG3600,它們具有環保、高效的特性,能有效提升加工效率、延長刀具壽命並改善工作環境。文章詳細說明三款切削液的特性、適用材質和優勢,並強調其符合ESG、綠色供應鏈的標準,以及對提升臺灣傳統產業的意義。
Thumbnail
本文探討永續發展與人與空間的關係,以植物性切削液為例,說明如何在工業生產中兼顧效率與環保。文章闡述傳統礦物性切削液的環境汙染問題,以及植物性切削液作為更永續替代品的優勢,呼籲企業和個人共同為永續未來努力。
Thumbnail
本文探討永續發展與人與空間的關係,以植物性切削液為例,說明如何在工業生產中兼顧效率與環保。文章闡述傳統礦物性切削液的環境汙染問題,以及植物性切削液作為更永續替代品的優勢,呼籲企業和個人共同為永續未來努力。
Thumbnail
創新講師  陳建銘老師分享AI教父 輝達執行長 黃仁勳,如何開一場有效的「創新思考會議」?
Thumbnail
創新講師  陳建銘老師分享AI教父 輝達執行長 黃仁勳,如何開一場有效的「創新思考會議」?
Thumbnail
[時事選讀]本週小選讀:薄瓜瓜、呂禮詩、11月颱風[2024-1110-1117] 本篇文章為每週定期專欄,提供目前戰術少女組四位編輯的選讀與看法,Yelena為政治時事觀察、Urica負責民防準備與求生知識、Nina專注於軍事觀察、Grace則是主攻本土歷史。
Thumbnail
[時事選讀]本週小選讀:薄瓜瓜、呂禮詩、11月颱風[2024-1110-1117] 本篇文章為每週定期專欄,提供目前戰術少女組四位編輯的選讀與看法,Yelena為政治時事觀察、Urica負責民防準備與求生知識、Nina專注於軍事觀察、Grace則是主攻本土歷史。
Thumbnail
雨從午夜一直下到上午還未停歇,令人擔憂;然而越接近遊行時刻,天空越漸明亮,雨不但離去,還換陽光登場!完美詮釋了Team Taiwan在這次世界棒球12強賽中的歷程。
Thumbnail
雨從午夜一直下到上午還未停歇,令人擔憂;然而越接近遊行時刻,天空越漸明亮,雨不但離去,還換陽光登場!完美詮釋了Team Taiwan在這次世界棒球12強賽中的歷程。
Thumbnail
CNC加工技術在現代製造業中扮演著至關重要的角色,本文詳細介紹了CNC加工的基本概念、主要特點、歷史發展以及在製造業中的重要性。此外,文章也重點推薦使用環保的植物性切削液,以提升機臺管理、保障員工健康並履行企業社會責任。
Thumbnail
CNC加工技術在現代製造業中扮演著至關重要的角色,本文詳細介紹了CNC加工的基本概念、主要特點、歷史發展以及在製造業中的重要性。此外,文章也重點推薦使用環保的植物性切削液,以提升機臺管理、保障員工健康並履行企業社會責任。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News