QnA Maker を利用すると、ブラウザ上の操作のみで自然な会話形式でユーザーに回答するシンプルなQ&Aボットを作成できます。
今回は社内用に「あると便利かな?」と思うチャットボットの構想が個人的にありました。
それを実現するにはどうするか?っていろいろ試した結果、社内ではSlackを一番使うのでSlack Botが良さそう、ということでSlack Botをノンコーディングで作るに決定。
で、「QnA Maker使うから余裕っしょw」ってかなりナメてかかってたんですが…実際はいろいろハマって思いのほか大変だったので未来の自分用に手順を記載しておきます。
Azure Bot Serviceとは
Web サイト、アプリ、Cortana、Microsoft Teams、Skype、Slack、Facebook Messenger などで自然なやりとりができるインテリジェント ボットを構築、接続、デプロイ、管理できるサービスです。
今回はこのサービスとQnA Makerを使って簡易FAQ Slack Botを作成しますが、QnA Makerは既に作成しているものを利用するので、本記事では作成方法は省きます。
https://azure.microsoft.com/ja-jp/services/bot-service/
Bot Serviceの準備
まずはQnA MakerをBot Serviceを連携させます。
Azureポータルにアクセスし、「+リソースの作成」をクリック。
「Bot」と検索するとこのようにサービスが表示されます。今回は「Web App Bot」を選択しました。
上から必要事項を入力していきます。気をつける点としては、価格プランは「F0(Freeプラン)」を、「ボットテンプレート」をクリックして「Question and Answer」を選択すること。(SDK言語はC#でもNode.jsでもどちらでも大丈夫)
これでQnA Makerが設定できるようになります。全て入力したら「作成」をクリック。
リソースの作成が完了したら「Bot Service」に移動して作成したリソースをクリック。
「アプリケーション設定」をクリックして、右側のコンテンツを少しスクロールし「アプリケーション設定」を表示し、QnA MakerのKeyなどの情報を入力します。
QnA Makerのポータル(https://www.qnamaker.ai/)で情報を確認してください。
- QnAAuthKey:右側に「Authorization」の部分、EndpointKey の文字を含む文字列を入力。
- QnAEndpointHostName:右側に「Host」の部分、https://[自身のBotの名前].azurewebsites.net/qnamaker を入力。
- QnAKnowledgebaseId:右側に「knowledgebases」の文字列を入力。
入力が完了したら「保存」をクリック。
「Webチャットでテスト」をクリック。右側で文言を入力するとQnA Makerと接続できていればキチンとレスが来ます。
Slackの設定
次に、Slackに連携させます。私がSlackについてよくわかってなかったのもあるんですが、Slack側の設定で微妙にハマりました…。
ブラウザ上でSlackにログインした上で「https://api.slack.com/apps」をクリック。
画面の右上にある「Create New App」ボタンをクリックします。
ボット名と、ボットを適用したいワークスペースを選択して「Create App」をクリック。
「OAuth & Permissions」をクリックし、Redirect URLsに「https://slack.botframework.com」を追加し「Save URLs」をクリック。
「Event Subscriptions」をクリックし、「Enable Events」をONにします。
「Request URL」に「https://slack.botframework.com/api/Events/[ボットハンドル]」と入力。(ボットハンドルはAzureポータルのBot Serviceの「設定」に記載)
図のように「Verified」と表示されればOK。
画面を少しスクロールし「Subscribe to Bot Events」を追加していきます。
追加内容は「公式ドキュメント」に記載があるので参考にしてください。
「Bot User」をクリックし、名前を入力します。「Always Show My Bot as Online」はONに変更します。
ここまで設定できたら「Basic Information」をクリックし、「Install your app to your workspace」でボットを適用したいワークスペースにインストールします。
スクロールすると「App Credentials」が表示されます。赤枠内の情報をBot Serviceで利用するので控えておきます。
Bot ServiceとSlackを連携させる
Azureポータルに戻り、該当のBot Serviceを表示します。
「チャンネル」をクリックし、Slackを選択します。
先程控えたSlackの情報を赤枠内に入力して「保存」し、Slack側と認証させれば完了です。
実際にSlackで動かしてみる
ボットを追加したいチャンネルに作成したSlack botを追加するのを忘れずに!w
このように、Slackでメッセージを入力すると、QnA Makerで設定した内容を返答します。
気になったところ
今回はQnA Maker、Azure Bot ServiceともにFreeプランを利用したのもあるのか、話しかけてから返信が来るまで少し時間がかかります。このあたり、プランを変更すれば対応できるかな?と思うのですが、利用頻度の高いボットの場合は、もう少し工夫が必要かなと。
実際に試してみてですが、オススメは「利用頻度が低い社内FAQボット」とかかなと思っています。これでしばらく運用してみる予定。
それと、Logic Apps を利用してSlack Botを作ることもできるようなのですが、非常に難しい感じになります。
詳しく知りたい方は @twit_ahf さんのこちらの記事を参考にされてください!
https://blogahf.blogspot.com/2018/08/slack-event-api-bot-logicflow.html
また、回答が無い質問をされた場合「No good match in FAQ.」とレスが返ってきます。
この文章をカスタマイズする方法もあるので、それは次回書きます。(記事が長くなってしまったので…)
最後に
このように、一つのQnA Makerを利用してLINE BOTやSlackなどチャンネルを変えるだけでFAQボットを作成できて便利です!
簡易的なものであれば十分かな?と思うので、ぜひ活用してみてください。