寝て起きて寝る

過ぎたるは及ばざるが如し

雑に QnA Maker を触って Slack と連動させてみた

QnA Maker を使用してFAQ BotをSlack に連動させたメモ

(2018.04時点ではプレビュー版です)

QnA Maker とは

会話的な方法でユーザーの質問に回答するためのREST APIとWebベースのサービスを簡単に作成する事が出来るサービス

こんな感じの仕組み

f:id:yasu7ri:20180420154243p:plain

QnA servicesの作成

まずはQnA Makerにアクセスして

"Create new service"からQnA servicesを作成する

FAQの元となる情報の指定方法には二通りある

一つはFAQサイトのURLを指定する方法で、もう一つはFAQが書かれているファイルをアップロードする方法

今回はMazda Zoom-Zoom スタジアム広島|よくあるご質問(Q&A)のURLを指定する方法で作成してみる

f:id:yasu7ri:20180422101931p:plain

後は"Create"ボタンを押すだけ

正常に作成されるとFAQの元となる情報が表形式で表示される

f:id:yasu7ri:20180422102929p:plain

微妙に読み取れていない場合は表を修正し"Save and retrain"を押す

また、指定したFAQサイトによっては全く読み取れない場合もある

f:id:yasu7ri:20180422103417p:plain

QnA servicesのテスト

作成したservicesはTestタブからテストも可能

f:id:yasu7ri:20180422104247p:plain

ここで質問に対する回答が間違っている場合は、正解となる回答を選択し学習することも可能のようだ

QnA servicesの公開

"Publish"よりserviceを公開する

f:id:yasu7ri:20180422105514p:plain

公開されるとSample HTTP Requestが表示され、その中にQnAKnowledgebaseIdQnASubscriptionKeyが埋め込まれている

これはAzule Functions Botを作成する際に必要なのでメモっておく

メモるのを忘れた場合はMy QnA servicesからView Codeでも確認できる

ここまででQnA servicesの作成は完了

Azule Functions Bot の作成

次にQnA serviceを使用したBot アプリをAzule Functions Botで作成する

作成する際にボット テンプレートは"Question and Answer"を指定する

f:id:yasu7ri:20180422122715p:plain

アプリケーション設定

作成されたAzule Functions Botへアプリケーション設定を行う

アプリケーション設定タブのアプリ設定へQnAKnowledgebaseIdQnASubscriptionKeyを設定して保存する

値は先ほどQnA services作成時にSample HTTP Requestに埋められていた値を使用する

f:id:yasu7ri:20180422120000p:plain

"Web チャットでテスト"タブでテストを行い回答が返ってくれば完了

f:id:yasu7ri:20180422212651p:plain

Slack との連動

今回作成したBotをSlackと連動させる

Slack Appの作成

アプリ名と作成したアプリが所属するワークスペースを指定してSlack Appを作成する

f:id:yasu7ri:20180422213533p:plain

Slack Appの設定

Redirect URLの追加を行う

f:id:yasu7ri:20180422214158p:plain

Bot Userの作成

f:id:yasu7ri:20180422215853p:plain

Event Subscriptionsの設定

Request URLに https://slack.botframework.com/api/Events/{ボット ハンドル} を入力する

ボット ハンドルはAzure Functions Botの設定にある

f:id:yasu7ri:20180422231413p:plain

Subscribe to Bot Eventsへダイレクトメッセージに反応するイベントを追加する

Azure Functions Botのチャンネル設定

Azure Functions BotのチャンネルからSlackを選択

f:id:yasu7ri:20180422224154p:plain

Slack AppのBasic InformationにあるApp Credentialsの情報をSlackの資格情報へ設定する

f:id:yasu7ri:20180422224644p:plain

f:id:yasu7ri:20180422224714p:plain

まとめ

QnA Makerをつかうと簡単にSlackで上で質問に回答してくれるBotが作成出来た

f:id:yasu7ri:20180422232700p:plain

参考