以下はAzureでQnA Makerサービスを作成し、Slackと連携させるまでの流れを説明。
Azure
はじめにWebアプリボットを作成します。
リソースの作成 > AI Machine Learning > Web App Bot
- ボット名: SampleBot-2018 (任意)
- リソースグループ: SampleBot (任意)
- 場所: Japan East
- 価格レベル: F0 (無料枠で構築)
- ボットテンプレート: Question and Answer
- App Serviceプラン場所
- Appサービスプラン名: SampleBot-2018 (任意)
- 場所: 東日本 (任意)
※値を指定していない項目はdefaultを使用しています。
QnA Maker
次にQnA Makerの設定を行います。
https://www.qnamaker.ai/ のページから、Create a knowledge baseタグを選択。
STEP1 の Create a QnA service をクリックすると、Azureのダッシュボードに遷移しますので、そちらでサービスの設定をします。
- Name: QnA (任意)
- Management Pricing tier: F0 (無料枠で構築)
- 場所: 米国西部 (現時点では東日本などは選択不可)
- Resource Group: SampleBot (Webアプリボット作成時のリソースグループ)
- Search pricing tier: F
- Search location: 米国西部 (上記の場所に合わせた。任意)
- App name: QnA-2018
※値を指定していない項目はdefaultを使用しています。
※App service はデフォルトで S1 が選択されるように記載があります。こちらは無料枠ではないレベルなので、そのままにすると課金されます。(無料枠への変更方法は後述)
QnA Makerサービス作成後、QnA Makerのページへ戻り、STEP2以降は設定します。
- Microsoft Azure Directory ID: 規定のディレクトリ
- Azure subscription name: 従量課金 (各自の設定による)
- Azure QnA service: QnA (作成したQnA Service)
※QnA Makerサービス後、QnA Makerのページの refresh this pageをクリックすることで、選択肢が再度読み込まれ、Azure QnA serviceなどが、選択可能になります。
STEP3では、ナレッジベースの名前を設定
- Name: SampleBot-2018KB (任意)
リソースの作成が完了したら、ナレッジの登録をします。
今回は「竜頭蛇尾」と「朝三暮四」について登録します。
2つの熟語を登録したら、
Save and train > Test
を実施し、動作確認をしてください。
動作確認が済んだら、ナレッジを公開します。
公開したら Edit Service で、Azureのリソースに Sample HTTP requestに表示されている一部の値を環境変数として登録します。
POST /knowledgebases/<QnAKnowledgebaseId>/generateAnswer
Host: <QnAEndpointHostName>
Authorization: EndpointKey <QnAAuthKey>
Content-Type: application/json
{"question":"<Your question>"}
アプリケーション設定
- QnAAuthKey
- QnAEndpointHostName
- QnAKnowledgebaseId
登録したら「Webチャットでテスト」でサービスとQnA Makerのナレッジが連携されていることを確認するテストします。
最後に、QnA Serviceを作成時に、defaultで無料枠ではなかった箇所について、価格レベルを変更します。
Slack API
さて本題のAzureで作成したチャットボットとSlackを連携させます。
https://api.slack.com/apps から Create New App します。
- App Nmae: AuzreBot (任意)
- Development Slack Workspace: (各自のSlackワークスペース)
App Credentialsが表示されます。
- Client ID
- Client Secret
- Verification Token
は、あとで使いますが、その前にSlack APIの設定をしていきます。
OAuth & Permissions > Redirect URLs
- Redirect URLs: https://slack.botframework.com
BOT Users > Add a Bot User
- Display name: azurebot (任意)
- Default username: azurebot (任意)
- Always Show My Bot as Online: On
Event Subscriptions
― Enable Events > On
- Request URL: https://slack.botframework.com/api/Events/${QnA Service Name}
- Subscribe to Bot Events
- Event Name: message.channels
Azure
最後に、WebアプリボットとSlack APIを接続させます
チャネル > Slack
App Credentialsで表示されていた、Client IdをクライアントID。Client Secretをクライアントシークレット。Verification Tokenを確認トークへ入力します。