PowerAutomate: キーワードに反応して、ネタリストで応答して、雑談を盛り上げる

# 背景

会社で・・課のグループチャットがある。
なんと、そこでは雑談がしにくいことから、ある時間ごとに「雑談・休憩しましょう」と流れます・・。

いや、そんなことやって誰がするんだよ、って思うんですが事実です :cry: 

まぁ、文句ばっかり言っててもしょうがないので、盛り上げるためにネタを投稿してたんですが、その都度やるとなると面倒だし、作業中だと反応したくないときもある。

ってことで、今回のAutomateを作ってみた

# 概要

- ネタリストを Lists に日々用意。
    - 別のところに登録してるネタを、自動登録
    - 気になったことは別途手動で登録もあり
- 「雑談・休憩しましょう」投稿に自動応答で、ネタリストから投稿

# 詳細

## ネタリストの準備

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/d7a16779-7d4e-1d50-c406-860d008705ba.png)

|列名|型|概要|
|-|-|-|
|Title|テキスト|リンクの名称として利用|
|URL|ハイパーリンク|リンクとして利用|
|Posted|はい/いいえ|投稿済みかどうか|


## Automate投稿に対する自動応答

Automate投稿なので、メッセージは固定。
ただ、日本語なのがたまに傷

方法としては以下二つあったけど、以前から使いたかった Trigger ってことで前者を選択

1. [『キーワードが言及されているとき』](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%81%8C%E8%A8%80%E5%8F%8A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D) アクションを利用して、応答
1. 『[チャットに新しいメッセージが追加されたとき](https://learn.microsoft.com/ja-jp/connectors/teams/#%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%81%AB%E6%96%B0%E3%81%97%E3%81%84%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D)』 アクションを利用して、trigger condition で、応答

## ということで、トリガー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/19466ec2-be2f-0838-b558-ed2fa8762f86.png)

このトリガー、元々複数単語には対応していない。詳細は以下で、ちょっと古いけど

https://qiita.com/baku2san/items/77dd98739d3292d18763

## 処理

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/56a495ad-97af-39b9-0353-097f5d82ce26.png)

詳細は上図に書いた。

説明が必要とするなら

### ネタリストから投稿用アイテムの取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/abb03d85-05f8-66c7-1095-d240071c318f.png)

- FilterQuery で Posted ne true の条件を設定する
※上図では、GUIで設定する為反転

- 投稿は一件のみなので、Top Count = 1

### Teamsへの投稿内容作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/1718f78b-0c39-37d1-13ab-853d4e7b2516.png)

- blockquote で元の投稿を引用表示
- あとは、<a> でリンク化してるだけ

```json: Message for temas
 <blockquote>@{outputs('Get_message_details')?['body/body/plainTextContent']}</blockquote>
<a href=@{first(outputs('Get_items')?['body/value'])['URL']}>@{first(outputs('Get_items')?['body/value'])['Title']}</a>

```

# アクション部分のコピペ

```json: Action
{"id":"652b24f9-d908-4e4d-acf8-58821bad0d73","brandColor":"#8C3900","connectionReferences":{"shared_sharepointonline_1":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline/connections/shared-sharepointonl-15e7a58d-6555-418d-a955-a6b286a76a7b"}},"shared_teams":{"connection":{"id":"/providers/Microsoft.PowerApps/apis/shared_teams/connections/shared-teams-864099d5-54a7-4002-93b6-565ecf481128"}}},"connectorDisplayName":"Control","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=","isTrigger":false,"operationName":"Scope","operationDefinition":{"type":"Scope","actions":{"Get_message_details":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_teams","operationId":"GetMessageDetails","apiId":"/providers/Microsoft.PowerApps/apis/shared_teams"},"parameters":{"messageId":"@first(triggerOutputs()?['body/value'])['messageId']","threadType":"groupchat","body/recipient":"19:bbbf9a6a83704bbc8ccb1101e40871f3@thread.v2"},"authentication":"@parameters('$authentication')"},"runAfter":{},"metadata":{"operationMetadataId":"f525a834-56b1-4cf5-9e91-38367543da16"}},"Condition":{"type":"If","expression":{"equals":["@outputs('Get_message_details')?['body/body/plainTextContent']","10分まで休憩・雑談の時間にしましょう。"]},"actions":{"Get_items":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_sharepointonline_1","operationId":"GetItems","apiId":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline"},"parameters":{"dataset":"https://shimakuma-my.sharepoint.com/personal/shima_kuma_shimakuma_onmicrosoft_com","table":"3786b79b-e380-448f-b3d9-45a2575cbfde","$filter":"(Posted eq '') or (Posted eq 'false')","$top":1},"authentication":"@parameters('$authentication')"},"runAfter":{},"metadata":{"operationMetadataId":"c48f3b60-47a1-40fa-95e5-6484c965e1c2"}},"Condition_2":{"type":"If","expression":{"equals":["@empty(outputs('Get_items')?['body/value'])",true]},"actions":{},"runAfter":{"Get_items":["Succeeded"]},"else":{"actions":{"Compose":{"type":"Compose","inputs":"<blockquote>@{outputs('Get_message_details')?['body/body/plainTextContent']}</blockquote>\n<a href=@{first(outputs('Get_items')?['body/value'])['URL']}>@{first(outputs('Get_items')?['body/value'])['Title']}</a>","runAfter":{},"metadata":{"operationMetadataId":"9e92c61d-7905-424b-88e4-5269a95729fa"}},"Post_message_in_a_chat_or_channel":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_teams","operationId":"PostMessageToConversation","apiId":"/providers/Microsoft.PowerApps/apis/shared_teams"},"parameters":{"poster":"Flow bot","location":"Group chat","body/recipient":"19:bbbf9a6a83704bbc8ccb1101e40871f3@thread.v2","body/messageBody":"@outputs('Compose')"},"authentication":"@parameters('$authentication')"},"runAfter":{"Compose":["Succeeded"]},"metadata":{"operationMetadataId":"8525e155-96b4-4e37-a07f-b46bc8b980e6"}},"Update_item":{"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_sharepointonline_1","operationId":"PatchItem","apiId":"/providers/Microsoft.PowerApps/apis/shared_sharepointonline"},"parameters":{"dataset":"https://shimakuma-my.sharepoint.com/personal/shima_kuma_shimakuma_onmicrosoft_com","table":"3786b79b-e380-448f-b3d9-45a2575cbfde","id":"@first(outputs('Get_items')?['body/value'])['ID']","item/Posted":true},"authentication":"@parameters('$authentication')"},"runAfter":{"Post_message_in_a_chat_or_channel":["Succeeded"]},"metadata":{"operationMetadataId":"eedb677a-767d-467b-a591-5382a7bdea2d"}}}},"metadata":{"operationMetadataId":"e9780bdd-816e-4e62-95d8-7079eae8e6fb"}}},"runAfter":{"Get_message_details":["Succeeded"]},"metadata":{"operationMetadataId":"097e3a72-8ba8-4ce5-a152-11cb01eeafd8"}}},"runAfter":{},"metadata":{"operationMetadataId":"effcff01-a242-4a1a-971f-11db4921ad09"}}}
```

使い方

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

# あとがき

ほんとは、teams news を action で取得したかったのだが、まだActionがなかったので、自分でネタ作るしかない・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/1ecddb32-f864-9b9e-05db-fa83d2a1f621.png)
これとか、外部APIとか使えたらもっと楽できるのに・・ :laughing: