絶対に俺がハイタッチしてみせる！！！をPower Automate で実現するフロー

# 概要
みなさんTeamsの この[アップデート](https://support.microsoft.com/ja-jp/office/microsoft-teams-%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD-%E7%84%A1%E6%96%99-ea5cbb6c-bfe3-4026-aa51-8c9b04a523c9)確認されましたか？！

https://twitter.com/MicrosoftTeams/status/1649103191420682242?t=XlKWFICQ9C3O609lfLKjtg&s=19

こういう遊び心っていいですよね🤣
...まだうちの環境には来てないみたいですけど😗


今日は、**誰かがハイタッチを求めてきた時に、いち早くハイタッチを返すフロー**を作ります。

# ハイタッチを取得する
## トリガー
トリガーには**チャットに新しいメッセージが追加されたとき**を使用します。
このトリガーを使うことで、全てのチャットの投稿を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/a57322ce-00ff-10a5-cd62-04262d2dba79.png)


## メッセージ詳細を取得する
メッセージの内容を**メッセージ詳細を取得する**で確認します。
ここで[メッセージの種類]は**グループ チャット**を選んでおけば大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/2195a077-536a-588a-54e7-7ae1851e4e32.png)
こうすることで、グループチャットの投稿だけでなく個人チャットの投稿もしっかり取得できます。
今回は関係ありませんが、チャネルの投稿も取得できてしまいます。

**メッセージID**と**会話ID**を入力します。
自然に**Apply to each**が入ってしまいますが、気にしなくても問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/106f82dd-dca6-5097-cd44-c6c83542f963.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/903c7b69-3a97-4c4e-3f4c-957ad45b86fc.png)

気になる方は**first関数**で囲っておきましょう。

https://mofumofupower.hatenablog.com/entry/2020/09/07/160111

## テスト実行
フローを保存しておいて、適当なチャットにハイタッチを投稿してテスト実行を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/27db9d66-5fb1-ba01-86aa-8410934bc058.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/31df5ad8-e322-7b52-fdd3-84dbd983df5a.png)

絵文字はHTMLで記述されており、body>body>contentのこの部分がハイタッチの中身ですね。

これをコピーしておいて、送られてきた内容と一致するかどうか？でフローを続行するかどうかを判断します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/680870a9-be2a-98d6-8adf-10545370097d.png)

# 返信するかどうか判断する
## 条件分岐①
コピーしておいたテキストと比較して、本文が全く同じかどうかを判断します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/3b5a26fc-0f98-7754-0c32-6d18d8a381f6.png)

コピーしたハイタッチは、後で投げ返す時にも使うので、変数や作成アクションに保存しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/7f71edd1-a2c2-c372-984a-c9c90c142f82.png)

:::note warn
コピーしたテキストでは、ダブルクォーテーション`”`がバックスラッシュ`\`でエスケープされています。
エスケープされていると正しく比較できませんので、不要なバックスラッシュは消しておきましょう。

```html:highfive
<p><span title="ハイタッチ" type="(highfive)" class="animated-emoticon-50-highfive"><img itemscope="" itemtype="http://schema.skype.com/Emoji" itemid="highfive" src="https://statics.teams.cdn.office.net/evergreen-assets/personal-expressions/v2/assets/emoticons/highfive/default/50_f.png" title="ハイタッチ" alt="✋" style="width:50px; height:50px"></span></p>
```
置換すると楽かも。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/134598db-e777-5ac1-68b3-39fab351ec1b.png)

:::
## 条件分岐②
このままでは自分が投稿したハイタッチに永遠にハイタッチを投げ返す無限ループが完成してしまいます。
先程のテスト実行でも、自分の投稿がトリガーされていましたよね。

一人で手を上げ続ける悲しいモンスターを生まないためにも、条件を見直しましょう。
AND条件を追加して、メッセージ投稿者が自分とは異なることを条件に加えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/6459328c-0904-eac8-ca49-d5421d435013.png)


# ハイタッチで返信する
返信にはこの**チャットまたはチャネルでメッセージを投稿する**を使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/877cb5c5-454a-6fa7-e727-0172ab7a03e3.png)

投稿者はユーザー(自分自身)とします。
選択肢に個人チャットがありませんが、ここでも**グループチャット(Group** **chat)** を選択しておけば大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/b11d6335-7cef-69aa-9c21-d436c1a8d5cf.png)

個人チャットでも**会話ID**を指定することでメッセージの投稿が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/f0fd1d19-bd51-9149-09a1-6558cea54721.png)

# いざ、実践！
ということで、フローが完成しました！
実際に試してみましょう。

- 個人チャットで試してみる

https://twitter.com/ksgiksg/status/1649435251775791105?s=20

- グループチャットで試してみる

https://twitter.com/ksgiksg/status/1649435901033086976?s=20

ちゃんと動くようですね！

# おわりに
このフローのサンプルをgithubで公開しています。

https://github.com/ksgiksg/Power-Automate/blob/main/%E3%83%8F%E3%82%A4%E3%82%BF%E3%83%83%E3%83%81%E3%82%92%E6%8A%95%E3%81%92%E8%BF%94%E3%81%99%E3%83%95%E3%83%AD%E3%83%BC_20230421153352.zip

特に環境に合わせて変更しないといけないところは無いと思うので、そのままインポートして有効化してもらえれば使えると思います。


# 余談
チャットの相手が同じフローを持っていると、無限ハイタッチ編が開始されます…