PowerAutomate: Teams のメッセージの種類と見極め方

# 背景
Teams の自動化で、
[選択されたメッセージに対して (V2) (For a Selected Message(V2) )](https://learn.microsoft.com/ja-jp/connectors/teams/#%E9%81%B8%E6%8A%9E%E3%81%95%E3%82%8C%E3%81%9F%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6-(v2)) 
を使う際に詰まりやすいメッセージの種類と返信の仕方について備忘録


# 概要
何が問題か？

[選択されたメッセージに対して (V2) (For a Selected Message(V2) )](https://learn.microsoft.com/ja-jp/connectors/teams/#%E9%81%B8%E6%8A%9E%E3%81%95%E3%82%8C%E3%81%9F%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6-(v2)) を利用する場合に、選択メッセージに対して返信して結果を返したいって時・・

- チャット／チャネルで、メッセージの制御が違う
    - チャネルの場合は、Reply が基本（新規スレッド投稿でもいいが、普通は返信を使いたくなる筈）
- チャネルのスレッドにおいて、親子関係があり、親子によって制御が違う
    - 親子で、Message ID の取得方法が違う（以前は子の場合、親 ID は取れなかった記憶⇒詳細取得して親IDって流れで）


# 返信時の注意点

メッセージとしては、以下のような感じでの種類がある
1. チャット
    1. 個人チャット
    1. グループチャット
    1. ボットチャット
1. チャネル：親メッセージ（スレッドの最初）
1. チャネル：子メッセージ（スレッドに返信したメッセージ群）


で、実際に返信に限った差異をまとめると

- チャットの場合
    - スレッド、という概念がないので、投稿で返信
        - [チャットまたはチャネルでメッセージを投稿する](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%BE%E3%81%9F%E3%81%AF%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%A7%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B)
        - [チャットやチャネルにアダプティブ カードを投稿する](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%82%84%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%AB%E3%82%A2%E3%83%80%E3%83%97%E3%83%86%E3%82%A3%E3%83%96-%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B)
    - 返信方法
        - グループチャット　に対して、Convesation ID を利用して返信<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/8001a805-0cea-5110-3942-c5201927f107.png)

- チャネルの場合
    - スレッドへの返信、ということで、専用の返信アクション。新規投稿なら 投稿（Post）アクションを利用（割愛）
        - [チャネル内のメッセージで応答します](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E5%86%85%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E5%BF%9C%E7%AD%94%E3%81%97%E3%81%BE%E3%81%99)
        - [チャネル内でアダプティブ カードを使用して返信する](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E5%86%85%E3%81%A7%E3%82%A2%E3%83%80%E3%83%97%E3%83%86%E3%82%A3%E3%83%96-%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E8%BF%94%E4%BF%A1%E3%81%99%E3%82%8B)
    - 返信方法
        - 親の場合
            - チャネル　に対して、Message ID を利用して返信<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/913d9572-d754-1fdb-281d-9b4016456ca2.png)
        - 子の場合
            - チャネル　に対して、Reply to Message ID を利用して返信<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/d2752477-a910-e702-926d-77db9565a266.png)



# 切り分け方
[選択されたメッセージに対して (V2) (For a Selected Message(V2) )](https://learn.microsoft.com/ja-jp/connectors/teams/#%E9%81%B8%E6%8A%9E%E3%81%95%E3%82%8C%E3%81%9F%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6-(v2)) の結果から、返信の仕方を分岐させる必要がある

分かってしまえば簡単
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/82c59d45-61dd-6785-ff9d-47a27cca454a.png)

1. チャットとチャネルの判断
    - channelData->channel が 空ならチャット<br><code>triggerBody()?['teamsFlowRunContext']?['channelData']?['channel']</code>
1. チャネルの親子判断
    - replyToId が空なら親メッセージ<br><code>triggerBody()?['teamsFlowRunContext']?['messagePayload']?['replyToId']</code>

# 返信先を、選択したメッセージ以外にしたい時
- 投稿者
    - From/User/Id
- リアクションした人 
    - [メッセージ詳細を取得する](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E8%A9%B3%E7%B4%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B) で Reactionから解析
- メンションされた人
    - リアクションした人と同様


# あとがき
メニュー増えすぎると選びにくくなるのでご注意を

# 利用例

https://qiita.com/baku2san/items/a84d6f18e50232813cca

# keyword
how to reply to 'for a selected message' trigger