人間の会話は、インテントとエンティティを切り替えたり、頻繁に複数のものを組合わせたりといったような、動的なものです。
Kore.ai ボット プラットフォームは、タスク レベルで定義できるサブ インテントを提供します。コンテキストを手動で管理することなく、ダイアログを最も簡単に形成できる方法です。これにより、会話をプライマリ インテントの一部として関連するインテントにシームレスに分けて、そのコンテキスト内に限定して動作させることができます。出力コンテキストが親インテントに追加され、同名の入力コンテキストが新たに生成された子インテントに追加されます。そのため、子インテントは会話の以前の部分で親インテントが一致している場合にのみ一致します。
フォローアップ インテントは、会話中のユーザーの発話やインテントにすぐに対応できない場合に便利なものです。様々なタスクの実行中に発生するものの今まで対応されることのなかった、このようなインテントにアクセスすることができます。これらは FollowupIntents 配列に格納されます。そしてダイアログ フローの最後で、特定されたフォローアップ インテントのリストから選択してタスクを実行するよう、ユーザーに求めるかどうかを選択できます。このリストにアクセスしてダイアログ フローをさらにトレーニングし、改良することもできます。
サブ インテント
サブ インテントの定義には 3 通りの方法があります。
- インテント ノードをダイアログ タスク内に追加 – このインテントはダイアログ内にあり、さらにコンテキスト内にあるため他のダイアログでは利用できません。(詳細…)
- 既存のダイアログ タスクを使用 – このインテントは、複数のダイアログで使用することができます。ダイアログをサブ インテントに限定したダイアログとして定義することができます。ユーザーの発話では呼び出されず、ユーザーがヘルプを呼び出す際に表示されるタスクのリストにも表示されません。(詳細…)
- リンクされたタスクとして – 上記の 2 つのオプションは、サブ インテントがダイアログ フローの一部である場合に使用することができます。サブ インテントをユーザーがダイアログ内のどこからでも呼び出せる場合は、サブ インテント管理および例外オプションを使用します。
リンクされたタスクの例外
特定タスク間の切り替えを行う際に例外が容易になるよう、ダイアログ タスクでリンクしたタスクの例外を使用することができます。あるダイアログ タスクを別のものとリンクさせる場合、カスタマイズされた [一時停止と再開] プロパティを定義してその特定タスクに遷移することができます。さらに、一時停止と再開の規則が一定の条件を満たした場合にのみ有効になるよう、1 つ以上の条件式をエンティティ値またはコンテキストを使って書くこともできます。
例外定義の一環として、エンティティのプリアサイメントおよびポストアサインメントを定義することもできます。
- プリアサイメントを使用して、次のインテントに事前入力しておく必要がある現在のコンテキストのパラメータをマッピングすることができます。現在のコンテキスト値をリンクされたタスクに存在するエンティティに渡したり、カスタム値を現在のコンテキスト値に定義したりできます。
- ポストアサイメントを使用して、リンクされたタスクのコンテキスト値をリンクされたタスクが呼び出されたメイン タスクにマッピングすることができます。リンクされたコンテキスト値をメイン タスクに存在するエンティティに渡したり、リンクされたタスク コンテキスト値に渡すカスタム変数を定義したりできます。
注意: ポストアサイメントはメイン タスクが再開される場合にのみ適用できます。
例外の追加
特定タスクに例外を遷移させるには、次のステップを実行します。
- カスタマイズするダイアログ タスクを開きます。
- ダイアログ ビルダーの右側上端部にある [詳細オプション] アイコンをクリックして、[割り込み動作の管理] を選択します。
- 割り込み動作管理ページの [サブインテントまたは例外を追加] リンクをクリックします。
- サブインテントまたは例外を追加ページの [タスク] ドロップダウン リストからリンクするタスクを選択します。複数のタスクを選択することができます。
- 次のオプション リストで一時停止と再開設定を定義し、[保存] をクリックします。
- 選択されたタスクが例外リストに掲載された状態で、割り込み動作管理ページが表示されます。
オプションとして、遷移が実施されるべき条件式の追加や選択されたタスクのパラメータをマッピングすることもできます。
条件式の追加
条件式を追加するには、次のステップを実行します。
- 例外に記載されているタスク名をクリックします。
- 割り込み前提条件で、[If 条件を追加] をクリックします。
- 条件を定義する [エンティティ] または [コンテキスト] オプションを選択します。
- 選択に応じてエンティティを選択するか、コンテキストを入力します。
- オプションのリストから [コネクタ] を選択します: 存在する、等しい、以上、以下、等しくない、より大きい、またはより小さい。
- [値] 列で、比較値を入力します。
- さらに条件を追加する場合は、[If 条件を追加] をクリックして、ステップ 1 から 6 を繰り返します。条件はいくつでも追加することができます。複数の条件が書き込まれている場合、全ての特定条件が満たされなければ一時停止と再開設定は有効になりません。
重要:
- 例外を使用する場合、異なる前提条件を定義することで同じ対象となるタスクにソース タスクを複数リンク付けることができます。その場合にはプラットフォームが例外を定義された順序で実行します。
- 前提条件がどれも例外と一致しない場合、プラットフォームはフォローアップ インテント配列にインテントを追加します。
- プラットフォームはユーザー インテントに遭遇した場合にのみ前提条件を評価し、それを実行するかどうかを判断します。開発者がリンクされたタスクを遷移により開始した場合、またはエンド ユーザーがタスクをダイアログの終わりに実行することを選択した場合には、プラットフォームは評価しません。
パラメータのマッピング
エンティティ プリアサイメントを追加するには、例外の条件式を入力した後に次のステップを実行します。
- 例外タスク ウィンドウの [パラメータ マッピング] セクションの[エンティティ プリアサイメント] リストには、一時停止タスクで必要となるエンティティが一覧表示されています。
- 直接値またはコンテキスト リファレンスを、値を渡すエンティティの横に入力します。
- 変数により値を渡す場合、[キー/値を追加] をクリックして変数名に値を入力します。
エンティティ ポストアサイメントを追加するには、例外の条件式を入力した後に以下のステップを実行します。
- 例外タスク ウィンドウの [エンティティ ポストアサイメント] セクションには、現在のタスクにあるエンティティのリストが一覧表示されています。
- 直接値またはコンテキスト リファレンスを、値を渡すエンティティの横に入力します。
- 変数により値を渡すには、[キー/値を追加] をクリックして変数名に値を入力します。
注意: ポストアサイメントはメイン タスクが再開される場合に限り適用できます。
フォローアップ インテント
フォローアップ インテントは別のタスクの実行中にユーザーの会話で発生するインテントで、ボットが対応していないものを指します。ダイアログ タスク実行の一環として、ボットは全ての対応されていない割り込みをキャプチャして、それらを FollowupIntents 配列でボットがアクセスできるようにします。
しかし、タスク フローに適用するノード、タスクまたはボット レベルのいずれかで [一時停止と再開しない] オプションが選択されている場合、ボットはフォローアップ インテントをキャプチャしません。
ダイアログの終わりにフォローアップ タスクを全て提示することで、実行する項目をユーザーが選択できるようにダイアログ タスクを有効化することができます。そのためには次のステップを実行します。
- 設定をカスタマイズするダイアログ タスクを開きます。
- ダイアログ ビルダーの右側上端部にある [詳細オプション] アイコンをクリックして、[ダイアログ設定] をクリックします。
- [フォローアップ タスク] セクションに次のオプションが表示されます。
- はい、ユーザーにはこのダイアログの終わりに「フォローアップ タスク」リストのタスクを一つ選択して実行するかを確認します: ダイアログの終わりにユーザーに対応していないインテントを全て表示するには、このオプションを選択します。ユーザーに送信するメッセージをカスタマイズして送信するには、オプションの横にある [マネージャー応答] をクリックします。
- いいえ、「フォローアップ タスク」リストはノード接続の一部として扱います: これがデフォルトのオプションです。このオプションが有効になっている場合、ボットはダイアログの終わりにユーザーにフォローアップ インテントを表示しません。しかし、開発者は FollowupIntents 配列よりアクセスすることができます。