この Codelab について
1. 始める前に
Dialogflow では、自然言語の入力から有用なデータを識別して抽出するメカニズムとしてエンティティを使用します。エージェントはインテントを使用して、特定のユーザー入力の背後にある動機を認識する一方、ユーザーが言及した特定の情報(住所から製品名、数量と単位に至るまでのあらゆる情報)の取得には、エンティティを使用します。ユーザーのリクエストから取得する必要のある重要なデータには、対応するエンティティを用意することになります。
次のリストでは、3 種類のエンティティについて説明します。
- Dialogflow に付属しているシステム エンティティを使用すると、追加の構成を行わずに、エージェントで幅広いコンセプトに関する情報を抽出できます。たとえば、システム エンティティを使用して、自然言語の入力から日付、時刻、場所を抽出できます。
- デベロッパー エンティティ(ユーザーが定義)は、システム エンティティでカバーされないコンセプトに関する情報を抽出します。たとえば、ブランドでその固有のプロダクト名のセットを認識するためのデベロッパー エンティティを作成できます。
- セッション エンティティも定義しますが、これは特定の会話にのみ適用されます。たとえば、特定のユーザーが予約を行うときに選択できる、時間的制約のあるオプションを表すセッション エンティティを作成できます。
前提条件
続行する前に、次の Codelab を完了する必要があります。
また、Dialogflow の基本コンセプトと構成についても理解する必要があります。これについては、Dialogflow でチャットボットを構築するのパスにある次の動画をご覧ください。
学習内容
- Dialogflow でシステム エンティティを作成して使用する方法
- Dialogflow でデベロッパー エンティティを作成して使用する方法
- エージェントをテストする方法
作成するアプリの概要
- すでに構築されている Dialogflow エージェントの拡張バージョン
- Dialogflow のデベロッパー エンティティ
- Dialogflow のシステム エンティティ
必要なもの
- Dialogflow コンソールにログインするためのウェブブラウザとメールアドレス
2. Dialogflow でシステム エンティティを有効にして使用する方法
- Dialogflow コンソールに移動します。
- 以前に作成した AppointmentScheduler エージェントを選択します。
- [Intents] をクリックします。
- [Schedule Appointments] をクリックして、インテントの設定を開きます。
「明日の午後 4 時に予定を設定して」などのトレーニング フレーズでは、日付と時刻が @sys.date と @sys.time として自動的に抽出されます。Dialogflow がシステム エンティティを自動的に抽出する様子を確認するために、トレーニング フレーズを自由に追加してください。
ご覧のとおり、システム エンティティを使用すると、追加の構成を行わずに、エージェントで幅広いコンセプトに関する情報を抽出できます。住所、メールアドレス、通貨、電話番号などのデータは、システム エンティティの一般的な例です。詳細については、システム エンティティをご覧ください。
3. Dialogflow でデベロッパー エンティティを有効にして使用する方法
デベロッパー エンティティを作成する
これまでは、予約スケジューラに一般的な方法で対応してきました。ここで、スケジューラが州の自動車運転免許試験場のもので、主に運転免許証と登録サービスを提供しているとします。これらのエンティティを作成します。
- [Entities] をクリックします。
- [Create Entity] をクリックします。
- [エンティティ名] に「AppointmentType」と入力し、次の図に示すように、「Vehicle registration」と「Driver license」の 2 つの参照値といくつかの同義語を追加します。[保存] をクリックします。
エンティティ タイプとしてサービスを追加して、行を追加できます。
- [保存] をクリックします。
新しく作成されたデベロッパー エンティティに対応するようにインテントを編集する
- [インテント] をクリックします。
- 「明日の午後 3 時に運転免許証の予約を設定して」と入力します。
デベロッパー エンティティとシステム エンティティとして、運転免許証、午後 3 時、明日が自動的に認識されます。
- 次のトレーニング フレーズを入力します。
- 月曜日のライセンス更新の予約
- 月曜日の午後 2 時にライセンスの予定を設定して
- 月曜日の車両登録の予約
- 時間や日付と同様に、AppointmentType を必須フィールドにする必要があります。これを行うには、[アクションとパラメータ] に移動し、[AppointmentType] 行のチェックボックスをオンにします。
- 「どのようなサービスをご希望ですか?」などのプロンプトを追加します。DMV は運転免許証と車両登録のサービスを提供しています。」ユーザーが予約タイプを指定しない場合は、プロンプトが使用されます。
- [保存] をクリックします。
4. チャットボットをテストする
チャットボットは Actions シミュレータでテストできます。また、以前に学習したウェブまたは Google Home の統合を使用することもできます。
テストケース 1
この場合、ユーザーは 3 つの情報なしで予約の設定のみをリクエストしているため、Dialogflow は設定したスロット入力プロンプトを使用して、日付、時間、予約の種類を尋ねます。
- ユーザー: 「予定を設定して。」
- Chatbot: 「いつですか?」
- ユーザー: 「5 月 23 日。」
- Chatbot: 「何時にご来店されますか?」
- ユーザー: 「午前 10 時」
- Chatbot: "What services are you looking to get? DMV は運転免許証と車両登録のサービスを提供しています。」
- ユーザー: 「ライセンス。」
- Chatbot: 「2019 年 5 月 23 日午前 10 時 0 分に車両登録の予約が完了しました。またね!」
テストケース 2
この場合、ユーザーは部分的な情報で予約を設定しようとしているため、Dialogflow は設定したスロット入力プロンプトを使用して、日付、時間、予約の種類を尋ねます。
- ユーザー: 「明日の午後 4 時に予約が必要です。」
- Chatbot: "What services are you looking to get? DMV は運転免許証と車両登録のサービスを提供しています。」
- ユーザー: 「ライセンス。」
- Chatbot: 「2019 年 4 月 24 日午後 4 時 0 分に運転免許証の予約が完了しました。またね!」
テストケース 3
この場合、お客様がすべての情報を提供します。Dialogflow は情報を処理し、予約確認のレスポンスを返します。
- ユーザー: 「明日の午後 2 時に車両登録の予約をして。」
- Chatbot: 「2019 年 4 月 24 日午後 2 時 0 分に車両登録の予約が完了しました。またね!」
5. クリーンアップ
他の Dialogflow Codelab を完了する予定がある場合は、このセクションをスキップして後で戻ってください。
Dialogflow エージェントを削除する
- 既存のエージェントの横にある
をクリックします。
- [全般] タブで一番下までスクロールし、[Delete This Agent] をクリックします。
- ダイアログに「削除」と入力し、[削除] をクリックします。
6. 完了
デベロッパー エンティティを使用してカスタム入力を処理する chatbot を構築しました。これで chatbot の開発が可能になりました。
その他の情報
詳細については、以下のリソースをご覧ください。