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

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

【Power Automate】【解説編】Microsoft Teams 内の指定したスレッドの発言者とのグループチャットを開始する

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

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

解説の経緯

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

フローの使用イメージ

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


 

解説の範囲について

「スレッドのすべての投稿を取得する」ステップについては別投稿を参照してください

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

 

解説する範囲

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

 

ステップごとの解説

「選択-「親の投稿」と返信それぞれの投稿者IDの一覧」

このアクションは「データ操作」>「作成」です。取得した投稿一覧の配列からユーザーIDのみを取得します。

プロパティ

"from": "@variables('投稿一覧')",
"select": "@item()?['from']?['user']?['id']"

このユーザーIDは後続のアクションでグループチャットのメンバーを指定する際に使います。

「作成-チャットのタイトル」

このアクションは「データ操作」>「作成」です。グループチャットのタイトルを指定します。もとになったスレッドにタイトルがある場合はそれをグループチャットのタイトルに使用します。

if
(
empty
(
triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['subject']
)
,
null
,
triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['subject']
)

「作成-重複を排除」

このアクションは「データ操作」>「作成」です。union関数を使用してユーザーIDの重複を排除します。

union(body('選択-「親の投稿」と返信それぞれの投稿者IDの一覧'),body('選択-「親の投稿」と返信それぞれの投稿者IDの一覧'))

 

「チャットの作成」

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

プロパティ

"item/members": "@join(outputs('作成-重複を排除'),';')",
"item/topic": "@triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['subject']"

 

「作成-チャットの本文」

このアクションは「データ操作」>「作成」です。

指定したスレッドからグループチャットを作成しました。

【元のスレッド】
<a href="@{triggerBody()?['entity']?['teamsFlowRunContext']?['messagePayload']?['linkToMessage']}">スレッドを開く</a>

 

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

このアクションは「データ操作」>「作成」です。

プロパティ

"poster": "Flow bot",
"location": "Group chat",
"body/recipient": "@outputs('チャットの作成')?['body/id']",
"body/messageBody": "

@{replace(outputs('作成-チャットの本文'),decodeUriComponent('%0A'),'
')}

"

 

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

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

最後に

「チャットの作成」アクションを使った別フローを作成しました。こちらについても別途公開します。(`・ω・´)シャキーン


今回は以上です。