ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

Microsoft Teams で特定のタグがつかわれたらアクションを実行する

※2022/5/10 追記:本記事のフローの強化版を作成しました。下記リンクをクリックして遷移してください。
wataruf.hatenablog.com

タグとは、Microsoft Temas の機能のひとつです。チーム内のメンバーのうち複数名にまとめてメンションを送る機能です。

Teams で特定のタグが使われたときにあらかじめ指定していたフローのアクションを実行することが今回の目的です。

今回のフローはあまり実用的なものではないです。
「ほお、こんなこともできるのかー。(`・ω・´)」という気持ちで読んでもらえると幸いです。

今回作成した、フローはこちらからダウンロードできます。
github.com

「タグ」についての詳しい説明

Microsoft のサポートページに記載されている説明は以下の通りです。

タグを使用すると、グループのユーザーに一度にすばやく連絡できます。


タグを使用すると、役割、プロジェクト、スキル、トレーニング、場所などの属性に基づいてユーザーを分類できます。 たとえば、「看護師」や「マネージャー」または「デザイナー」のタグを使用すると、名前をすべて入力しなくても、Teams のグループのユーザーに連絡できます。


タグを追加したら、チャネルで @mention します。 そのタグを割り当てられたすべてのユーザーは、個別に @mention された場合と同じように通知を受け取ります。


タグを使用するもう 1 つの方法は、新しいチャットを開始し、連絡したい相手に割り当てられたタグを選択することです。


Teams でのタグの使用


タグはチーム内のメンバーを何らかの括りでグループ化します。下図は「テスト用タグ」という名前のタグに3名を紐づけています。

このタグに対してメンションをします。

タグに紐づけられているメンバーに対して、メンションされた旨の通知が送られます。


サンプルフローの解説

それでは、タグがメンションされたときにフローを呼び出してみましょう。

このフローで見てもらいたいポイントは以下の2つです。

  • Teamsでタグが使われたときにフローでそのタグを認識できること
  • 「○○という名称のタグが使われたときにこの処理を実行する」という分岐処理が実現できること

GitHubで公開したフローではサンプルとして「使用されたタグをbotがチャットで教えてくれる」かつ「使用されたタグが "テスト用タグその2 " である場合はチャットにもう一言加える」という2つのことを実現しています。


フローは既に設定済みとします。チャネルで下図の投稿を行います。本文中で"テスト用タグ " と "テスト用タグその2 " という2つのタグをメンションします。

使用されたタグの名称がそれぞれチャットで通知されました。
また、"テスト用タグその2" のときだけ、2行目の文章が挿入されました。

このように、1回の投稿で複数のタグが使われた場合でもフローがタグを個別に認識して、タグが登場した回数だけ処理を行わせることができます。(ここでは例としてチャットの送信処理を行っています)
また、特定のタグが使われたときにそのタグ専用の処理を行うことができます。

解説

フロー全体図

フローの全体図はこちらです。

アクションごとの解説

主要なアクション2つを解説します。

このフローはあくまでサンプルであるため、主要なアクション2つのみを解説します。それ以外のアクションについてはフローをダウンロードして見てください。
github.com

「選択-メッセージからすべてのタグを抽出する」アクション

これは「データ操作」>「選択」アクションです。「メッセージ詳細を取得する」アクションで取得したJSONのなかから、タグにあたる部分を配列として抽出します。

"inputs": {
    "from": "@body('メッセージ詳細を取得する')?['mentions']",
    "select": {
        "displayName": "@item()?['mentioned']?['tag']?['displayName']"
    }
},
「条件」アクション

これは「コントロール」>「条件」アクションです。メンションされたタグのなかににあらかじめ指定したタグが含まれているかどうかを条件分岐で判定します。

サンプルのフローでは "テスト用タグその2" がメンションされたときにチャットの本文に一行追加をしています。

サンプルのフローでは「条件」コントロールを使っていますが、特定の処理を仕込みたいタグが複数ある場合は「スイッチ」アクションを使うこともできるかと思います。

最後に

今回の冒頭でこのフローが「あまり実用的なものではない」と言った理由は以下の2つです。

  1. フローのトリガーは「チャネルに新しいメッセージが追加されたとき」を使っています。そのため、このフローはスレッドが立ち上げられたときに使用されたタグのみを対象としています。つまり、返信時のメンションは対象になりません。
  2. タグには最低ひとりメンバーを紐づける必要があります。フローを開始することが目的としてタグを使うためであってもメンバーをひとり紐づけないといけません。

2 のほうは特定のメンバーのアカウントではなく専用アカウントを用意すれば問題ないかと思います。ですが、1のほうが残念です。この仕組みを活用するとしたら、スレッド立ち上げ時ではなく返信時のほうかと思います。

以上です。