きりのブログ

パソコン、開発関係の思いつきと作業記録

Microsoft Teamsで特定のワードが含まれていたらメール通知するFlow

Teamsの指定のチャンネルに特定のワードが含まれた投稿があったらメールで通知するFlowを作ってみました。ただし、動作確認が取れているのはincoming Webhook経由での投稿のみです。つまり、前記事 ラズパイで温度監視 の続きでもあります。

SharePointやOneDriveの変更を検知してTeamsに投稿するFlowの記事は見つけたのですが、逆がなかったので公開してみます。

まずは、TeamsでFlowを使えるようにします。「アプリ」から「Flow」を選択して追加します。この手順はよく見かけるので割愛。

Teamsの画面左の「・・・」からFlowを選択してサインインするとFlowとチャットする画面になります。画面上部の見出し「フロー」を選び、「+ 一から作成」でフロー作成画面に移ります。

まずはトリガー。「teams」で検索するとトリガーに「新しいチャンネルのメッセージが追加されたとき(プレビュー)」が出るのでこれを選びます。続けて対象のチームとチャンネルを選びます。

新しいステップを追加して、アクション「条件」を追加。値として「メッセージ 添付ファイル 項目」を選ぶと、「条件」が「Apply to each」のセクションに入ります。再度「条件」を開いて「値の選択」欄に式

string(items('Apply_to_each'))

を指定し、判定条件「次の値を含む」、値に監視したいワードを入れます。

最後に「はいの場合」のアクションとしてメール送信を入れて完了です。

ハマりどころとしては、Teamsのincoming Webhookで単純なテキストが投稿された場合、本文のテキストは添付ファイル扱いになること。苦肉の策として添付ファイルを文字列変換して対象ワードが含まれるか判定しています。

Flowの実行履歴やテスト実行でどんな内容がトリガーとして流れてきたのか生データが確認できるのは新しい発見でした。

前記事の続きで、温度監視して特定温度以上になったら「注意」の文言を付加して投稿するように変更していたので、その場合だけメール通知したかったのでこのような形になりました。Slackのようなキーワード通知の機能があればこんなことしなくて済むのですがねぇ。