[Teamsと連携！] 参加登録した人に、事前課題をチャットで自動通知

##TeamsとPower Automateの連携でもっと便利に！
Microsoft 365はよく知られているWordやExcel以外にも、多くのアプリやサービスを用意しています。中には定型的な処理を自動化することで日々の業務負担を軽減するものも。そこでMicrosoft Teams(以下、Teams)と定型的なワークフローを自動化するMicrosoft Power Automate(以下、Power Automate)を組み合わせた業務効率向上と業務負担を軽減する方法を紹介していきます。
###Microsoft Formsに参加登録の回答を送信すると回答者にチャットが送られてくる
社内イベントを開催する際に、Microsoft Forms(以下、Forms)で参加者を募ることが出来ます。参加登録をしてくれた人に、イベントの前に見ておいて欲しい事前課題をTeamsのチャットで送る仕組みを作ってみましょう。
仕組みとしては、Formsで参加登録のフォームを作り、そのフォームに登録があった際にPower Automateが自動的に動き、登録してくれた人のTeamsチャットに事前課題のURLを送るという流れです。
この仕組は「アダプティブカード」と呼ばれるカード状の部品を使います。カードを受け取ったユーザーはボタンを押せば次のアクションに移ることができ、長いURLを隠してすマートに情報提供ができます。（アダプティブカードは、JSONで作成されたUIの部品です。詳細は[こちら](https://docs.microsoft.com/ja-jp/microsoftteams/platform/task-modules-and-cards/cards/design-effective-cards?tabs=desktop)を参照。）
![001-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/92524e42-0744-d031-8d00-258b07997aca.jpeg)
Formsの登録フォームに回答したユーザーのTeamsチャットにボタン付きのアダプティブカードが送信された様子
###Formsで参加登録フォームを作成
まずは[Formsでアンケートを作成](https://www.office.com/launch/forms)します。重複した申込みを避けるために「1人に付き1つの回答」にチェックを入れておきます。
![002-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/83718a05-57b1-3b68-d1cf-ef7ae69d97d6.jpeg)
###Adaptive Cards Designerによるアダプティブカードのデザイン
続いて[Adaptive Cards Designer](https://adaptivecards.io/designer/)で送信メッセージとなるカードを作成しましょう。アダプティブカードの編集は基本的に要素をドラッグ&ドロップでカードに追加し、各要素のプロパティを編集する仕組み。このツールで直感的にアダプティブカードをデザインし、生成されたコードを利用していきます。
![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/88fc2a89-ddf6-4856-2a8b-6f69c462ea34.jpeg)
「[Adaptive Cards](https://adaptivecards.io/designer/)」を開き、「Select host app」を「Microsoft Teams - Light」に変更します。これはTeamsがカードの送信先となる事を示していて、背景色が明るい(Light)アダプティブカードを送る、という意味です
![sample-card.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/d450a7ac-196c-065c-5be2-37758e05d548.jpeg)
最初にテンプレートとして使えるサンプルカードが現れます。カードに表示されるメッセージ内容は画面右側のプロパティ要素で書き換えられます。不要なアイテムはマウスオーバーすると現れる「×」で削除できます。
![003-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/ae9de0c3-a1f9-be1c-537b-706ffafab22b.jpeg)
サンプルとして表示されたカードを編集し、「TextBlock」の「Text」欄に、チャットで送るメッセージを入力します。サンプルのカードの中にあるその他の要素は使わないので「x」で削除します。
![ActionOpenURL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/b7b79eb6-9fe4-d871-ca77-6840028ba8c6.jpeg)
カード全体を選択すると現れる「Add an action」のドロップダウンリストから「Action.OpenUrl」を選択します。ここで、アダプティブカードの中のボタンが押された時に、ユーザーが移動するURLを指定していきましょう
![url.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/9a33fb33-39f6-ef96-cd67-846bea38a06c.jpeg)
「Action.OpenUrl」をクリックし、「Title」にはカードの中に表示されるボタンの文字を入力、「Url」には、ボタンが押された時にユーザーが移動する事前課題のURLを入力します。これでカードのデザインは終了です。次に自動的に作成されているコードをコピーしていきましょう
###作ったアダプティブカードのコードをコピー
![copy-pe.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/2bde3a80-51c0-0d71-e033-44f8d4ad5a97.jpeg)
Adaptive Cards Designerの画面下部にある「CARD PAYLOAD EDITOR」の内容をすべて選択して、「Ctrl」+「C」キーや右クリックのコピーの操作などでクリップボードにコピーします。その情報は後で使うので、メモ帳などのテキストエディターに保存しておいて下さい。これは、今Designerで作成したカードに対応したコードで、この後これをPower Automateのフローで利用します
###メッセージを送信するフローを作成
さて次に[Power Automateでフローを作成](https://japan.flow.microsoft.com/ja-jp/)しましょう。
![009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/c8bedc7c-fc86-ea34-0527-a9d0f56e265b.jpeg)
[Power Automateを開き](https://japan.flow.microsoft.com/ja-jp/)、「作成」→「自動化されたクラウドフロー」と順にクリックします。ここで「Formsに参加登録があったら、参加登録した人にチャットを送る」という仕組みを作っていきます
![cloud-flow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/fd5309fc-e7e6-3821-9c61-ee899e100df6.jpeg)
フロー名として「事前課題を送る」と入力し、トリガーとしてFormsのトリガーである「新しい応答が送信されるとき」を選択して「作成」をクリックします
![011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/248facc6-a5c7-80ca-64dc-0bdbf13a7e88.jpeg)
フォームIDとして、ドロップダウンリストから、事前に作成したイベントの参加登録フォームを選択します
![012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/63470e82-1813-9804-3abe-af342c342bb1.jpeg)
「新しいステップ」をクリックし、Formsの「応答の詳細を取得する」を選択します
![013-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/5acd0f26-2f3a-88e4-d511-beebd5677ae7.jpeg)
「フォームID」は先ほどと同様に用意したフォームを選択し、「応答ID」は「応答ID
」のフィールドをクリックしたときに表示される動的なコンテンツから「応答ID」を選択します。「応答ID」とはFormsへの返信に自動的に振られるIDのことです
![014.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/927994e8-3868-f682-4639-165ebb439368.jpeg)
「新しいステップ」をクリックし、Teamsの「チャットやチャネルにアダプティブカードを投稿する」を選択します。これはアダプティブカードをチャットやチャネルに投稿する為のステップになります。
![15-e.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/c8334c7e-dcc8-4744-ad18-e32665089dc1.jpeg)
「投稿者」は「Flow bot」のまま、投稿先は「Chat with Flow bot」をドロップダウンリストから選択し、「Recipient」は動的なコンテンツから「Responders' Email」を選択します。この設定は1.アダプティブカードを「Flow」という名前のボットが投稿する（投稿者がFlowになる）、2.Flowボットとの一対一チャット形式でカードが表示される、3.このアダプティブカードの受け取り人は「Responder's Email」つまりFlowの回答者にチャットを送る、という指示になります。
「Adaptive Card」欄に先程作成してコピーしておいたアダプティブカードのコードをペーストし、「保存」をクリックします。
###動作を確認してみよう！
これで、下記の流れができました。
1. 参加者が勉強会のフォームに回答
2.「新しい応答が送信されるとき」トリガーが動き参加者へアダプティブカードをチャットで送信（チャットの送信主はFlowボット）
3.（Adaptive Card Designerでデザインし、生成されたコードをPower Automateにコピーした）アダプティブカード内の「事前課題を見る」ボタンを押すと、事務局側が指定した事前課題のURLに移動する

早速試してみましょう。
![forms.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/27ca55d0-eb17-9432-d877-5ad540bc6e7c.jpeg)
Formsでの参加登録を送信すると…
![chat-kita.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/30dc3267-778b-bef3-8035-c60d6a6b80f6.jpeg)
Teamsの個人チャットにFormsボットから、事前課題のURL付きボタンを含むアダプティブカードが送信されてきました。

今の動きのままだと、「参加出来ません」を回答として送信してきた人にも、同じカードが送られてしまいます。Formsでの応答を取得した後に条件分岐などの手をくわえてみるのも良いでしょう。
![jyouken.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/7d145e07-81f0-69fe-8d0b-de647fa4447f.jpeg)

既存のツールを組み合わせるだけで、少し便利になりましたね。ぜひ色々な仕組みを試してみて下さい。

本シリーズの目次はこちら：
https://qiita.com/Asuka_Nagamine/items/e94131a2be4878b65deb