Power Automate から Teams に投稿したアダプティブカードを更新する

# はじめに

Power Automate の Teamsコネクタに 「チャットやチャネルのアダプティブ カードを更新する」アクションが追加されます。
※現在（2022年6月1日時点）はPreview環境にて利用可能です。

[Hiroさん](https://mofumofupower.hatenablog.com/)がツィートしていらっしゃったので、簡単に試してみました。


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">これまでユーザーの応答内容を使ってカードを更新することはできませんでした。<br>今回のアップデートによって、AdaptiveCardへの入力を拾って、カードを更新することができるようになりました。これはかなり幅広いユースケースに対応できると思います。 <a href="https://t.co/InianyE5os">https://t.co/InianyE5os</a></p>&mdash; Hiro (@mofumofu_dance) <a href="https://twitter.com/mofumofu_dance/status/1530079256344412160?ref_src=twsrc%5Etfw">May 27, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>







# １.「チャットやチャネルのアダプティブ カードを更新する」アクションについて

Teamsに投稿済みのアダプティブカードの表示内容をまるっと更新することができるアクションです。
アダプティブカードには、`Action.ShowCard`や、`Action.ToggleVisibility`というアクションもありますが、これらによる表示内容の切り替えはカードの一部分のみです。
対して、当アクションはカードそのものの内容を更新可能です。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/839d5530-efe1-d2fc-efbf-c78f2b6acefc.png)


投稿者や投稿先への設定値は、アダプティブカードを投稿するアクションと同じため割愛します。
特筆すべきは、更新対象のメッセージIDを指定することで、該当メッセージに新たにアダプティブカードを送信できる部分です。

メッセージIDは、

フロー内で投稿したメッセージであれば、動的なコンテンツから取得可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/cdbf5bf0-d49f-eb54-36db-e1ca8135c6c3.png)

また、既存のメッセージに対しては、[リンクをコピー]し、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/3e3af769-acfd-77b8-50e2-edf86bdc869e.png)

クリップボートに保存されたURIから、パラメータの`parentMessageId`の値で取得可能です。

```
https://teams.microsoft.com/l/message/ ～ 中略 ～ &parentMessageId= [メッセージID] &teamName= ～ 略
```

「1654069681408」のような数字の羅列になります。






# ２.利用例


当アクションの利用方法として、チャネルに投稿したアダプティブカードからの応答を元に、該当アダプティブカードの内容を更新するというものが考えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/91aa1384-632e-3e83-4fbb-0e06b5d5ddcc.png)


## ①アダプティブカードを投稿し応答を待機

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/b825bc23-dca9-5397-8282-b50b879d5b47.png)

アダプティブカードに「Action.Submit」を埋め込み、投稿を待機します。


## ②アダプティブカードの応答に対し条件分岐

アダプティブカードに複数「Action.Submit」を埋め込んだ場合は、`submitActionId` を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/9db84355-c89c-a635-12c1-1a7945e947a7.png)


## ③アダプティブカードを更新

先のアダプティブカードの応答を元に、カードの更新を行います。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/06ed4df8-77fd-1a7a-a571-0ec57c87f3a5.png)

投稿先、チーム、チャネルは、上記の「①アダプティブカードを投稿し応答を待機」と合わせてください。

メッセージIDは、投稿時に割り振られますので、動的な値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/42d6bba6-e57c-20a5-3a59-34a5115d8d61.png)

このような動作になります
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Power Automate のTeamsコネクタ「チャットやチャネルのアダプティブ カードを更新する」<a href="https://twitter.com/hashtag/AdaptiveCard?src=hash&amp;ref_src=twsrc%5Etfw">#AdaptiveCard</a> <a href="https://twitter.com/hashtag/%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?src=hash&amp;ref_src=twsrc%5Etfw">#アダプティブカード</a> <a href="https://t.co/LpDkD95gZW">pic.twitter.com/LpDkD95gZW</a></p>&mdash; Miyake Mito (@MiTo60448639) <a href="https://twitter.com/MiTo60448639/status/1531937704270655488?ref_src=twsrc%5Etfw">June 1, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# ３.ためしたこと

### ① 通常メッセージに対し「アダプティブカードを更新」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/651cb663-5aa4-f4ea-0a15-5cddf2c8a970.png)


「チャットまたはチャネルでメッセージを投稿する」アクションで投稿したメッセージに、「チャットやチャネルのアダプティブ カードを更新する」

結果はHTMLがそのまま表示されますが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/81c82920-be2b-8ffb-4dc4-65db0b433c2a.png)

ブラウザを更新すると、アダプティブカードが正しく表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/ae685cd8-76f7-dbd4-8ada-0d7d23e44a90.png)




### ② 別のユーザーが投稿したアダプティブカードに「アダプティブカードを更新」

他のユーザーが投稿したアダプティブカードに対し、「チャットやチャネルのアダプティブ カードを更新する」

結果は、エラーでした。投稿者とユーザーIDが異なるためNGのようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/0ed02abf-9392-5533-05c7-3e8b7e339716.png)



### ③ アダプティブカードの応答を待たずに「チャットやチャネルのアダプティブ カードを更新する」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/757cd86a-77c0-e706-35b3-1a0b99b503bf.png)

このようなフローを作ります。
動作させると、自動的にアダプティブカードが更新されていきます。


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">アダプティブカードでパラパラ漫画が作れるｗ<a href="https://twitter.com/hashtag/AdaptiveCard?src=hash&amp;ref_src=twsrc%5Etfw">#AdaptiveCard</a> <a href="https://twitter.com/hashtag/%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?src=hash&amp;ref_src=twsrc%5Etfw">#アダプティブカード</a> <a href="https://t.co/pvPaMBvaij">pic.twitter.com/pvPaMBvaij</a></p>&mdash; Miyake Mito (@MiTo60448639) <a href="https://twitter.com/MiTo60448639/status/1531935958446186497?ref_src=twsrc%5Etfw">June 1, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

アダプティブカードでパラパラ漫画が作れそうです（笑）



**「チャットやチャネルのアダプティブ カードを更新する」は、ユーザーの応答を待つことはできません。
よってアダプティブカードの更新は実質１回のみとなります（パラパラ漫画でよければ別ですが）。**


# まとめ

投稿済みのアダプティブカードの内容を更新できる「チャットやチャネルのアダプティブ カードを更新する」アクションは、アダプティブカードの表示内容が変更できます。

投稿者当人でないと更新できない、ユーザーの応答に対し1度きりの更新のみ可能等、制約はありますが、ぜひご活用ください。