#はじめに
前回は、pepper for Biz 3.0 の AI会話のカスタマイズ機能を使用して、Pepper チャットボックス コンバーターのサンプルシナリオ(空のテンプレート)を、単純にPepperで動かすということを行いました。
今回は、Dialogflow側の設定内容について細かく確認していこうと思います。
前回の記事は、こちらになります。
Pepper for Biz3.0のAI会話のカスタマイズ (1)
#環境について
- pepper for Biz3.0
- お仕事かんたん生成3.0
- Dialogflow
- Microsoft Excel
#Dialogflow - Agent
前回使用したDialogflowのAgentを参照してください。
テンプレートによって、次の5つのIntentが作成、Default Fall Intentが更新されていると思います。
Excelのテンプレートには、たくさんのIntentXXX行が用意されていますが、実際に使用されるのは「アクションタイプ」列に「-」が設定されてる行の手前までとなります。
また、2019/5段階のテンプレートでは、Agentに作成されるのはIntentのみで、Entityは作成されません。
##サンプルIntentの関係
サンプルのインテントの関係は、次の通りです。大きく2つのシナリオに分かれています。「名前についてのシナリオ」と、「好きな食べ物についてのシナリオ」(Intent2~Intent5_fellback)です。「好きな食べ物についてのシナリオ」は、会話を継続させる仕組みとして、Contextを使用しています。このサンプルでは、「food」というContextをIntent2が設定し、Intent3~Intent5_fellbackは、その「food」Contextが有効な間だけ、受け付けるようになっています。
このContextの有効期間は、Contextに設定した回数分、対応するIntentを消費した場合か、Intentの一致から20分後になくなります。
テンプレートのサンプルでは、「food」Contextの回数は3になっていました。つまり3回Intent3~Intent5_fellbackが実行されると、「food」Contextはなくなります。新たに設定するには、Intent2が実行されなければなりません。
また、余談ですが、サンプルではIntent2で好きな食べ物の質問をして、Intent3に該当する答え「焼肉」と回答をしたとします。これで会話は終了ではなく、まだ「Food」Contextのカウンタは、3->2になっただけですので、まだ有効です。続いて、Intent4に該当する答え「お寿司」と答えることができてしまいます。これは時と場合によりますが、食べ物の回答後にContextをクリアしたい場合は、Intent3とIntent4のoutput contextに次のように指定します。
指定の方法は、output context欄に「food」と入力し、設定された数字を5から0にします。こうすることでContextがクリアされます。
##IntentとEvent名について
Intentには、それぞれ固有のEvent名が設定されています。
Intentは音声テキスト(音声認識後の文字列)をもとに、Dialogflowの機械学習によって選ばれたIntentが実行されますが、直接Intentを指定して実行したい場合があります。そのときにこのEvent名を使用します。
Event名による実行そのものは、「お仕事かんたん生成」側が行うのですが、テンプレート上ではボタンに対応するインテントのEvent名、連続してPepperに発話させる場合の次のインテントのEvent名などで使用します。
また、「AI会話」ボックス実行時に最初に起動するインテントのEvent名を指定することで、Pepperから話しかけることができます。例えばサンプルのIntent2のEvent名「event2」を指定しておくと、「AI会話」ボックス実行時に「食事についてのシナリオ」からスタートすることができます。
##テンプレートとIntentの関係
次にExcelテンプレートに設定した内容が、どのようにIntentに設定されているのかを確認していこうと思います。
###Intent1
Intent1は、ユーザが名前について話しかけると、Pepperが発話とディスプレイ(テキスト)で答えるシナリオです。
Excelのテンプレートの「インテント名」「イベント名」「ユーザー発話」は、dialogflowの「Intent」「Events」「Training phrases」にそれぞれ設定されます。
Excelテンプレートの「アクションタイプ」以降は、「Custom payload」に独自のJsonデータとして設定されます。
この「アクションタイプ」は、「テキスト」「画像」「動画」「ボタン」の4種類あり、このIntent1は、「アクションタイプ」-「テキスト」のサンプルです。
また、「テキスト」にはタブレットに表示する文字列、「スピーチ」には、Pepperの発話文字列を指定します。発話文字列は、発話タグを入れて発話を調整することが可能です。テンプレートに設定されている「テキスト」には、発話タグが指定されていませんが、コンバーター側でPepperの標準の音声となる¥rspd=110¥¥vct=135¥が設定されるようです。
{
"list": [
{
"speechText": "\\rspd=110\\\\vct=135\\ボクの名前はペッパーです",
"action": {
"actionType": "showText",
"content": {
"displayText": "ボクの名前はPepperです!"
}
},
"issueEvent": "",
"endConversation": false,
"animation": ""
}
]
}
###Intent2
Intent2は、好きな食べ物の質問シナリオで、「好きな食べ物について」の最初のIntentです。
AI会話のユーザの回答として、音声による回答と、タブレットのボタンによる回答が可能となっており、このIntent2はそのタブレットにボタンを表示する例となります。「アクションタイプ」は「ボタン」です。
このIntent2が実行されたあと、Context「food」を有効にするため、「output context」に「food」を設定します。
Excelテンプレートでは「コンテキスト」-「出力」に指定します。
また、ボタンそれぞれには対応するインテントのEvent名が指定されており、「焼肉」ボタンではevent3(Intent3)を、「お寿司」ボタンではevent4(Intent4)を実行するように指定されています。
{
"list": [
{
"speechText": "\\rspd=110\\\\vct=135\\ボクは電気が好きです。ところでお客様は、焼肉とお寿司ならどっちが好きですか",
"action": {
"actionType": "showButtons",
"content": {
"title": "焼肉とお寿司どっちが好き?",
"buttons": [
{
"label": "焼肉",
"event": "event3"
},
{
"label": "お寿司",
"event": "event4"
}
]
}
},
"issueEvent": "",
"endConversation": false,
"animation": ""
}
]
}
###Intent3
Intent3は、Intent2の質問の回答の1つの「焼肉」を選んだ場合のシナリオです。
「アクションタイプ」は「テキスト」でIntent1と同じです。Intent1と異なるのは、「コンテキスト」が指定されている点です。
Context「food」が有効な間だけ、このIntentを有効とするために、「input context」に「food」を設定します。
Excelテンプレートでは「コンテキスト」-「入力」に指定します。
{
"list": [
{
"speechText": "\\rspd=110\\\\vct=135\\やっぱり焼肉美味しいですよね",
"action": {
"actionType": "showText",
"content": {
"displayText": "やっぱり焼肉美味しいですよね!"
}
},
"issueEvent": "",
"endConversation": false,
"animation": ""
}
]
}
###Intent4
Intent4は、Intent2の質問の回答の1つの「お寿司」を選んだ場合のシナリオです。
Intent3とほぼ同様ですので、説明を省略します。
###Intent5_fallback
Intent5_fallbackは、好きな食べ物のシナリオで、どのIntentにも該当しない発話だった場合に、実行されるIntentです。
Excelテンプレートの「インテント名」に**_fallback**を付けるとFallback Intentとして作成されます。
Context「food」が有効な間だけ、このFallback Intentを有効とするために、「input context」に「food」を設定します。
###Default Fallback Intent
Default Fallback Intentは、ユーザの発話が、どのインテントにも該当しなかった場合に、実行されるIntentです。テンプレートインポート時に自動でCustom payloadが追加されます。
{
"speechText": "\\rspd=110\\\\vct=135\\すみません。別の言い方でお願いします",
"action": {
"actionType": "fallback"
}
}
Pepperの発話を変更したい場合は、このCustom payloadを修正する必要があります。
サンプルでは1つだけの回答になっていますが、複数回答も可能なようです。
複数の回答にするには、"list:[]" 内に記入します。
次のように書き換えてみました。該当しない場合でもちょっと聞いてくれる?感がでるんじゃないでしょうか。
{
"list": [
{
"speechText": "\\rspd=110\\\\vct=135\\なるほど、なるほど",
"action": {
"actionType": "fallback"
}
},
{
"speechText": "\\rspd=110\\\\vct=135\\うん|うん。",
"action": {
"actionType": "fallback"
}
},
{
"speechText": "\\rspd=110\\\\vct=135\\ですよねー",
"action": {
"actionType": "fallback"
}
}
]
}
ちなみに「AI会話」ボックスで「想定外のユーザ発話」を「対応する」に設定していると、会話リストで選択した標準の会話(この例では「日常会話」)に発話が渡されますので、このDefault Fallback Intentで定義した発話は行われません。試す場合は、「対応しない」に設定し、お仕事を再配信した後でご確認ください。
##Intentのテスト
IntentをDialogflowのコンソール上で確認できます。
Dialogflowのコンソールの左側の「Try it now!」欄に想定するユーザ発話を入力します。
実行すると機械学習によってどのINTENTが実行されたのか、またContextの状態も表示されます。ただ、CustomPayloadの値はここでは確認できません。「DIAGNOSTIC INFO」をクリックすることで、RESPONSEの内容を確認することができます。
#次回について
今回も解説だけで終わってしましました。
次回は、会話でちょっとした遊びをしてみたいと思います。
前の記事:Pepper for Biz3.0のAI会話のカスタマイズ (1)
次の記事(作成中):Pepper for Biz3.0のAI会話のカスタマイズ (3)