🚴‍♂️

Power Automate で Teams のメッセージをスレッドに返信する形で転送する方法

2025/03/04に公開

はじめに

2025年1月頃、Teams のメッセージをチャネルに転送する機能がリリースされました。
しかし、チャネル内の特定のスレッドに返信する形で、メッセージを転送する機能はありません。
そのため、Power Automate のフローで、この機能を作成する方法を解説します。

作成手順

手順 内容
1 トリガーを配置します。
2 ユーザーに転送先を選択させます。
3 メッセージを加工して転送します。

1. トリガーの配置

転送機能と同様に、メッセージのアクションから、フローを実行できるようにします。

アクションの画像

そのため、Teamsコネクタのトリガー「選択されたメッセージに対して (V2)」を配置します。

トリガーの画像

2. 転送先を選択するフロー

ユーザーとフローボットとのアダプティブカードを使った対話で転送先を決定します。
ユーザーは、カードを使って3回の応答を行い、転送先を決定します。

  • 1回目のカード:転送先のチーム名をリストから選択
  • 2回目のカード:選択したチームのチャネル名をリストから選択
  • 3回目のカード:選択したチャネルのスレッド名をリストから選択

トリガーに続けて、カードで対話するフローを作成します。
これらのフローについては、以下の記事の要領で作成します。
https://zenn.dev/mokyumokyu/articles/fec0efa2020f89

3. メッセージを転送するフロー

今回は、以下のようにメッセージを加工して転送します。

転送するメッセージ 転送後のイメージ
転送前の画像 転送後の画像

転送先を選択するフローに続けて、以下のフローを作ります。
まずは、メッセージを作成するために、必要な情報を取得します。

内容 画像
転送元のメッセージ詳細を取得します。 メッセージ詳細を取得の画像
転送元のチームの情報を取得します。 チームを取得の画像
転送元のチームのチャネルの一覧を取得します。 チャネルの一覧表示の画像
アレイのフィルターを使用し、転送元のメッセージがあるチャネルを特定、情報を取得します。 アレイのフィルターの画像
フィルターの結果からチャネル名を取得します。 チャネル名取得の画像

次に、アクション「作成」を配置し、入力欄でメッセージを作成します。

メッセージ作成の画像

(参考)入力欄の詳細です。

{
    "body": {
      "contentType": "html",
      "content": "<p><a href= @{outputs('メッセージ詳細を取得する')?['body/messageLink']}>この投稿はチーム「@{outputs('転送元メッセージのチームの取得')?['body/displayName']}」のチャネル「@{outputs('作成_転送元チャネル名')}」から転送されました。クリックでジャンプします。</a></p><p>@{if(empty(outputs('メッセージ詳細を取得する')?['body/subject']), null, concat('件名:', outputs('メッセージ詳細を取得する')?['body/subject']))}</p><p>@{outputs('メッセージ詳細を取得する')?['body/body/content']}</p>"
    },
    "attachments": "@outputs('メッセージ詳細を取得する')?['body/attachments']"
}

最後に、アクション「Microsoft Graph HTTP 要求を送信する」を配置します。

HTTP要求の画像
項目 パラメーター
URI 後出のコードブロックをご覧ください。
メソッド POST
本文 直前の「作成」アクションの出力をセットします。
コンテンツタイプ application/json

(参考)URIの詳細です。

https://graph.microsoft.com/v1.0/teams/@{outputs('転送先チームの取得')?['body/id']}/channels/@{outputs('作成_チャネルID')}/messages/@{outputs('作成_スレッドID')}/replies

以上でフローの作成は終了です。

参考

カードにおいて、新規投稿orスレッドへの返信を選択させて、回答に応じて条件分岐を行い、メッセージを変更するなど、対話を工夫することで、様々な応用ができます。

Discussion