Bot Framework Composer は、Bot Framework をベースとしたチャットボットアプリを GUI で作成するツールです。ダイアログの作成や LUIS や QnAMaker を利用した自然言語処理の組み込みをノンコーディングで作成できます。
- Bot Framework Composer で チャットボットをノンコーディング開発 シリーズ
今回は Bot Framework Composer を使って、自然言語処理 (入力された文章の分類) を行う Cognitive Services Language Understanding (LUIS) のエンジン(LUIS App) を作成し、チャットボットに組み込みます。
引き続き、例として今の天気 or 天気予報 を返答するチャットボットを作成します。
今回は、初めに入力された文章を分類して、その分類(挨拶、今の天気、天気予報) を元に返答や動作が異なるようにします。
- 準備
- Bot Framework Composer
- Microsoft アカウント
- 手順
-
- LUIS のサブスクリプション情報設定
-
- LUIS Intent の設定、 Intent ごとのトリガー設定
-
- LUIS への Publish 設定
-
- チャットボットの起動 (と LUIS への Publish)、動作確認
-
準備
-
Bot Framework Composer
- (1)ひとまずEchoBot編 の手順で、ダウンロード&インストールしておきます
- (2) Dialog編 の手順で作成した WeatherBot を利用しても構いません。
-
Microsoft アカウント
- (新規で取得する場合) Microsoft アカウント登録手続き
- 初めて LUIS を利用する場合は、LUIS 初期設定 の手順で初期設定を行っておきます
- LUIS の Deply 情報
- LUIS Portal にアクセスしてサインイン、画面右上の ? をクリックして User Settings を表示します。Starter Key に表示されている Region, Primary Key, Endpoint URL の値をコピーしてローカルに保存しておきます
手順
1. チャットボットアプリに LUIS Intent を設定
(1)ひとまずEchoBot編 の手順で、Bot Framework Composer を起動し、ブラウザーで開きます。
Home 画面の [+New] をクリックします。
Create from scratch? ダイアログボックスが表示されるので、Create from scratch に✔(チェック)をつけて 右下の [Next] をクリックします。
Define conversation objective ダイアログボックスで、必要事項を入力します。
- Name [必須] : お好きな名前を入力してください。ここでは WeatherBot と入力
- Description : お好みで入力
- Location : (デフォルトのままで構いません。必要に応じて変更してください)
入力できたら、右下の [Next] をクリックして初期設定を完了します。
チャットボットアプリの名前.Main (ここでは WeatherBot.Main) と表示されたフロー画面が表示されます。
WeatherBot.Main が選択された状態で、右パネルに表示される Language Understanding の欄で Recognizer Type のドロップダウンボックスから LUIS を選択します。
Recognizer Type の下にあるテキストボックスで、ユーザーから入力される文章の分類名 (Intent) とその例文を入力します。
例えば、ユーザーから入力される文章を Greeting (挨拶など) | CurrentWeather (今の天気を取得したい旨の文章) | WeatherForecast (天気予報を知りたい旨の文章) の3種類に分類したい場合は、以下のように Intent (先頭に # をつける) と例文 (先頭に - をつけて Intent の後に列記) といったフォーマットで記載します。
# Greeting
- hi
- こんにちは
# CurrentWeather
- 今日の天気
- 今の天気を教えて
# WeatherForecast
- 天気予報
2. 判別された Intent によって起動する Trigger の設定
ユーザー入力 を LUIS で分類した結果 (Intent) を用いて、それぞれ違うアクション (Trigger) を設定できます。
2.1 "Greeting" Intent のアクションの設定
画面左側の Trigger | Dialog メニューにある (+) New Trigger.. をクリックします。
Create Trigger ダイアログボックスで、以下のように設定します。
- What is the type of this trigger?: Intent を選択
- Which intent do you want to handle?: 1. で設定した Intent (ここでは Greeting)
[Submit] をクリックして Trigger を作成します。
Greeting という Trigger が作成されて表示されます。ユーザー入力 の Intent が "Greeting" であった場合の処理を設定します。
画面中央でデフォルトで作成されている Greeting という Trigger の下にある (+) をクリックし、表示されるメニューから Send a Response を選択します。
画面右側に表示される Send a response ペインに返答を入力します。
"Greeting" Intent であることが分かるように挨拶を入力してみました。
2.2 "GetWeather" Intent のアクションの設定
Greeting Intent と同じ要領で他の Intent のアクションを設定します。
(2) Dialog編 の手順で作成した GetWeather Trigger (と getCurrentWeather Dialog) を再利用する場合は、GetWeather Trigger をクリックして表示、右パネルに表示される Intent のドロップダウンボックスで適切な Intent (ここでは CurrentWeather)を選択します。
または "Greeting" Intent と同様に Send a Response で (別の) メッセージを表示しても良いでしょう。
2.3 "WeatherForecast" Intent のアクションの設定
Greeting Intent と同じ要領で Intent のアクションを設定します。Send a Response で "こちらの機能は実装中" というメッセージでも、(2) Dialog編 を参考に天気予報を取得、表示する Trigger | Dialog を作成しても良いでしょう。(天気予報編は後日追加します)
3. LUIS への Publish 設定
Bot Framework Composer で設定した Intent の定義を用いて LUIS App を作成、Publish して Web API として利用できるようにするための Publish 設定を行います。
画面の左メニューバーの一番下、歯車マークの Setting (設定)をクリックします。
Settings の画面で、Show keys をクリックしてオンの状態にして入力できるようにします。
LUIS 設定部分で、以下の情報を追加(または変更)します。
- name: LUIS App の名前。お好みのものを。(ここでは WeatherBot201912 という名前にしています)
- authoringKey: ローカルに保存しておいた LUIS の Primary key
- authoringRegion: ローカルに保存しておいた LUIS の Region
- defaultLanguage: ja-jp
:
"luis": {
"name": "WeatherBot201912",
"authoringKey": "YOUR_LUIS_PRIMARY_KEY",
"endpointKey": "",
"authoringRegion": "westus",
"defaultLanguage": "ja-jp",
"environment": "composer"
},
:
4. チャットボットの起動 (と LUIS への Publish)、動作確認
作成したチャットボットを起動して、Bot Framework Emulator から動作を確認します。
チャットボットの(再)起動時に LUIS への Publish が行われます。
Bot Framework Composer の画面右上の [Start Bot] (または [Restart Bot])をクリックします。
Publish LUIS models ダイアログボックス が表示されるので、[OK] をクリックして、LUIS への Publish を行います。
[Start Bot] が [Restart Bot] という表記に変わり、 その横に表示される Test in Emulator をクリックして、Bot Framework Emulator を起動します。
Intent の例文として入力した文章(やそれに類する文章) を入力し、"Greeting" Trigger や "GetWeather" Trigger に設定した動作(メッセージ表示など) が確認できれば完成です。