掲題のフローについての解説編です。
先日の「気ままに勉強会 #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
今回は以上です。