【Power Automate】Webhookを使ってPythonからTeamsチャット通知する

PowerAutomate

Power AutomateでWebhookを作成し、
PythonからMicrosoft Teamsへ通知する方法を解説します。

処理開始・正常終了・エラー時の通知まで、
実行可能なサンプルコード付きで紹介します。

Power AutomateでWebhookを受け取るフローを作る

最初に、PythonからのHTTPリクエストを受け取るフローを作成します。

このフローは、Pythonから送られたデータを受け取り、
Microsoft Teamsにメッセージを投稿する役割を持ちます。
 

1. Microsoft 365にアクセスします。
https://m365.cloud.microsoft/apps/?auth=2
 

2. 「Power Automate」

 

3. 「Create」> 「Instant cloud flow」

 

4. 「Flow name」に任意の名前を入力し、「Skip」

 

5. 「Add a trigger」をクリック

 

6. 「webhook」で検索し、
  「When a Teams webhook request is received」をクリック

 

7. 「Who can trigger the flow」で “Anyone” を選択し、プラスボタンをクリック
  「HTTP URL」はフローを保存した後に生成されるので、いまは触らなくてOK

 

8. 「Control」

 

9. 「Apply to each」

 

10. 「fx」

 

11. 「Dynamic content」を選択し、入力ボックスに以下コードを入力して「Add」
triggerOutputs()?['body']?['attachments']

 

12. プラスボタンをクリック

 

13. 「Post card in a chat or channel」をクリック

 

14. 「fx」

 

15. 「Dynamic content」を選択し、入力ボックスに以下コードを入力して「Add」
item()?['content']

 

16. 画面右上の「save」をクリック

 

17. Power Automateのフロー完成
画面左上でフローを任意の名前に変えるとよい(今回は例として “test” とした)

 

18. 「When a Teams webhook request is received」をクリックして、
「HTTP URL」に値が入っていれば設定完了です。

 
 

PythonからWebhookを呼び出す

Power Automateで取得したWebhook URLに、
PythonからPOSTリクエストを送信します。

処理開始・終了・エラー時に通知するサンプルコードを紹介します。


import requests
import json
import time
import traceback

# Teamsチャット通知用
WEBHOOK_URL = "https://<Power AutomateのWebhook URLに置き換えてください>"

def send_teams_message(text):
    message = {
        "attachments": [
            {
                "contentType": "application/vnd.microsoft.card.adaptive",
                "content": {
                    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
                    "type": "AdaptiveCard",
                    "version": "1.2",
                    "body": [
                        {
                            "type": "TextBlock",
                            "text": text,
                            "wrap": True,
                            "markdown": True
                        }
                    ]
                }
            }
        ]
    }

    requests.post(
        url=WEBHOOK_URL,
        data=json.dumps(message),
        headers={"Content-Type": "application/json"}
    )

# メイン処理
def main():

    # 開始通知
    send_teams_message("▶️ 処理を開始しました。")

    try:
        # -------------------------
        # 業務処理を入れる
        # -------------------------

        # 正常終了通知
        send_teams_message("✅ 処理が正常に完了しました。")

    except Exception as e:
        send_teams_message(
            "❌ 処理でエラーが発生しました。\n\n"
            f"{str(e)}"
        )

# ===============================
# 実行
# ===============================
if __name__ == "__main__":
    main()

 
 

Pythonを実行してTeamsに通知されるか確認する

Pythonスクリプトを実行すると、
Microsoft Teams に次のようなメッセージが届きます。


 

エラーが発生した場合は、次のような通知になります。

 

このように、
・処理が始まったこと
・正常に終わったこと
・途中で失敗したこと

をTeams上で確認できるようになります。
 

この記事がお役に立ちますと幸いです。

・【Power Automate Desktop】RPA実践テクニック・使用例まとめ
 

【Power Automate Desktop】RPA実践テクニック:使用例 29選
PowerAutomateDesktopを使って、Excelでできることをご紹介します。この記事がお役に立ちますと幸いです。ぜひお試しください!

 

「シゴトがはかどる Power Automate Desktopの教科書」
業務自動化ツールの初心者でも使えるように、初歩から丁寧に解説
繰り返し発生する作業を本書で自動化して仕事を効率化しましょう!!