

【QnA Maker + Azure Bot Service】AIサービスを利用して簡単にFAQ Botを作成
こんにちは。ソリューション開発部 情報発信分科会の飯出(いいで)です。
今回は、QnA Maker で作成した FAQ データベースを「Azure Bot Service」を使って Web チャットとして公開してみます。QnA Maker を使った FAQ データベースの作成方法については、前回までの記事をご覧ください。
QnA Maker の API を公開する
FAQ データベースの内容を Web チャットに接続するには、まず QnA Maker の API を外部に公開します。
作成済みの FAQ データベースを選ぶ
まず、QnA Maker のコンソール画面を開きましょう。また URL を忘れた?こちらです。
[My knowledge bases] をクリックして、サービスの一覧画面を開きます。
![[My knowledge bases] をクリックして、サービスの一覧画面を開きます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_10-1200x686.jpg)
![[My knowledge bases] をクリックして、サービスの一覧画面を開きます。](https://devlog.arksystems.co.jp/wp-content/uploads/2018/07/QnAMaker_10-1200x686.jpg)
サービスの一覧画面にて、前回までの記事で作成した FAQ データベース「TrialFAQ」をクリックして開きます。


前回までに作成した FAQ データベースの中身を見ることができました。


API を公開する
QnA Maker で作成した FAQ データベースを、HTTP エンドポイントとして公開します。画面上部のメニューにある [PUBLISH] をクリックします。


以下のような画面表示となります。ここで [Publish] をクリックすると、 FAQ データベースを公開できます。


HTTP リクエストのサンプルが表示されれば成功です!ここに表示された内容は、別途テキストエディタなどに保存しておいてください。あとで使います。


Azure Bot Service と連携する
今回は Azure Bot Service の Web App Bot を使って、QnA Maker と連携します。
Bot Service を作成する
Azure 上に Bot Service 用の領域を作成します。Azure Portal から [リソースの作成] をクリックし、[すべて表示] をクリックします。


その後、[AI + Machine Leaning] → [Web App Bot] の順番でクリックします。[Web App Bot] をクリックした後に、画面右側が更に展開し、 [作成] ボタンが表示されたらクリックしてください。


続いて、Web アプリ ボットの各項目を入力・選択していきます。
- ボット名: TrialFAQ-Bot
- ボット テンプレート: Question and Answer (C#)
として進めます。
場所や価格レベルについては、利用状況にあった項目を選択してください。入力し終わったら、[作成]ボタンをクリックしましょう。


[作成] ボタンをクリックした後、デプロイが完了するまで少々時間が掛かります。
QnA Maker に接続する
たった今作成した Azure Web App と FAQ データベースを格納している QnA Maker をここで接続します。
[リソースグループ] をクリックし、表示された一覧から [TrialFAQ-Bot] をクリックします。


もう一度、[TrialFAQ-Bot] をクリック。


[アプリケーション設定] をクリック。


設定する項目は以下の3つです。画面を下方向にスクロールすると、当該項目が見えてきます。
- QnAAuthKey
- QnAEndpointHostName
- QnAKnowledgebaseId
QnA Maker を公開した際に表示された HTTP エンドポイントの Sample HTTP request 欄を見ながら設定します。
POST /knowledgebases/{QnAKnowledgebaseId}/generateAnswer
Host: {QnAEndpointHostName}
Authorization: EndpointKey {QnAAuthKey}
Content-Type: application/json
{"question":"<Your question>"}
設定したら、[保存] してください。


これで繋がる。はずです(笑)
テストをする
[Web チャットでテスト] をクリックすると、以下の画面が表示されます。ここから、動作確認ができます。


では、前回の記事で質問として用いた「事業内容は?」と、質問してみます。


ちゃんと回答していますね!
Web サイトへの埋め込み
作成した Web チャットを、実際の Web サイトに埋め込んでみます。
準備
[チャンネル] → [ボットの埋め込みコードを取得] の順にクリックします。


[Web Chat の構成ページを開くには、ここをクリックします >] をクリック。


シークレットキーと埋め込みコードを取得します。[表示] をクリックしてシークレットキーを表示し、コピーしてください。埋め込みコードも一緒にコピーしましょう。


Web ページの作成と表示
今回はシンプルな Web ページを作成し、その中で Web チャットを動かします。埋め込みコードにシークレットキーを反映したタグを、HTML 内に含めます。幅、高さの調整はお好みでどうぞ。
HTML サンプル
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>Web チャットのサンプル</title>
</head>
<body>
<iframe width="600px" height="800px" src='https://webchat.botframework.com/embed/TrialFAQ-Bot?s=シークレットを入力'></iframe>
</body>
</html>
完成しました!


まとめ
ここまで早い人で30分、時間が掛かっても1時間あればたどり着けるのではないでしょうか。
事前に FAQ サイトなどが準備できていれば、ノンプログラミングかつ簡単に AI サービスを使ったチャット Bot が作成できてしまいます。今回は紹介しませんが、Skype や Slack を使った形でも同じくらいの手間で構築できると思います。
実運用に耐える FAQ Bot に仕上げるには、ここからが本番です。質問に対する回答の精度向上、チャット上での質問の選択肢提供やデザインの洗練化など、まだまだやる事がたくさんありますね。
機会がありましたら、今後はこのような内容にも触れていきたいと思います。ありがとうございました。