Facebook のMessenger でPower Virtual Agents を使用する

こんにちは。日本マイクロソフトの向井です。
今回はFacebookのMessengerでPower Virtual Agents を使用する方法をご紹介します。

基本的には以下のDocs の手順で設定を行っていきますが、少しわかりにくいと思いますのでこちらの記事ではスクリーンショット付きで手順をご紹介します。
[Facebook へのボットの追加](https://docs.microsoft.com/ja-jp/power-virtual-agents/publication-add-bot-to-facebook#add-bot-to-facebook-messenger)

対応しているDocsの箇所を分かりやすくするために各章のタイトルにリンクを貼っておきます。

#1. [Facebook アプリ設定を構成する](https://docs.microsoft.com/ja-jp/power-virtual-agents/publication-add-bot-to-facebook#configure-facebook-app-settings)
Docsの手順を行う前に、まず、Facebook開発者として登録を行う必要があります。
ここでは詳しい手順は省きますが、私は以下のページを参考にさせていただきました。
[acebook developersとは？開発者登録のやり方とFacebookアプリの作成方法を解説](https://media.next-stage.biz/facebook/facebook-for-developers.php)


開発者として登録ができたら、Facebook上でアプリの作成を行います。
マイアプリ＞アプリを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/835cc5bd-6a89-b60c-c000-447c15b69b40.png)

今回はビジネスを選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/8fd505fd-b8a3-64d2-062c-0120aa120ce5.png)

必要事項を入力してアプリを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/300142b8-8e4a-579b-61fb-72b4873a541a.png)

Docsはこのアプリ作成までが完了している前提で説明が書かれています。

##Facebook アプリ情報を取得する
設定＞ベーシック　からアプリIDとapp secretを確認し、メモ帳などにコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/83b7c415-4490-9a1f-4770-bb6d222a62d7.png)

##Facebook アプリの API アクセスを有効にする
設定＞詳細設定　から「アプリ設定へのAPIアクセスを許可」にチェックをし、変更を保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/b0ef545b-03ff-55c8-3108-fc9d2474a691.png)

##Facebook メッセンジャーをアプリに追加する
ダッシュボードのアプリに製品を追加からメッセンジャーを追加します。
※スクリーンショットを取り忘れたので画像はDocsから引用しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/98054c08-c3fb-0a1c-299c-22e69fc4fe63.png)

##Facebook ページを構成する
Messenger＞設定　から新しいページを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/2b79007f-65df-9084-604c-4114d4abe399.png)

必要な情報を入力し、ページを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/f75e52c1-063d-bbbf-6e9f-9c0ab4fd9d87.png)

ページの作成後、先ほどのページに戻ります。
ページを追加または削除を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/32002e1b-60a9-5f99-1bc1-a99f2dbbdbf2.png)

先ほど作成したページを選択して次へを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/0746f874-0ff6-13d5-8248-ab31a4a118b6.png)

メッセンジャーでのページ会話の管理とアクセスをはいに設定して完了をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/06b276ba-9115-b336-3133-62f7ff270050.png)

ハイライトしたページIDは後をど使うのでメモ帳などにコピーしておきます。
トークンを生成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/f09bf63a-f7e1-de23-0683-40137f96d98f.png)

トークンもメモ帳などにコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/5e600e78-0011-b8d2-5e8c-718cf9ec19e6.png)

#2. [Power Virtual Agents で Facebook チャネルを構成する](https://docs.microsoft.com/ja-jp/power-virtual-agents/publication-add-bot-to-facebook#configure-the-facebook-channel-in-power-virtual-agents)
Power Virtual Agentsのサイトを開きます。
管理＞チャネル　からFacebookを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/bbef8181-5dd7-57d5-9ae6-3debbf835745.png)

1. でメモ帳などにコピーしておいた情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/c0b8ec54-a97a-17a4-6267-e728f9a6beae.png)

画像のように成功メッセージが出ればOKです。
※上手くいかないときはアプリシークレットなどの入力情報の大文字小文字があっているか確認してみてください。私はOneNoteにメモを取っていたら、最初の文字が自動で大文字になっていて上手くいきませんでした・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/e0992567-95c4-b5da-a5fa-540debb92105.png)

コールバックURLとトークンの検証をメモ帳などにコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/b7e54646-f53f-a282-f914-0927c5282b3b.png)

#3. [Facebook アプリを Power Virtual Agents に接続する](https://docs.microsoft.com/ja-jp/power-virtual-agents/publication-add-bot-to-facebook#connect-your-facebook-app-to-power-virtual-agents)
Facebookに戻ります。
Messenger＞設定＞Webhooks　でコールバックURLを追加をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/15803eb5-3f65-af11-9b87-6b0aac0b82b5.png)

先ほど2. でメモしておいたコールバックURLとトークンを検証を入力して確認して保存をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/2abe3071-2f46-6312-79b2-a8de2ff735e6.png)

サブスクリプションの追加を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/a0c4a990-28fb-9511-0150-7876c435b404.png)

以下にチェックをつけて保存します。
・messages
・messaging_postbacks
・messaging_optins
・message_deliveries
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/d52479c0-b461-4c0b-3143-1f755cbb3c39.png)

#4. 動作確認
実際にアプリを公開するには[こちらのDocs](![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/f076c749-2900-f379-18f9-99c230356618.png)
)に記載がある通りFacebookの審査が必要です。

今回はデモ用に作成したので、開発者ユーザーで動作の確認を行いました。
ページのボタンを押すとメッセージが送れるように設定しています。
ボタンをテストを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/c1fbaafb-b3e6-b1ec-dd21-15643bc194a3.png)

トリガーフレーズである「こんにちは」を入力しました。
今回作成したボットはAAD認証を必須にしているので、ログインを求められました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/5d1a4b5a-2931-9266-8798-693c251ae185.png)

ログインをクリックすると、Microsoftアカウントでログインをする画面に移ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/23afd493-8b72-2a7d-fac5-5d5c0ecf5535.png)

ログイン後、認証コードが発行されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/43324b34-9770-bcf5-ccff-7aeabd21bc12.png)

このコードをチャットで送信します。
すると、ログインしましたというメッセージの後にPower Virtual Agentsで設定したメッセージが届きました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/79dcb9b7-afed-7da7-39cc-915a593c196b.png)

念のため、Power Virtual Agents側でもテストをしてみます。
「こんにちは」と入力すると、ログインを求められ、認証コードを入力すると、先ほどと同様のメッセージが届くことを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1004488/586a2074-40c7-7739-47bc-7d2284ad7fca.png)