LoginSignup
3

More than 1 year has passed since last update.

Power Automate を使って Adaptive Card を別のTeams チャネルなどにコピーする

Last updated at Posted at 2023-01-31

はじめに

Teams のチャネルには Power Automate などをから Adaptive Card という形式でポストすることができます。こんなやつ:
candidate-form.png
Adaptive Card では、JSON 形式で指定すると、簡単なユーザー入力を促すフォームや、画像と組み合わせたカードを表現することができます。詳細はこの辺(Power Automate を用いた Adaptive Card 作成)。
この記事は、この Adaptive Card がチャネルにポストされた際、別のチャネルにコピーするための Power Automate の指定方法を解説するという、多少マニアックな内容です。と言うのも、Power Automate では、「チャネルに新しいメッセージが追加されたとき」を検出し、テキストや Adaptive Card を投稿する機能はそれぞれ持っているのですが、新しいメッセージが Adaptive Card であったときに、その基となる JSON データがどのように取得できるか、ドキュメントがないのです。
Adaptive Card のコピーを実現するために、最終的には、以下のような Power Automate フローを作ることになります。メッセージを受け取り、どうにかして Adaptive Card の JSON を受け取り、それを解析、JSON 項目の内容を個別に取り出した上で Adaptive Card として再投稿します。
image.png
それでは、以下、順を追って詳細をご説明してまいりましょう。

メッセージの投稿を検出する

それでは、Power Automate を起動し、作成 → 「自動化したクラウド フローを構築する」を選択します。フロー名は適宜設定ください。このサンプルでは、CopyAdaptiveCard とします。トリガーには「チャネルに新しいメッセージが追加されたとき」を選択、フローを作成します。
image.png
Adaptive Card のポストを検知したいチームとチャネルを指定しましょう。
image.png

JSON 解析

「+ 新しいステップ」を押下して、操作を選択します。ここでは、JSON で検索して、アクションに「JSON 解析」を選択します。
image.png
JSON の解析 アクションで、コンテンツに「メッセージ 添付ファイル 項目」を選択します。はい、そうです。Adaptive Card は添付ファイルとして取得できるのです!
image.png
すると、添付ファイルは複数想定されていますので、自動で「Apply to each」となります。これは添付ファイル分だけ繰り返されることになります。Adaptive Card が複数ということは一般に考えられませんが、いったん、想定しておくことにします。
image.png
JSON の解析のコンテンツには「現在のアイテム」、スキーマには以下の JSON を入力します。

json
{
    "type": "object",
    "properties": {
        "id": {
            "type": "string"
        },
        "contentType": {
            "type": "string"
        },
        "content": {
            "type": "string"
        }
    }
}

image.png

Adaptive Card の投稿

アクションの追加から、「チャットやチャネルのアダプティブ カードを投稿する」を選択します。
image.png
投稿者、投稿先をチャネル、チーム系、チャネル名を指定、Adaptive Card には content を選択します。Subject はお好みですが、「メッセージ件名」とするのが良いかもですね。
image.png

さいごに

以上となりますが、お気づきの通り、チャネル以外にチャットに Adaptive Card を投稿することも可能です。いろいろ試してみてくださいませ!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3