PowerAutomateとPowerVirtualAgentsを連携して画像を応答するには

**Power Virtual Agents** において、画像や動画を応答する機能の GA が2021年1月に延期されたようだ。
https://docs.microsoft.com/ja-jp/power-platform-release-plan/2020wave2/power-virtual-agents/planned-features

そんなに待てないせっかちさんのために、**Power Automate** と連携して画像や動画を応答する方法を紹介する。

# Power Automate
https://flow.microsoft.com にサインインし、ボットから呼び出すフローを作成する。

1. ソリューションの **Common Data Services Default Solution** をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/dea76294-61c6-3ce4-1b49-1d7e960970a9.png)

2. 新規のフローをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/93d5928c-dc13-b0b7-7678-fec8054eb657.png)

3. トリガー **”Power Virtual Agents がフローを呼び出すタイミング”** を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/5f183f5e-101a-0caa-8637-2af3c3dd9582.png)

4. アクション **”変数を初期化する”** を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/71a935af-0aed-2b20-f04a-cb206a02f849.png)

5. 任意の名前で文字列変数を定義する。値には、画像を **Markdown** の書式で入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/97bf95e3-ae09-eef8-31cc-b84e3038966c.png)

6. アクション **”Power Virtual Agents に値を返す”** を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/f8b6b1a1-d6db-8dfa-3f48-719b4d214c53.png)

7. 任意の名前でテキストを定義し、前ステップで設定した変数を割り当て、保存。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/dc96289e-6c72-6f47-4e1a-18fa322a28ea.png)

8. 最後に、デフォルトのフロー名が分かりにくいので変更しておくと良い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/ede22f47-4402-eefa-be78-a47c5970b241.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/727cd949-1b4b-05c0-f01c-a83ad1242884.png)

# Power Virtual Agents
https://powerva.microsoft.com にサインインし、ボット本体を作成する。

1. 右上のロボットマークから **+New bot** をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/dc6fa9ff-6599-7f7d-0a18-7da7e5c827cd.png)

2. ボット名を決め、Power Automate と同じ環境を指定して **Create** をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/a4e434d3-1393-5275-d978-6c8888555af1.png)
>A flow can only be called from a topic located in the same Common Data Service environment as your bot. Flows must also be in a solution in Power Automate. You can move flows into solutions so they are listed in the authoring canvas.
https://docs.microsoft.com/en-us/power-virtual-agents/advanced-flow

3. **Topics** ▶ **New topic** の順にクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/845b8285-faf8-0a42-f913-cae422cb5d17.png)

4. トピック名を決め、**Trigger phrases**（ボットを呼び出すための言葉。複数指定できる）を追加して、キャンバスへ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/0c9c9d48-b628-149b-f2c1-f8a880379408.png)

5. **Action** を追加し、Power Automate で作成したフローを指定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/93de71dd-2b3d-6698-cfa6-45338a338e0a.png)

6. フローが返す変数を **Message** に渡す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/ef394aa1-0a56-78a9-ffe8-3fd8b307697e.png)

7. ボットをテストし、画像が表示されることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/df7a0f23-5bcd-4504-859a-7034b469932f.png)

# Teams連携
Teams でも画像が表示されることを確認できた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236222/10fc4843-349e-fe1e-bb8a-d2581dcd3d43.png)

# 参考
本記事は、Power Virtual Agents コミュニティに挙がっていた下記スレッドを参考にしている。
https://powerusers.microsoft.com/t5/Calling-Actions-from-PVA/PVA-Response-Support-some-portions-of-Markdown-formatting/td-p/409413
こちらでは、トリガーに **”HTTP要求の受信時”** 、最後のアクションに **”応答”** を利用しているが、それでも動く。