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

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

【解説編その2】[強化版]Microsoft Teams で特定のタグがつかわれたらアクションを実行する

掲題のフローの解説編その2です。

フローはGitHubで公開しています。
github.com

解説の経緯

今回の投稿は概要編解説編その1 の続きです。

この回で解説する範囲

解説する範囲のフロー図

この回で解説する範囲は、フロー全体のうち下図の赤枠の部分です。

赤枠で囲んだ部分だけ取り出した図は以下の通りです。

今回の範囲の目的は「タグでは無い箇所で"TagTrigger"というキーワードが使われたケースの対処方法」

前回 の範囲で得たものは、下記のようなタグの配列です。

[
  {
    "displayName": "TagTrigger:ステータスを「受理済み」に更新"
  }
]


今回の範囲で行う解説するために先に触れておく必要があることは、そもそも「キーワードが言及された場合」が何をトリガーにしているか、です。

そもそも「キーワードが言及された場合」トリガーはどんな条件でフローを実行するのか

「キーワードが言及された場合」トリガーがフローを実行する条件は以下の通りです。

  • 指定したチャット(またはチャネル)で指定したキーワードが使われること
  • トリガーに指定できるのは個々の単語のみ。1 語を超える長さのフレーズに対しては起動しない
  • 件名・本文・返信のいずれもトリガーの対象になる

このフローで設定している内容を例にすると、指定したチャネルの件名・本文・返信のどこでTagTriggerを入力してもフローが実行されます。

今回作成されたフローではタグによってキーワードが使われた場合にのみタグに紐づくアクションを実行したいため、それ以外のパターンでトリガーが実行された場合はそれらのアクションが実行されないように分岐条件を使用しています。

分岐条件の内容を解説します。

ステップごとの説明

「条件-メッセージにタグがあるか」アクション

このアクションは「コントロール」>「条件」アクションです。このアクションは、トリガーである投稿でタグが使われているかどうかを判定しています。

empty関数を使って前回 の範囲で取得した出力が空であるかを判定し、空である(= タグが使われていない)がtrue である場合は「はい」に分岐します。反対に、空でない(= タグが使われている)場合は「いいえ」に分岐します。

コード:

  • empty(body('選択-メッセージからすべてのタグを抽出する'))
  • 次の値に等しい
  • true

「はい」に分岐した場合

空である(= タグが使われていない)がtrue である場合は「はい」に分岐します。この場合は「終了」アクションでフローを終わらせます。

「いいえ」に分岐した場合

空でない(= タグが使われている)場合は「いいえ」に分岐します。この場合はここでアクションは何も行わずにフローを次の工程に進ませます。

そもそも何でキーワードを手入力させずに「タグ」で入力させているのか?

キーワードを「タグ」で入力させている理由は、「キーワードが言及された場合」トリガーとタグの機能の特徴を組み合わせたことによって、直観的に使用できるコマンドをチームメンバーに提供したいからです。

コマンドとは

コマンド 【command】
コマンドとは、命令(する)、指揮(する)、指令、支配(する)などの意味を持つ英単語。ITの分野では、人間からコンピュータへ、あるいは機器間、ソフトウェア間などで交わされる、実行すべき処理の指示や依頼などのことをコマンドということが多い。

https://e-words.jp/w/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.html


「キーワードが言及された場合」トリガーは、フローの所有者だけではなく、指定したチャット(またはチャネル)に投稿されたすべてのユーザーの投稿をトリガーにできます。このフローはチームメンバー全員が使うことを想定しています。

ですが、実行したアクションに紐づくキーワードを手入力にすると、キーワードが正確に一致していないとフローを起動させることができません。

スペルミスによってフローの実行に失敗する例:
※ Triggerの「g」がひとつ足りない


キーワードをタグにすることで、「@Tag」を入力したあとは指定可能なアクションを一覧から選択することができます。

使用イメージ(動画)
 ※ ちなみに、このトリガーはポーリングトリガーではなくWebhookです。そのため即時実行されます。

今回の範囲の結果として得られるもの

今回の範囲で行ったことは「タグでは無い箇所で"TagTrigger"というキーワードが使われたケースの対処方法」です。

次でこのフローの解説編は最後です。内容は「キーワードに紐づいたアクションの実行。(例としてリストアイテムの投稿と更新を解説)」です。

今回は以上です。

追記:「解説編その3」を投稿しました。

wataruf.hatenablog.com