グループノードを利用したインテントのスコーピング
文脈的に関連するサブインテントを追加することは、会話型ボットを構築する上で重要な要素の1つです。文脈的に関連するインテントは、ダイアログフローの中で異なるパスを利用して、過去に提供されたエンティティ値を修正するなど、さまざまな目的で必要となります。 コンテクスト切り替えの管理方法では、より自然で人間らしいボットとの対話を実現するために、コンテクストデータの割り込み処理と組み合わせて使用する方法を見てきました。 この機能の主な目的は、任意の2つのインテント間の割り込み動作を定義することです。 この機能を使用して、カスタムフルフィルメント動作を持つコンテクストに関連するインテントの動作を定義することは困難です。 コンテクストNLUを簡素化する目的で、グループノードの機能が強化され、インテントのスコープ、トレーニング、フルフィルメントの設定が可能になりました。詳細はこちらをご覧ください。 この手引きでは、余談、入力値の修正、文脈に沿ったフォローアップの質問等を含むフライト予約ボットのシナリオを探ります。グループノードを使用して、これらすべてを簡単かつ一か所から実現していきます。 問題点 航空券を予約する過程で、ユーザーが 目的地や日程を変更する場合、 予約を確定する前に、フライト予約タスクに含まれていない気象情報を確認したい場合 予約に関して質問がある場合 タスクをキャンセルする場合 前提条件 この手引きでは、以下のダイアログタスクを使用するフライト詳細ボットを使用します。 フライト予約ダイアログ 出発地、目的地、日程、オンラインチェックインのオプションの入力をユーザーに促す 予約確認メッセージを表示する(わかりやすくするため、実際に予約を行うためのサービスコールは追加していません) ユーザーがさらにサポートを必要としているかどうかを確認する 会話を終了する 天気予報ダイアログ 天気予報を知りたい場所をユーザに尋ねる 天気予報のメッセージを表示する(わかりやすくするため、実際の天気予報を検索するサービスコールは追加していません) 実装 エンティティの変更 ここでは、ユーザーが目的地や日程を変更する場合を想定します。以下は、そのための手順です。 ステップ1: サブインテントのスコーピングのため、ノードをグループ化します。 最初のステップは、目的地と日程の変更を引き起こすサブインテントのスコープを定義することです。 ユーザーは、会話中にいつでも目的地や日程を変更できる必要がありますが、実際は予約の前に変更されなければならないため、範囲はエンティティノードになります。マウスを使って、グループノードを形成するエンティティを選択します。 グループに名前を付けます。たとえば、旅行の詳細グループとします ステップ2a: サブインテントを定義し、目的地と日程の変更に対する動作をトレーニングしてプロパティを設定する 次に、サブインテントを定義し、トレーニングを追加し、オプションとして、サブインテントが特定されるべき条件と、その場合のボットの動作を設定する必要があります。 まず、目的地と日程の変更を可能にする場合を考えてみましょう。 エンティティグループウィンドウからインテントの追加ボタンをクリックします 日程と目的地の変更を許可するインテントを作成します インテントの名前を「変更日および変更先」のように入力します 説明を入力します 「トレーニング」の「機械学習」オプションを使用して、このインテントを特定できるようユーザーの発話でトレーニングしてみましょう 「別の日付と目的地を試してみましょう」というように、発話を追加します 「気が変わったから、もう一度やり直そう」というように、オプションで別の発話を追加します この発話のサブインテントをトレーニングします。 目的地と日程をリセットする 「フルフィルメント」の「コンテクストの変数を設定する」オプションで、以下のキー/値ペアを使用して、目的地の都市と日程をリセットします。 キー 値 context.entities.To null context.entities.When null…