Power Virtual Agents に FAQ や Q&A を一括で取り込む方法

#はじめに
Power Virtual Agetns には、「トピックの提案」という Azure QnA Maker のように FAQ や Q&A を一括で取り込む機能が存在します。
とても便利な機能ですが、利用する上で注意すべき制限があります。
利用手順や制限等について簡単にまとめてみました。


#トピックの提案の操作方法

トピックの提案は
[トピック]－[トピックの提案] で表示されるウィンドウで、取得するコンテンツのリンクを入力することで、トピックの取込が可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/ec063ff3-d67c-d159-dcce-0c9b98347f92.png)

取得したトピックは、
[トピック]－[提案された]で表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/49499da5-7214-c165-bf0b-36ea156b3d98.png)

取得したQAは、質問がそのままトリガーフレーズに、回答がメッセージとなる一つのトピックとして作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/4bf5ca13-c527-1460-76e5-b469b9ab5680.png)

トピックの末端には、デフォルトで用意されている「会話の終了」が自動的に配置されるので、便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/8be601d7-77cb-be37-8e02-919887340cdd.png)

提案されたトピックは[トピックに追加]することで、そのままチャットボットの応答として利用可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/b63c7307-ab9f-8525-af8a-29ca60306951.png)

#注意
制限として、[MSのDocs](https://docs.microsoft.com/ja-jp/power-virtual-agents/advanced-create-topics-from-web#extract-content-from-webpages-or-online-files)にある通り、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/90bdcec3-d25a-fe3f-70f4-8f085bbc99e1.png)

* 公開されているURLであること、SharePoint OnlineやOneDriveのような認証を求めるURLは指定不可
* 拡張子を含むURLであること
* PDF、DOCS、PPTX、TXT、TSV、XLSX、CSVをサポートしている

とのことです。

SPOのページにてFAQを公開しているような組織では、その内容をオンラインファイルにコピーするという一手間が必要となります。

#オンラインファイルからの取込方法「案」

上記注意にある通り、「トピックの提案」は認証なしで、かつファイルの拡張子までを指定できるURLが必要です。
実現する方法として、Azure ストレージのコンテナーにファイルを保存する手段が考えられます。

※ Azure ストレージの詳細は[「Docs」](https://docs.microsoft.com/ja-jp/azure/storage/blobs/)を参照ください。

ファイルを格納するコンテナーのアクセスレベルは「コンテナー」で設定します。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/90323e21-3703-2d2d-4846-960bec4b58a5.png)

アップロードしたファイルのURLを、Power Virtual Agetnsに貼り付ければ、トピックの取込が可能です。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/91654d20-b648-1c95-5e45-a5104a88dbf3.png)



##Webページからの取得

[「Microsoft Learn のよく寄せられる質問」](https://docs.microsoft.com/ja-jp/learn/support/faq?pivots=general)から取得してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/17c37847-1d5d-6202-a2b2-e0d11f729446.png)


Webページに記載されている質問が正しく取り込まれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/5ae71f4d-51a0-b1c3-bc36-196ea3f2e586.png)

ボタンで表示が切り替わる内容についても取得しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/e43f1152-3be3-e00d-f429-a840db765401.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/0d19190c-8a40-603c-3131-9a0b82b8fd1d.png)

##Excelファイルからの取得

Excelブックからの取込も可能です。
A列に質問、B列に回答を記載した.xlsxファイルを用意します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/df078556-c5fb-5835-1b9a-b9106a4c8824.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/3e690edc-4af9-f25b-80b0-618524f1b794.png)

##CSVファイルからの取得

質問と回答を「,」（カンマ）区切りし、質問ごとに改行したCSVファイルを用意してください。
上記のExcelファイルからの取得で作成したExcelブックをCSV形式で保存すると、このフォーマットになります。

注意点として、文字コードはUTF-8で作成する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/781cc53e-46d7-e5a3-422d-9ea09007347e.png)

そのままShift-JISで保存したファイルを取り込むと、文字化けします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/3e16df20-8005-e702-ed5d-bc9d1f1bce05.png)

##TXTファイルからの取込

[「Microsoft Learn のよく寄せられる質問」](https://docs.microsoft.com/ja-jp/learn/support/faq?pivots=general)
のQA部分をそのままコピー&ペーストしたTXTファイルを用意し、取り込んでみました。
TXTファイルの場合も、文字コードはUTF-8で作成してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/0f73c414-90cb-8783-f337-f656beb93932.png)

Webページと同様、QAが取り込まれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/67c166ce-f64a-ed9e-5504-e2446ece9bc1.png)

SPOサイトのFAQページの内容等を取り込む際は、TXTファイルに転写するのが手軽そうです。

#まとめ

QAのような一問一答をチャットボットで実装する場合、質問の数だけトピックを作成する必要があります。
既存のコンテンツを、一つ一つチャットボットに入力するのは大変な作業です。

今回紹介したトピックの提案を使えば、作業量はぐんと減るはずです。
ぜひご活用ください。