Azure Bot Service ではじめるチャットボット開発 : 祝GA！QnA Maker でノンコーディング開発 (2) Bot Service 編

QnA Maker はノンコーディングで FAQ チャットボット (Chatbot, 以下 Bot) のコア部分(FAQ DB +検索サービス)を作成できるサービスです。FAQ のリスト (Q と A のペア) をアップロードすると、DB と検索サービスが自動で作成され、質問を Post すると 検索結果から可能性の高い回答が Response として返される Web API が生成されます。

ブラウザーだけで＆1ステップでチャットボットが作成できる Azure Bot Service には QnA Maker をつかうテンプレートが用意されています。Azure Bot Service + QnA Maker を使って、ノンコーディングで FAQ チャットボットを作成する手順を紹介します。

- Azure Bot Service について
    - [Azure Bot Service とは](https://qiita.com/annie/items/cf93a7a832123946a7da#azure-bot-service-%E3%81%A8%E3%81%AF) (※別のページに飛びます)
    - [Azure Bot Service の仕組み](https://qiita.com/annie/items/cf93a7a832123946a7da#azure-bot-service-%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF) (※別のページに飛びます)
- 準備
- 手順
    - (1) [QnA Maker 編](https://qiita.com/annie/items/e0dc8f9438a92bbc0ba6#1-qna-maker-%E7%B7%A8) (※別のページに飛びます) 
        - Azure Portal から QnA Maker アプリの作成
        - QnA Maker Web サイトから QnA Maker アプリの設定、展開
    - (2) Bot Service 編
        - [Azure Portal から Question and Answer テンプレートの 新規 Azure Bot Service アプリの作成](https://qiita.com/annie/items/74f68901cabf4a1a10d3#azure-portal-%E3%81%8B%E3%82%89-question-and-answer-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE-%E6%96%B0%E8%A6%8F-azure-bot-service-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E4%BD%9C%E6%88%90)
        - [Azure Bot Service アプリの QnA Maker 用設定](https://qiita.com/annie/items/74f68901cabf4a1a10d3#azure-bot-service-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE-qna-maker-%E7%94%A8%E8%A8%AD%E5%AE%9A)
        - [Azure Bot Service からの動作確認](https://qiita.com/annie/items/74f68901cabf4a1a10d3#azure-bot-service-%E3%81%8B%E3%82%89%E3%81%AE%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D)

# 準備
## Microsoft アカウント の取得
Azure サブスクリプション申し込みに必要です。
>[Microsoft アカウント登録手続き](https://www.microsoft.com/ja-jp/msaccount/signup/default.aspx)

## Azure サブスクリプション申し込み
無料試用版で充分です。上記↑で取得した Microsoft アカウントで申し込みを行います。(無料のプランがあるので、従量課金プランでも大丈夫ですが念のため。)
>[Azure 無料アカウントを今すぐ作成](https://azure.microsoft.com/ja-jp/free/)

## QnA Maker アプリ
[(1) QnA Maker 編](https://qiita.com/annie/items/e0dc8f9438a92bbc0ba6) の手順で、QnA Maker アプリを作成し、HTTP request の情報 を取得しておきます。


# 手順
## (2)Bot Service 編
### Azure Portal から Question and Answer テンプレートの 新規 Azure Bot Service アプリの作成

手順は [祝GA！Azure Bot Service 概略&作成～公開手順](https://qiita.com/annie/items/cf93a7a832123946a7da#%E6%89%8B%E9%A0%86) の手順と同じですが、Question and Answer テンプレート を利用します。

再度 [Azure Portal](https://portal.azure.com) をブラウザーで開きます。
左端ナビゲーションバーの [＋]をクリックします。(リソースの新規作成)
<a href="https://msdnshared.blob.core.windows.net/media/2017/12/bluesky_20171217_01.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/12/bluesky_20171217_01-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>

検索欄に [bot] と入力します。
Web App Bot、Function Bot, Bot Channels Registration という同じ Bot マークのサービスが表示されます。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_14.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_14-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>


今回は **Web App Bot** を選択、Web App Bot ペインで [作成] をクリックします。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_15.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_15-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>


Bot Service ペインで設定内容を入力します。

- ボット名
    - Bot Channel への登録名 (BotID) になります。Bot Channel の中でユニークになる名前を設定します
- サブスクリプション (デフォルトのまま)
- リソースグループ
    - **既存のものを使用**を選択して QnA Maker アプリを作成した リソースグループを選択します
- 場所
    - Botアプリをホストする Web App のロケーションを選択します。QnA Maker アプリと同じロケーションが良いですね
- 価格レベル
    - ここでは **F0(無料のプラン)** を選択します。
- アプリ名
    - ボット名と同じ名前が自動入力されます。BotアプリをホストするWebサーバーとしての名前になります。azurewebsites.net の中でユニークになる名前を設定します
- ボットテンプレート
    - クリックしてテンプレートを選択します。今回は **SDK V3**、**C#**、**Question and Answer** を選択します
- App Service Plan
    - 新規 (または作成済み) の Web App のプランを選択します。無料の Free Plan を利用可能です。

入力したら、**[作成]** をクリックして Bot アプリの作成を行います。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_16.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_16-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>


「展開が成功しました」というメッセージが表示されたら作成完了です。[リソースに移動] をクリックして、Bot アプリの設定確認とテストを行います。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_18.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_18-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>

### Azure Bot Service アプリの QnA Maker 用設定
作成した Web App Bot の設定ペインが表示されます。
概要ペインにメッセージングエンドポイントが表示されています。Bot Framework Emulator を使ってテスト行う場合は、こちらの URL にアクセスします。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_19.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_19-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>

設定ペインのメニューの *APP SERVICE 設定* にある **アプリケーション設定** をクリックして、QnA Maker 向けの設定を行います。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_20.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_20-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>

*アプリケーション設定* をスクロールして **アプリケーション設定** の項目を表示します。
QnA Maker アプリ を展開した後に表示された情報から以下の設定項目に値をコピーします。
*アプリケーション設定* 画面上部にある [保存] をクリックして、設定を保存します。

| Sample HTTP request の情報 |
|:--------------|
| POST /knowledgebases/**KnowledgeBaseID情報**/generateAnswer <br/> Host: **https://yourQnAHost.azurewebsites.net/qnamaker** <br/> Authorization: **EndpointKey AuthKey情報** <br/> Content-Type: application/json <br/> {"question":"<Your question>"} <br/> |

| 設定項目 | 設定する値 |
|:--------------------|:----------------------------------------------------|
| QnAAuthkey | **EndpointKey AuthKey情報**| 
| QnAEndpointHostname | **https://yourQnAHost.azurewebsites.net/qnamaker** |
| QnAKnowledgeBaseId | **KnowledgeBaseID情報** |
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_21.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_21-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>

### Azure Bot Service からの動作確認
設定ペインのメニューから Test in Web Chat をクリックすると、作成した Bot アプリ の動作確認を行うことができます。
<a href="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_22.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/06/bluesky_20180621_22-300x192.png" alt="" width="300" height="192" class="alignnone wp-image-19015 size-medium" /></a>