ダイアログノードでは、ユーザーインテントが変わったときに、既存のダイアログタスクの中で新しいダイアログタスクを開始することができます。
たとえば、次の3つのダイアログタスクを持つトラベルボットを考えてみましょう。“フライトの空き状況” “フライトの予約” “ホテルの予約”。“フライトの空き状況”ダイアログタスクから“フライトの予約”ダイアログタスクを呼び出すことができます。
主な機能
ダイアログノードの主な機能は以下のとおりです。
- 後のセッションで説明するように、“エンティティの事前割り当て”として、現在のダイアログタスクからターゲットのダイアログタスクにデータを伝送する機能。
- 対象となるダイアログタスクが呼び出された場合、現在のダイアログフローは新しいダイアログタスクのルートインテントから始まります。ダイアログノードに遷移を記入した場合、対象の完了後にフローがソースのダイアログタスクに戻ります。遷移を記入しない場合は、ダイアログタスクは対象となるダイアログタスクを実行した後に終了します。これは、ダイアログフローが関連するユーザーインテントを処理し、その後同じダイアログタスクを続行するオプションのユーザーインテントノードとは異なります。
セットアップ
ダイアログタスクにおけるダイアログノードの設定は、以下のステップで行います。
ノードの追加
- ダイアログタスクを開き、ダイアログノードを追加します。
- 指定された場所にダイアログノードを追加します。ノードの追加手順についてはこちらをご参照ください。
- ダイアログウィンドウは、デフォルトではコンポーネントプロパティタブが選択された状態で表示されます。
ノードの設定
コンポーネントプロパティ
コンポーネントプロパティタブでセットアップまたは編集する設定は、このノードを使用するすべてのダイアログタスクに反映されます。
- コンポーネントプロパティ タブの 一般設定では、以下の変更が可能です。
- 名前 と
- 説明。
接続プロパティ
- 接続タブをクリックして、遷移プロパティを設定し、次に実行するダイアログタスクのノードを決定します。条件文は、ダイアログタスク内の任意のエンティティやコンテキストオブジェクトの値に基づいて記述することも、遷移にインテントを使用することもできます。“遷移プロパティ”を“現在のタスクの終了”と定義している場合は、これらの設定は無視されます。
- 接続ルールセクションにおいて、条件を追加をクリックします。
- 以下のいずれかの基準に基づいて、条件式を設定します。
- エンティティ:ダイアログ内のエンティティノードを特定の値と比較します。
- エンティティを選択します。
- ドロップダウンリストから演算子を選択します。存在する、等しい、等しいより大きい、等しいより小さい、等しくない、より大きい、より小さい。
- 値フィールドに数字を入力します。例:PassengerCount(エンティティ)は5(指定値)より大きい(演算子)。
- コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します。存在する、等しい、等しいより大きい、等しいより小さい、等しくない、より大きい、より小さい。例: Context.entity.PassengerCount (コンテキストオブジェクト)が(演算子)5(指定値)より大きい。
- インテント:次のユーザーの発話に一致するインテントを選択します。
- エンティティ:ダイアログ内のエンティティノードを特定の値と比較します。
- 次へ進むドロップダウンリストで、条件式が成功した場合にダイアログフローで実行する次のノードを選択します。たとえば、PassengerCount(エンティティ)が(演算子)5(指定値)より大きい場合、次へ進むオファー(サブダイアログ)になります。
- その他ドロップダウンリストで、条件が失敗した場合に実行するノードを選択します。
メモ: 複数の If条件を書きたい場合は、最後のIf 条件式の下のその他の条件を追加をクリックします。
インスタンスプロパティ
インスタンスプロパティには、ダイアログのこのインスタンスの設定が含まれます。
- ダイアログウィンドウのインスタンスプロパティタブをクリックします。
- エンティティの事前割り当てセクションにおいて、このセッションまたはノードデータからの値を、ダイアログタスクに必要とされるエンティティに事前割り当てすることができます。残りの必要な値は、サブインテントによって処理されます。(詳しくは以下をご覧ください)値をリセットしたい場合は、キーワード「ゼロ」を使用しなければなりません。プラットフォームはスペースを無視します。
- エンティティの事後割り当てセクションにおいて、カスタム変数を追加するためのオプションで、現在のタスクで利用できるエンティティのリストが表示されます。これらのエンティティは、リンクされたダイアログのセッションデータから値が割り当てられます。たとえば、
context.entities.
は、リンクされたサブダイアログからのエンティティを選択用にリストアップしています。値は、リンクされたダイアログの実行が完了した時点で割り当てられます。メモ:このオプションは、遷移オプションがタスク完了時に現在のノードに戻るように設定されている場合にのみ使用できます。現在、URLエンティティタイプを使用する際には制限があります。http
をhttps
としたり、www
のサフィックスを付けないURL値は作動しません。値をリセットしたい場合は、キーワード「ゼロ」を使用しなければなりません。プラットフォームはスペースを無視します。 - 遷移オプションセクションにおいて、タスク完了時に従うフローを定義できます。以下の2つのオプションから選ぶことができます。
- タスク完了時に現在のノードに戻る。
- 現在のタスクを終了し、このタスクを開始する。
- 高度な管理 をクリックして、以下のリストのオプションを設定します。
- 割り込み動作
- タスクレベルの「割り込み動作」設定を使用します:ボットは、ダイアログタスクレベルで設定された割り込み動作の設定を参照します。
- このノード向けにカスタマイズ:このオプションを選択してその設定を行うことで、このノードの割り込み動作の設定をカスタマイズできます。詳しくは、割り込み処理とコンテキストの切り替えの記事をお読みください。
- カスタムタグは、ボット会話のカスタムプロファイルを構築するためのタグを定義します。詳細はこちらをご覧ください。
- 割り込み動作
エンティティ事前割り当てについて
次の方法で、宛先ダイアログタスクのデータを事前入力できます:
- エンティティキーに値を追加します。
- 必要に応じて、現在のダイアログタスク
Context
オブジェクトから送信先のダイアログタスクにデータを渡すために、追加のカスタムキーと値を追加します。
デフォルトでは、対象となるダイアログタスクで定義されたエンティティノードは、キー/値のペアとして表示されます。その後、セッション変数やコンテキスト変数を使って、関連するエンティティの値を定義したり、必要に応じてカスタムキーや値を追加することができます。ソースダイアログタスクから送信先ダイアログタスクへの遷移は、ユーザー入力がリンクされたダイアログタスクのいずれかに一致したときに、ランタイムに実行されます。複数のダイアログタスクをマッピングするとき、条件付き遷移を使用して、どのダイアログタスクがエンドユーザーに表示されるかを定義することができます。別のダイアログタスクを呼び出す際、最初のダイアログタスクから次のダイアログタスクに情報を伝えたいと思います。たとえば、 フライトの予約ダイアログタスクで収集された顧客情報は、ホテルの予約ダイアログタスクに渡されます。ボットプラットフォームでは、次のJSON構文に示されるように、インテントノードの参照およびソースダイアログタスクのコンテキストを含めているContext
オブジェクトにおいて、mappedIntents
変数を使用することができます。 { 'title': 'title of the link', 'link':' url for the link' ,'postbackpayload': 'system generated payload'}
例:Context
オブジェクト内の GetEmail
へのリンクは次のようになります:
{ "title":"GetEmail", "link":"https://app.collab.ai/wf/1.1/market/users/bots/st-bb1eb3da-cfa7-5244-b241-b5042d333e76/dialogue/dg-15fd2927-219c-5795-b038-5b830718bea7/execute?nodeId=message2&contextId=dcx-f9bae173-4d69-53e4-9aa7-21e89aae776d&intent=GetEmail", "postbackpayload":"MappedDialog_dc-f7b42932-dc06-53ac-92c0-1db706794f91_dg-15fd2927-219c-5795-b038-5b830718bea7_dcx-f9bae173-4d69-53e4-9aa7-21e89aae776d" }
ユーザーへのプロンプトメッセージにおいて、これらの変数にアクセスして提示し、リンクでマッピングされたダイアログタスクのリストを表示したり、あるいは選択肢のリストとして表示することができます。ソースダイアログタスクが Context
オブジェクトを有効に使用していなくても、ソースダイアログコンテキストをターゲットダイアログタスクに渡すことはできます。postbackpayload
キーの値は、ボットプラットフォームで生成され、FacebookおよびSlackなどの一部のチャネルで使用されており、これは、いつ対象となるダイアログタスクのリンクや選択が実行されるかを定義します。詳細は、タスクにおけるセッションおよびコンテキスト変数の使用およびコンテキストオブジェクトをご参照ください。