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

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

Microsoft Teamsで投稿に「いいね」をしていないひとに対してスケジュール実行でメンションする(解説編その1)

f:id:wataruf01:20220412003151p:plain

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

フローはこちらからダウンロードできます。
github.com

概要編について

今回の投稿は概要編に記載したフローの解説編です。概要編は以下のリンクから参照してください。
wataruf.hatenablog.com

この回で解説する範囲

解説する範囲のフロー図

f:id:wataruf01:20220412001347p:plain

この範囲で解説するステップは以下の通り

  1. トリガーとした投稿の内容を取得
  2. このフローで確認対象とするメンバーの定義
  3. フローの返信先のIDを変数にセット
  4. 「スケジュール実行」と「即時実行」の分岐
  5. 「スケジュール実行」と「即時実行」の分岐後の処理

解説

1.トリガーとした投稿の内容を取得

このフローはTeams の「選択したメッセージの場合」というトリガーを使用しています。
f:id:wataruf01:20220412003151p:plain

「選択したメッセージの場合」トリガーを使うと、Teamsに投稿されている任意の投稿の操作メニューを起点としてフローを開始することができます。
f:id:wataruf01:20220412004053p:plain

フローを開始したときに「フローの実行タイミング(即時orスケジュール)」と「未完了者にメンションをするかどうか」を入力させる画面は、アダプティブカードのデザイン画面を使っています。
  ※この解説編ではフローの解説を中心にしたいため、アダプティブカードの操作説明については割愛します。
f:id:wataruf01:20220412011154p:plain

次に「メッセージ詳細を取得する」アクションを使います。このアクションを使って、トリガーになった投稿の情報を取得します。
f:id:wataruf01:20220412004430p:plain

メッセージの種類で「グループチャット」を選択している理由については下記の投稿で解説しているので、参照してください。
wataruf.hatenablog.com

2.このフローで確認対象とするメンバーの定義

このステップで、「いいね」をしているかどうかを確認する対象のメンバーを指定しています。
f:id:wataruf01:20220412004727p:plain

このステップで指定したメンバーが、このフローの最終的なアクションである「Teamsへの返信」で記載する表に表示されます。
f:id:wataruf01:20220412004943p:plain

このステップでのメンバーの指定方法をテキストの手入力にしたのは、このインプットはフローの目的に応じてカスタマイズしたいという意図があります。

メンバーの定義方法の応用例

  • Excelの表で作成したメンバー一覧を読み込む
  • トリガーを実行した投稿があるチームのメンバーを読み込む

この部分をカスタマイズしてQiitaに投稿してくれたかたがいます。後輩が見つけてくれて知りました。
(`・ω・´) ウレシイ
qiita.com

フローの返信先のIDを変数にセット

このステップでは、トリガーとした投稿が「親の投稿」であっても「返信」であっても、このフローによる返信が正しく行われるための処理を行っています。具体的には、フローの返信先の投稿を変数にセットしています。
f:id:wataruf01:20220412005804p:plain

分岐条件の内容を言葉で表すと以下の通りです。
・トリガーの投稿の返信先(ReplyToId)が null である
 → つまり、トリガーの投稿自身が「親の投稿」である
 → そのため、 フローの返信先を「トリガーの投稿ID」にする
・トリガーの投稿の返信先(ReplyToId)が null でない
 → つまり、トリガーの投稿は「返信」である
 → そのため、フローの返信先を「トリガーの投稿の返信先(ReplyToId)」にする

  • スレッド内の「返信」の返信先は必ずそのスレッドの「親の投稿」であることがポイントです。返信先を「返信」にするとフローの実行がエラーになる点に注意してください。

「スケジュール実行」と「即時実行」の分岐

このステップでは、フローを起動したときの選択によって「スケジュール実行」または「即時実行」に分岐します。
f:id:wataruf01:20220412010853p:plain

分岐の判定に使用している「choice」という動的コンテンツは、アダプティブカードで配置したコントロール(正確にはChoiceSet)が持つIDを表しています。
f:id:wataruf01:20220412011804p:plain
f:id:wataruf01:20220412014841p:plain

「スケジュール実行」と「即時実行」の分岐後の処理

前章で「choice」の値が「すぐに実行する」であるかどうかで「Yes」か「No」に分岐します。「No」の分岐にはアクションを配置していません。つまり、分岐による結果では何も行わず、後続のステップに進む(= 後続のステップを即時に実行する)ことを表しています。
f:id:wataruf01:20220412012211p:plain

Yes である場合は、スケジュール実行をセットした旨を返信したうえで、指定した日(yyyy/MM/dd HH:mm)時までフローを停止します。
f:id:wataruf01:20220412012717p:plain

この日時(yyyy/MM/dd HH:mm)はアダプティブカードから取得しています。
f:id:wataruf01:20220412012949p:plain
f:id:wataruf01:20220412013033p:plain
f:id:wataruf01:20220412013153p:plain

解説編その1は以上です。

追記:解説編その2を投稿しました。

投稿しました。
wataruf.hatenablog.com