Microsoft Teams を利用して質問を受け付けるチャネルなどを作り、そこで QA のような形でチーム内でナレッジを共有するような仕組みもよく見られます。
しかし、質問にはいくつかの返信が連なり、あとから確認するときにはどれが回答であるか分かりづらいものです。また、質問と回答が整理されて一覧になっていれば、さらに探しやすくなるかもしれません。
こうした課題を解決するために、新しく登場した Microsoft Teams のトリガーを利用し、Power Automate のクラウドフローを作成してみたいと思います。
リアクションでフローを動かすトリガー
Power Automate のクラウドフローに、Microsoft Teams 用の新しいトリガー「チャットでメッセージに応答があったとき」が追加されました。 このトリガーを使うと、チャットやチャネルのメッセージに絵文字リアクションが付けられたタイミングで、自動的にフローを実行できます。

今回は、このトリガーを用いてフローを作成していきたいと思います。
トリガーを設定する
先ほどのトリガーでは、どういった絵文字に反応するかなどを設定できます。今回は、次のように設定しました。

| 項目 | 設定値 |
|---|---|
| 追跡する絵文字 | ✍🏼 |
| トリガー頻度 | すべてのリアクション (複数) |
| トリガー対象のユーザー | 自分 |
| メッセージの種類 | チャネル |
| Channels | チャネルを選択 |
| Team | チームを選択 |
Channels 設定時のヘンテコ動作と回避策
これらの設定で設定方法に悩んだのは、Team の項目で対象となるチームを選択したあとの Channels の設定です。入力欄に「Select Channels」と書かれてあるものの、Team を選択しても一向に選択肢が出てきません。
そこで行ったのが、とりあえず適当な値を入力し、さらにフローにも適当なアクションをひとつ追加しておき、フローを保存します。

すると保存後にはなぜか Channels に入力した値をクリアできる「X」が入力欄に出てくるので、これで先ほどの適当な値をクリアすると、なんとも不思議なことに選択肢が表示されるようになりました。


質問となる元の投稿を取得
今回のフローは、質問となる元の投稿に対して返信で回答が付いたら、その返信にリアクションすることで動作するような動きにしたいと思います。
返信にリアクションした場合にトリガーから出力される値を確認すると、元の投稿のメッセージ ID が「ReplyToId」、リアクションされた返信のメッセージ ID が「MessageId」としてそれぞれ返ってくることがわかりました。これらを利用することで、投稿の内容を取得できそうです。
まずは元の投稿の内容を取得するため、「メッセージ詳細を取得する」アクションを追加し、設定していきます。

| 項目 | 設定値 |
|---|---|
| メッセージ | トリガーの「ReplyToId」 |
| メッセージの種類 | チャネル |
| Team | トリガーと同じチームを選択 |
| Channel | トリガーと同じチャネルを選択 |
| Parent message ID | 空白のまま |
このアクションは、後からわかりやすいようにアクション名を「質問を取得」などと変えておきます。
回答となる返信を取得
同様に回答となる返信の内容も取得します。「メッセージ詳細を取得する」アクションを追加し、設定していきます。

| 項目 | 設定値 |
|---|---|
| メッセージ | トリガーの「MessageId」 |
| メッセージの種類 | チャネル |
| Team | トリガーと同じチームを選択 |
| Channel | トリガーと同じチャネルを選択 |
| Parent message ID | トリガーの「ReplyToId」 |
チャネルの返信を取得するときは、元の投稿のメッセージ ID を「Parent message ID」として設定する必要があるようだったので、トリガーの値を利用しました。
このアクションも、後からわかりやすいようにアクション名を「回答を取得」などと変えておきます。
SharePoint リストに書き込む
質問と回答の一覧を作成する先として、SharePoint のリストを用いることにしました。次のようなリストを作成しています。
| 列名 | 種類 | 備考 |
|---|---|---|
| タイトル | 1行テキスト | 既定で作成される列 |
| 質問 | 複数行テキスト | 「拡張リッチテキストを使用」を有効化 |
| 回答 | 複数行テキスト | 「拡張リッチテキストを使用」を有効化 |
フローには SharePoint の「項目の作成」アクションを追加し、これまでのアクションで取得できている値を入れていきます。

| 項目 | 設定値 |
|---|---|
| サイトのアドレス | リストのあるサイトを選択 |
| リスト名 | 作成したリストを選択 |
| タイトル | 「質問を取得」アクションの「Subject」 |
| 質問 | 「質問を取得」アクションの「Body Content」 |
| 回答 | 「回答を取得」アクションの「Body Conent」 |
さて、フローの作成はこれで以上です。さっそくテストで動作を確認してみましょう。
フローの動作を確認する
まずは、チャネルにそれっぽく質問と回答を投稿しておきましょう。そして、回答となる返信に、トリガーで設定した絵文字(✍🏼)のリアクションを付けます。

するとフローが動作し、SharePoint のリストに元の投稿とリアクションを付けた投稿が、それぞれ質問と回答として転記されました。

Teams の投稿を開けるように URL も転記しておくとか、あとからもっと良い回答があったら上書きしたいなど、いろいろと改良の余地がありそうですが、基本的な動作はシンプルに作成することができました。
さいごに
今回は新しく登場した「チャットでメッセージに応答があったとき」トリガーを利用してみましたが、なかなかいろいろな使い勝手がありそうなトリガーだなと思いました。
なにより、実際に動作させる場合の操作がリアクションを付けるだけと簡単で、手軽に行えるのも嬉しいポイントですね。しばらく試行錯誤してみたいと思います。

