Azure版QnA MakerでTeams用Botを作成

皆さんこんにちは。国井です。

最近、自分の仕事の範囲がものすごく拡張していて、Microsoft 365という枠組みの中でTeamsのセミナー/トレーニングまで手掛けるようになっています。Teamsの話をするときは必ずBotを作る話になるのですが、その際、QnA Makerを使って簡単にBotを作る方法を紹介させていただいています。
ところが最近、QnA MakerがPreviewじゃなくなったのと同時にAzureのサービスに移管されています。(ちなみにPreview時代に作ったQAのデータベースは
https://www.qnamaker.ai/old/Home/MyServices からアクセスできます)

新しいQnA Makerで作ったQAデータベースをTeamsに実装し、利用できる方法はどこどこで紹介されているので、そちらを参照してくださいね、って言おうと思ったら、日本語で情報がなかったんで、ひとつブログ投稿を書いてみることにしました。

Knowledge Baseの作成

QnA MakerのデータベースはKnowledge Baseと呼ばれており、QnA Makerを使ったBot作成はKnowledge Baseを作るところから始まります。

https://www.qnamaker.ai/ からQnA Makerのサイトにアクセスし、Azure管理者アカウントでサインインします。サインインしたら、[Create a Knowledge Base]-[Create a QnA service]からKnowledge Baseを新規作成します。

すると、Azure管理ポータルが起動し、QnA MakerのApp Serviceを作成することになります。

App Serviceが作成できたら、QnA Makerのページに戻り、Knowledge Baseの作成を再開します。Azure QnA Service欄には前の手順で作成したApp Serviceの名前を入れます。また、Populate your KBという欄ではQA集を作成するに当たり、どこのURLに書かれているFAQをインポートするか指定します。
ここでは、日本郵便のゆうパックに関するQ&Aを利用することにしました。

ゆうパックに関するQ&A 料金・オプションサービスから調べる
https://www.post.japanpost.jp/question/you_pack/category01.html

最後にCreate your KBをクリックして完成です。

出来上がったKnowledge Baseではゆうパックに関するQ&Aから引っ張ってきてQA集が確認できます。また、この画面で手動でQ&Aを追加することもできます。確認できたらPublishボタンを押して、

Publishボタンを押します。

すると、HTTP requestが生成されるので、これを控えておきます。

続いてAzureからBot用のApp Serviceを作成します。Azureの新規作成からAI + Machine Learning > Web App Botを選んで、

ボット名などを入力してApp Serviceを作成していきます。このとき、ボットテンプレートにはQuestion and Answerを必ず選んでください。

BotのApp Serviceができたら、[アプリケーション設定]項目を開き、次の項目の値を設定します。
QnAAuthKey:HTTP requestのAuthorization Endpointkeyの値
QnAEndpointHostName:HTTP requestのHostの値
QnAKnowledgebaseId:HTTP requestのURLに記載されているId部分の値
(上のサンプルでは1675a-…で始まる部分)

続いて、BotのApp Serviceの[チャンネル]項目を開き、Teamsアイコンクリックします。

すると、Microsoft Teamsがチャンネルに追加され、さらにそのリンクをクリックすると、

Teamsアプリが立ち上がり、Botが追加されることが確認できます。このBotは先に登場したQnA MakerのKnowledge Baseと連動していますので、Q&A集に沿って回答してくれます。

いかがでしたでしょうか?Botを作るというと、なんか難しそうなイメージがありますが、これだけの手順でできてしまうので、ぜひチャレンジしてみてください。あと、Microsoft AzureのWebサイトでも大まかな手順は紹介されているので、そちらも参考にしてみてください。