ノードのグループ化は、主として、ノードのグループを定義し、それをダイアログキャンバスで表現するために使用されます。それはダイアログフローの一部ではないことにご注意ください。グループノードは、フォローアップ、余談、エンティティ値の修正など、ユーザー体験を向上させるために使用することができます。ユースケースについてはこちらをご参照ください。
追加
ダイアログタスクにグループノードを追加するには、以下のステップで行います:
- グループノードを追加したいダイアログタスクを開きます。
- ノードをグループ化。ノードグループ化のステップについてはこちらをご参照ください。
- グループの名前変更、設定、または削除を行うことができます。
- ひとたび作成すると、特定のノードをグループに追加したり、グループから削除したりすることはできません。
- 追加したノードは、グループ外にも追加されます。
- 削除したノードは、ダイアログ全体からも削除されます。
- グループを削除しても、グループ内のノードはダイアログから削除されません。
ノードの設定
グループノードの機能には、以下が含まれています:
- インテントのスコーピング – ユーザーがグループ内のいずれかのノードで待機しているときに使用できるようにするサブインテントを定義する機能;
- サブインテントトレーニング – サブインテントをトレーニングする機能;
- サブインテントのプロパティ – サブインテントの動作を定義する機能。
インテントスコープを実現するためのステップバイステップの使用例については、 こちらをご参照ください。
インテントのスコーピング
グループノードを使用すると、ユーザーの発話から特定されること、およびユーザーがグループ内のいずれかのノードにいる間に実行されることができるサブインテントをスコープすることができます。
- インテントをスコープに入れたいグループをポイントし、設定(歯車)アイコンをクリックします。
- 「グループノード」ウィンドウから インテントの追加を選択し、このグループのスコープに含めるインテントを追加します。
- 「インテントの追加」ウィンドウから、このグループノードのサブインテントとしてスコープされるインテントを選択します。これは、会話がこのグループ内のいずれかのノードにあるときに、ユーザーが求める可能性のあるインテントです。例として、目的地のエンティティを聞かれたときにXYZ市の天気はどうですかと尋ねたり、あるいは旅行日を聞かれたときにフライト時間 を尋ねたりします。
- インテントの作成ボタンを使用すると、サブインテントを新しく追加する選択ができます。
- 追加されたインテントは、トレーニング、動作プロパティの設定、削除が可能です。
インテントのトレーニング
ひとたび追加すると、各サブインテントは、このグループ内での認識のためにトレーニングすることができます。これにより、サブインテントがグループのコンテキストの中で識別されることになります。
- グループ設定のページから、トレーニングしたいサブインテントを選択します。
- 以下の方法で、サブインテントをトレーニングすることができます。
- 機械学習 – このサブインテントを識別する必要のあるユーザーの発話を追加します。さらに、NERの手法を用いて、発話中のエンティティに注釈をつけることもできます。
- パターン – このサブインテントに関連するユーザーの発話のパターンを識別します。
- ルール – このインテントをトリガーするためのインテント識別ルールを定義します。
- また、 インテントの事前条件を設定することもできます。つまり、インテント検出時に、定義された事前条件のいずれかがコンテキスト内で利用できる場合にのみ、サブインテントが識別されることになります。これらの事前条件は、インスタンスレベルとみなされ、コンポーネントレベルの事前条件よりも優先されます。
インテントのプロパティ
フルフィルメントセクションは、ユーザー入力からこの特定のサブインテントが識別されたときのアクションを定義するために使用できます。これには、以下のプロパティが含まれています。
- コンテキスト変数 – このサブインテントが識別されたときに更新されるセッションまたはコンテキスト変数を定義するためのキーと値のペアを設定します。値をリセットしたい場合は、キーワード「ゼロ」を使用しなければなりません。プラットフォームはスペースを無視します。
- メッセージ – オプションで、このサブインテントが識別されたときにユーザーに表示されるメッセージを定義します。他の応答と同様に、プレーンテキストとしてのメッセージおよびJavaScript形式を定義することができ、該当する場合、音声通話プロパティを指定して設定することができます。
- コンテキスト出力 – このインテントが識別されたときに設定されるコンテキストタグを定義します。インテント名は、常にシステムによって出力コンテキストとして設定されます。値をリセットしたい場合は、キーワード「ゼロ」を使用しなければなりません。プラットフォームはスペースを無視します。
- 遷移フロー – このオプションを使用して、このサブインテントを実行した後にダイアログが再開する方法を定義します。定義できる2つの動作
- ノードへジャンプ – ダイアログはここで選択されたノードから再開します。
- ダイアログの再開 – ダイアログはこのインテントが識別されたノードから再開します。
導入
以下は、グループ内のサブインテント動作における変更です
- サブインテントが識別されるごとに、コンテキストオブジェクトは、識別されたサブインテントの詳細のあるオブジェクトの配列で更新され、最新のものがトップに表示されます。以下の情報がキャプチャされています。
- サブインテントの名前;
- サブインテントとともに識別されるエンティティ;
- 該当する場合、サブインテントが所属するグループの名前;
- サブインテントが識別されるノードの名前。
"identifiedSubIntents": [ { "intent": "Change Destination", "entities": { "destcity": "Delhi" }, "groupName": "Entity Group", "identifiedAt": "to_date" }, { "intent": "Weather Report", "groupName": "Entity Group", "identifiedAt": "destcity" } ]
- ユーザーの発話から識別されたサブインテントがグループスコープ内にあり、すべての入力事前条件が満たされ、遷移フローが当該ノードに向かう場合、インテントが実行されます。
- サブインテントの実行には、以下が含まれます。
- 定義済みマッピングによるコンテキスト変数の更新
- 定義済みマッピングのとおりに出力コンテキストを設定
- ユーザーへのメッセージの提示(該当する場合)
- 現在のダイアログの実行は、定義された遷移フローに従って継続されるべきです。
- 指定されたノードにジャンプします; また
- サブインテントが識別された時点から再開します。