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

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

【Power Automate】【解説編】いいねをしたひとを起点にチャット・会議を開始する

掲題のフローについての解説編です。


先日の「気ままに勉強会 #48」で「"いいね"から会議が始められたら便利そう」というコメントをいただきました。
実はもう作ってました。\( 'ω')/


このフローをGitHubで公開しました。下記リンク先からダウンロードしてください。
github.com

解説の経緯

今回の投稿は概要編の続きです。

フローの使用イメージ

フローの使用イメージについては概要編に記載しています。概要編を未読のかたはそちらを先に参照ください。


 
  

解説の範囲について

「投稿にいいねをしたひとを取得する」ステップについては別投稿を参照してください

投稿を取得するアクション(下図の赤枠)については過去に投稿したこちらの記事で解説したフローと同じです。そのため、今回は説明を割愛します。
wataruf.hatenablog.com

解説する範囲

今回解説する範囲は下図の赤枠の部分です。

ステップごとの解説

「変数を初期化する-グループチャットの対象メンバー」

このアクションは「変数」>「変数を初期化する」です。後続のアクションでチャットメンバーを格納するための変数です。初期値は空白です。

プロパティ

"name": "グループチャットの対象メンバー",
"type": "array"

 

「変数を初期化する-メール本文」

このアクションは「変数」>「変数を初期化する」です。後続のアクションで本文を格納するための変数です。初期値は空白です。

プロパティ

"name": "メール本文",
"type": "string"

 

「条件-対象は「いいね」したひとである」

このアクションは「コントロール」>「条件」です。グループチャットを開始する対象が「いいねしたひと」なのか「いいねをしていないひと」なのかで処理を分岐します。


グループチャットを開始する対象が「いいねしたひと」なのか「いいねをしていないひと」なのかは、フローの開始時に指定します。

  • 「@triggerBody()?['entity']?['cardOutputs']?['choice']」が
  • 次の値に等しい
  • "「いいね」したひと"

 

「はいの場合」に実行する処理

この分岐のアクションは下図の通りです。


最初のアクションは「変数」>「変数の設定」です。この解説では説明を割愛しているアクションで取得した「リアクションしたひとのメールアドレス一覧」変数の中身をグループチャットの対象メンバーとして設定しています。

プロパティ

"name": "グループチャットの対象メンバー",
"value": "@variables('リアクションしたひとのメールアドレス一覧')"


次のアクションは「変数」>「変数の設定」です。"いいねしたひとをグループチャットの対象とした"旨を伝えるお知らせの本文を定義します。

プロパティ

"name": "メール本文",
"value": "指定した投稿に「いいね」をしたひととのグループチャットを作成しました。\n\n【元のスレッド】\n<a href=\"@{triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['linkToMessage']}\">スレッドを開く</a>"

 

「いいえの場合」に実行する処理:

この分岐のアクションは下図の通りです。


最初のアクションは「データ操作」>「アレイのフィルター処理」です。メンバーの全量と"いいねをしたメンバー一覧"を比較して、「いいねをしていないメンバー一覧」を取得します。

プロパティ

"from": "@variables('チェック対象のメンバー')",
"where": "@equals(contains(variables('リアクションしたひとのメールアドレス一覧'), item()), false)"


次のアクションは「変数」>「変数の設定」です。

プロパティ

"name": "グループチャットの対象メンバー",
"value": "@body('アレイのフィルター処理-「いいね」していないひとのID一覧')"


次のアクションは「変数」>「変数の設定」です。"いいねしていないひとをグループチャットの対象とした"旨を伝えるお知らせの本文を定義します。

プロパティ

"name": "メール本文",
"value": "指定した投稿に「いいね」をしていないひととのグループチャットを作成しました。\n\n【元のスレッド】\n<a href=\"@{triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['linkToMessage']}\">スレッドを開く</a>"

 

「チャットの作成」

このアクションは「Microsoft Teams」>「チャットの作成」です。このアクションでグループチャットを作成します。

プロパティ

"parameters": {"item/members": "@join(variables('グループチャットの対象メンバー'),';')"

 

「チャットまたはチャネルでメッセージを投稿する」

このアクションは「Microsoft Teams」>「チャットまたはチャネルでメッセージを投稿する」です。作成したグループチャットにフローbotで投稿を行います。このアクションの目的はグループチャットを作成したことをチャットのメンバーに通知することです。

プロパティ

"poster": "Flow bot",
"location": "Group chat",
"body/recipient": "@outputs('チャットの作成')?['body/id']",
"body/messageBody": "<p>@{replace(variables('メール本文'), decodeUriComponent('%0A'), '<br/>')}</p>"

 

このフローをGitHubで公開しました。(再掲)

フローをGitHubで公開しました。下記リンク先からダウンロードしてください。この投稿の冒頭で記載しているリンクと同じです。
github.com
 
今回は以上です。