2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ctcAdvent Calendar 2024

Day 10

Teams Workflows & Pythonでエラー通知

Last updated at Posted at 2024-12-09

背景

内製ツールで発生したエラーをTeamsのチャネルに通知したかったので、Teams Workflowsを使ってみました。
TeamsのIncoming Webhookを使う方法がありますが、Incoming Webhookは2025年末に廃止され、後継としてMS公式からも推奨されているため、今回Workflowsを選択しました。
https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/

WorkFlowsの作成

Teamsのアプリ画面からWorkflowsを開きます。
image.png

今回はテンプレート「Webhookを受信するとチャネルに投稿する」をそのまま使用します。
image.png

フローを確認します。
「When a Teams webhook request is received」を展開すると、HTTP POSTのURLが表示されます。これは後ほど使用します。

一方「Post card in chat or channel」を展開すると、メッセージを送信したい投稿先、チーム、チャネルを設定できるので、エラー通知を送信したい宛先を設定します。
image.png

ツール側でエラー送信

Pythonを例に説明します。
メインの処理でエラーが発生した場合、例外処理として下記関数を呼び出すようにします。

error_notification.py
import os
import requests
import logging

# ロガーの設定
logger = logging.getLogger(__name__)

def send_failure_notifications(error_message):
    """エラー発生時の通知を送信する"""
    try:
        workflows_url = "{HTTP POSTのURL}"
        notification_message = create_teams_notification_message(error_message)
        response = requests.post(workflows_url, json=notification_message)
        if response.status_code in [200, 202]:
            logger.info("Notification sent successfully.")
        else:
            logger.error(f"Failed to send notification. Status code: {response.status_code}")
    except Exception as e:
        logger.error(f"Error sending notification: {e}")

Workflowsのフローで確認したHTTP POSTのURLに向かってPOSTを投げることで、発生したエラーをTeams通知できます。

※create_teams_notification_messageは通知用アダプティブカードを構築する関数です。この部分はご自身の都合に合わせ改変してください。

実行結果

狙ったチャネルにアダプティブカードを送信できました。
image.png

最後に

当初予想していたよりも楽に実装できました。
内製ツールのエラー通知をTeamsに投げる需要は地味ながらそこそこあると思いますので、よろしければお試しください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?