Power Automate の Teams コネクタでアダプティブカードを利用する際の TIPS①【アダプティブカードで入力した内容を受け取る】

## はじめに
みなさま、こんにちは！
日本マイクロソフトでサマーインターンをしております秋山と申します。
今回、 Power Automate から入力フィールドを含むアダプティブカードを送信し、ユーザがフィールドに入力した内容を受け取り、SharePoint Online のリストに自動で保存する簡単なフローを例に、 Power Automate と Teams をシームレスに連携させる方法を紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1999895/c22e1db0-ebf6-0078-6da1-ca50a6a01a09.png)

### アダプティブカードとは
まず、アダプティブカードの説明は以下の通りです。(引用抜粋)
> アダプティブ カードは、プラットフォームに依存せずに情報ブロックを共有および表示するための方法で、CSS または HTML をカスタマイズしてレンダリングする複雑さがなくなります。 クラウド アプリおよびサービスをオープンに入れ替えできる統合を使用して、JSON 形式でアダプティブ カードを作成します。
引用元：Microsoft Teams 向けアダプティブ カードの概要
https://docs.microsoft.com/ja-jp/power-automate/overview-adaptive-cards

こちらにより、例えば、Power Automate から Teams に通知やメッセージを送る際に、アダプティブカードを用いると、単にテキスト メッセージを送るだけではなく、画像を付与したり、ボタンや入力フィールドを配置して、入力フォームとしたりすることが可能になります。

## Power Automateでフローを作成する

### フローを作成する
Power Automate のページを開きます。
作成タブから「インスタント　クラウドフロー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/0777f089-a8d8-f5d9-4eef-4e0341e5503c.png)
インスタントクラウドフローを構築の画面から「手動でフローをトリガーします」を選択し、「作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/cb6a4a51-6340-b516-b7f0-26da816b8dae.png)

画面がこのようになっていることを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/78d1e4c3-d989-b219-4f86-c9b7c608cbfe.png)


### Teamsに質問を投稿する
「新しいステップ」ボタンをクリックします。ここからステップを追加していきます。
検索窓に「teams」と入力すると、 Teams 関係のアクション一覧が表示されます。今回はその中から「アダプティブカードを投稿して応答を待機する」を選択します。

「アダプティブカードを投稿して応答を待機する」の各項目を設定していきます。
以下のように各項目を入力してください。

|名前|値|
|-|-|
|投稿者|Flow bot|
|投稿先|Channel|
|Team|【投稿したいチーム】|
|Channel|【投稿したいチャンネル】|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/e9a5b820-cbf2-e8aa-f17e-10b75fd6ca75.png)



「メッセージ」の項目には今回アダプティブカードを設定しています。アダプティブカードは以下のような形になっています。複雑に見えますが、実はアダプティブカードデザイナーというものを使うことで、視覚的にカードをデザインし、コードを生成することができます。（https://www.adaptivecards.io/designer/）。

```
{
    "type": "AdaptiveCard",
    "msTeams": {
        "width": "full"
    },
    "body": [
        {
            "type": "TextBlock",
            "text": "好きな食べ物は何ですか",
            "wrap": true,
            "size": "Large",
            "weight": "Bolder",
            "id": "title"
        },
        {
            "type": "Input.Text",
            "placeholder": "回答を入力してください（回答は必須ではありません，答えたくないものはスルーしてください）",
            "separator": true,
            "isMultiline": true,
            "id": "thoughts"
        },
        {
            "type": "ActionSet",
            "separator": true,
            "actions": [
                {
                    "type": "Action.Submit",
                    "title": "送信",
                    "style": "positive",
                    "id": "submit"
                }
            ]
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2"
}
```
今回作成したアダプティブカードは以下のようなデザインになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/ba792c28-b155-c684-1b5d-4bc1d718bfb7.png)



### SharePointに項目を作成する 

返答がきた際に、結果を SharePoint に記録していきます。
「タイトル」と「回答」の項目を持つ SharePoint のリストを事前に準備します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/a3651789-84af-f621-7b0b-07da4c9a02fa.png)

Power Automate 側で、「＋新しいステップ」ボタンを押し、ステップを追加していきます。
検索窓に「sharepoint」と入力すると、 SharePoint 関係のアクション一覧が表示されます。今回はその中から「項目の作成」を選択します。
その後、以下のように各項目を入力していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/6f18362b-6c63-0e8c-0b38-3d3b81eb2544.png)


「サイトのアドレス」、「リスト名」には自分が記録をしたい SharePoint Online のアドレスとリスト名を選択します。
「Title」には、今回「好きな食べ物は何ですか」と入力しました。こちらは、動的に変更することも可能です。


そして「回答」の部分には、アダプティブカードを投稿して応答を待機する」アクションの「thought」を入力します。この変数「thought」は、上記アダプティブカードの id の部分に書かれていたものになります。

```
（前後省略）
・・・
"placeholder": "回答を入力してください（回答は必須ではありません，答えたくないものはスルーしてください）",
            "separator": true,
            "isMultiline": true,
            "id": "thoughts"　←ココ
        },
・・・
```





## 実際にフローを実行してみる
右上の「テスト」をクリックし、「手動」で「テスト」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/fdbe3565-8fde-80dd-5b23-828cea093781.png)


しばらくすると準備が完了するので、「フローの実行」を押してテストを開始します。
すると、以下のような形でチャネルにアダプティブカードが投稿されるので、回答を入力してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/93250be6-b8b2-12d6-a4be-6e14e571a399.png)

Teams 上で回答を入力し、「送信」ボタンをクリックすると、回答した内容が、SharePoint Online のリストに自動で保存されていることが確認できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464309/29e9b709-6dd7-79f9-88c6-689d46266108.png)

## 終わりに

こちらはあくまで一例ですが、間に Web アプリケーションなどを介さずに、 Power Automate から入力フォーム付きのメッセージを Teams に送信し、ユーザーが Teams 上で入力した内容を受け取り、その内容に応じた処理の自動化が可能になります。
つまり、アダプティブカードを使用することで、Teams と連携する業務の自動化の選択肢が広がります。
是非、こちらのTIPSを業務負担の軽減にお役立てください。

※本情報の内容（添付文書、リンク先などを含む）は、作成日時点でのものであり、予告なく変更される場合があります。