Dialogflow では、新しく作成されたエージェントに Default Welcome Intent と Default Fallback Intent の 2 つのデフォルトのインテントが用意されています。エージェントを作成する最初のステップは、新しいインテントを作成し、そのインテントをエージェントの目的や人物に合わせてカスタマイズすることです。
始める前に
このチュートリアルを試す前に、クイックスタートに記載されている Dialogflow の基本について理解しておく必要があります。
エージェントを作成する
Dialogflow ES コンソールを使用して、「MarysBikeShop」という名前のエージェントを作成します。その方法がわからない場合は、クイックスタートを再確認してください。
Default Welcome Intent をカスタマイズする
Google の会話デザインのおすすめの方法に従って、Default Welcome Intent のレスポンスをカスタマイズすることから始めましょう。ベスト プラクティスによれば、挨拶文では 3 つの主要な目標(お客様を歓迎し、今後の流れを伝え、制御を任せる)を達成することを推奨しています。
これに基づいて、次のエージェントの挨拶文を作成します。
Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?
Default Welcome Intent レスポンスを更新する手順は次のとおりです。
- [Default Welcome Intent] をクリックします。
- [Responses] セクションに移動します。
- [Text response] テーブルで、デフォルトのレスポンスをすべて削除します。
次のレスポンスをコピーして、[Text response] テーブルに貼り付けます。
Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?
[SAVE] をクリックします。
Dialogflow コンソールで、シミュレータを使用して更新した挨拶文をテストします。
図 2.発話とレスポンスがうまく呼応している Welcome Intent を示すフローチャート。
レスポンスのバリエーションを作成する
新しい挨拶文を作成した後、他のバリエーションを作成する必要があります。Default Welcome Intent に、レスポンスとして次のバリエーションを含めます。
Welcome. I can tell you the shop hours, or I can make an appointment. What can I do for you?
Hello there. I can tell you the shop hours, or I can schedule an appointment. How may I help you today?
インテントに対して複数のレスポンスを用意すると、Dialogflow はリストからレスポンス バリエーションをランダムに選択します。ただし、フルフィルメント コードの記述を始めてからのほうがインテントに複雑なロジックを取り入れられるので、レスポンスのバリエーションをより洗練された方法で処理することができます。Dialogflow のフルフィルメント コンポーネントについては、後のセクションで説明します。
レスポンスのバリエーションでは、挨拶のフレーズが「Which would you like?」や「What can I do for you?」などの質問で終わっています。この時点で、エージェントはユーザーからの発話を期待しており、その発話からユーザーがエージェントに望む事柄が明らかになるはずです。次のセクションでは、お客様の要望を識別して解決できるエージェントの最初のカスタム インテントを作成します。
カスタム インテントを作成する
バイクショップのエージェントが 2 つのタスクを実行できるようにします。
- お客様に営業時間を知らせる
- お客様の予約をスケジュールする
まず、バイクショップの営業時間をお客様に知らせるためのインテントを作成しましょう。このインテントのサンプル対話を作成することから始めましょう。
お客様: When are you open?
エージェント: We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?
この対話を処理できるインテントを作成する手順は次のとおりです。
Hours
という名前が付いた新しいインテントを作成します。- Hours インテントの [Training phrases] セクションに、
When are you open?
というトレーニング フレーズを入力します。 - [Responses] セクションで、[Text response] テーブルに
We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?
というレスポンスを入力します。 [SAVE] をクリックします。
図 3.デフォルトの Welcome インテントと新しいカスタム インテント Hours を示すフローチャート。
基本的なインテントができました。お客様が「When are you open?」と尋ねると、Dialogflow は、お客様の発話をカスタム インテント Hours と一致させます。そして、インテントは、「We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?」と応答します。
トレーニング フレーズを追加する
Hours インテントに含まれるトレーニング フレーズが「When are you open?」の 1 つしかないため、インテントには同じ意味を持つその他の発話を識別するための知識がなお不十分です。エージェントが同じ意図を表すさまざまなお客様の発話を識別できるように、より多くのトレーニング フレーズを提供する必要があります。
自然言語では、ほとんどの場合、同じ意味を表すさまざまな表現があります。インテントは、その複雑さに応じて、少なくとも 10~20 のトレーニング フレーズから始めることをおすすめします。エージェントのテストを開始するときは、Dialogflow のトレーニング ツールを使用して、さらにトレーニング フレーズを追加します。
「When are you open?」という表現には、次の 10 種類のバリエーションを用意します。
Are you open today?
How late are you open on weekends?
When do you close?
What time do you open tomorrow morning?
Are you open now?
Business hours.
How early can I drop in?
Tell me your opening hours.
What are your hours?
How late can I come in?
これらのバリエーションをトレーニング フレーズとして追加する手順は次のとおりです。
- Hours インテントをクリックします。
- 上の各フレーズをコピーして、[Training phrases] セクションに貼り付けます。
- [Save] をクリックします。
Dialogflow コンソールのシミュレータを使用して、さまざまなお客様の発話でインテントをテストします。
お客様に挨拶した後、お客様の固有の要望を識別して解決するエージェントを用意できました。しかし、エージェントがお客様の発言を理解できない場合はどうなるでしょうか。
次のセクションでは、「フォールバック インテント」という一致しない発話を処理する特殊なインテントについて説明します。
フォールバック インテントをカスタマイズする
フォールバック インテントは、他のインテントと一致しないお客様の発話が一致する特殊なインテントです。Default Welcome Intent と同様、すべてのエージェントには Default Fallback Intent という汎用的なフォールバック インテントが含まれています。
フォールバック インテントでは、エージェントが理解できる形式で発話するようお客様に促すことができます。Default Fallback Intent のレスポンスを更新する手順は次のとおりです。
- [Default Fallback Intent] をクリックします。
- [Responses] セクションに移動します。
- [Text response] テーブルで、デフォルトのレスポンスをすべて削除します。
次のレスポンスをコピーして、[Text response] テーブルに貼り付けます。
Sorry, did you want to hear our hours, or set up an appointment?
[SAVE] をクリックします。
図 4.左上隅にフォールバック インテントを示すフローチャート。
フォールバック レスポンスによる質問「Did you want to hear our hours, or set up an appointment?」により、エージェントが理解しやすい発話をお客様に促すことができます。エージェントは、「I want to know the hours」または「I want to set up an appointment」のいずれかの発話をお客様に期待しています。
この時点で、エージェントには「I'd like to set up an appointment」という発話を処理できるインテントがありません。次のセクションでは、予約のリクエストを解決する高度なインテントを作成します。