ダイアログノードは、ユーザーインテントが変わった場合に、既存のダイアログタスクの中から新しいダイアログタスクを開始させることができます。
たとえば、以下の3つのダイアログタスクを持つ旅行ボットを考えてみましょう。フライトの利用可能状況、フライトの予約、ホテルの予約です。フライトの利用可能状況 ダイアログタスクから フライトの予約 ダイアログタスクを呼び出すことができます。
ダイアログノードの主な機能:
- 後のセクションで説明するエンティティの事前割り当てとして、現在のダイアログタスクからターゲットダイアログタスクにデータを送る機能。
- ターゲットダイアログタスクが呼び出されると、現在のダイアログフローは新しいダイアログタスクのルートインテントから開始されます。ダイアログノードに移行を書く場合、ターゲットを完了した後、フローは元のダイアログタスクに戻ります。移行図を書かない場合は、ターゲットダイアログタスクを実行した後にダイアログタスクは終了します。これは、オプションのユーザーインテントノードとは異なり、ダイアログフローは関連するユーザーインテントを処理し、その後も同じダイアログタスクで継続します。
ダイアログノードの設定
新しいダイアログタスクを呼び出すためにダイアログノードを設定するには、以下の手順に従います。
ステップ1:ダイアログタスクにダイアログノードを追加する
- ダイアログノードを追加したいダイアログタスクを開きます。
- 追加したいノードの隣にカーソルを合わせて、[+ ]アイコンをクリックします。
- ダイアログタスクに移動し、利用可能なリストからダイアログタスクを選択します(他のノードのようにダイアログ内から新しいダイアログタスクを作成することはできないことにご注意ください)。
- コンポーネントプロパティのパネルが開きます。
ステップ2:コンポーネント、トランジション、NLPプロパティを定義する
- 名前や説明のような一般的なコンポーネントプロパティを変更します。
- 接続タブから移行プロパティを設定して、ダイアログテキストのどのノードを次に実行するかを決定します。条件文は、ダイアログタスク内のエンティティやコンテキストオブジェクトの値に基づいて記述することもできますし、移行にインテントを使用することもできます。移行プロパティを「現在のタスクの終了」と定義している場合、これらの設定は無視されます。
- 接続タブを選択します。
- IFを追加をクリックします。
- 次のいずれかの基準に基づいて条件式を設定します。
- エンティティ:ダイアログ内のエンティティノードと特定の値を比較します:
- エンティティを選択します。
- ドロップダウンリストを使用して演算子を選択します。 存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。
- 値ボックスに数値を入力します。例:PassengerCount(エンティティ)が5(指定された値)より大きい(演算子)
- コンテキスト:これらの演算子のいずれかを使用して、ダイアログ内のコンテキストオブジェクトを特定の値と比較します:存在する、等しい、より大きいか等しい、より小さいか等しい、等しくない、より大きい、より小さい。例:Context.entity.PassengerCount (エンティティ)が5(指定された値)より大きい(演算子)
- インテント:次のユーザー 発言に一致するインテントを選択します。
- エンティティ:ダイアログ内のエンティティノードと特定の値を比較します:
- Then go toドロップダウンリストから、条件式が成功した場合にダイアログフローで実行する次のノードを選択します。たとえば、PassengerCount(エンティティ)が5(指定された値)よりも大きい(演算子)場合、次はOffers(サブダイアログ) へ移動します。
- Elseのドロップダウンリストから、条件失敗の場合に実行するノードを選択します。
注意: 複数のIF条件を書きたい場合は、最後のIF条件式の下にあるElse IFを追加するをクリックしてください。
- NLPプロパティタブから
ステップ3:インスタンスプロパティを定義する
インスタンスプロパティには、ダイアログのこのインスタンスの設定が含まれます。
- ダイアログノードのインスタンスプロパティアイコンをクリックします。
- これらのオプションを設定するには、高度なコントロールをクリックします。
- 保留と再開
- タスクレベル『保留し再開』設定を使用する:ボットは設定を保留し再開するによりダイアログタスクレベルを設置します。
- このノードオプションのカスタマイズ:このオプションを選択して同じように設定することで、このノードの保留と再開設定をカスタマイズできます。詳細情報は中断処理とコンテキスト変換の記事を参照してください。
- カスタムタグでは、ボットの会話のカスタムプロファイルを構築するためのタグを定義します。詳細情報はこちらをご確認ください。
- 保留と再開
- エンティティの事前割り当ては、このセッションやノードデータの値をダイアログタスクが必要とするエンティティに事前に割り当てるために使用できます。残りの必要な値は、サブエンティティによって処理されます。(詳細は下記を参照してください。)
- 移行オプションは、タスクが完了した後に従うべきフローを定義します。2つのオプションから選択可能です。
- タスク完了時に現在のノードに戻る
- 現在のタスクを終了し、このタスクを開始する
- エンティティの事後割り当ては、カスタム変数を追加するオプションとともに現在のタスクで利用可能なエンティティのリストを表示します。これらのエンティティは、リンクされたダイアログのセッションデータからの値で割り当てることができます。たとえば、
context.entities.
は、選択用にリンクされたサブダイアログのエンティティをリストアップします。値は、リンクされたダイアログの実行が完了すると割り当てられます。
注意:このオプションは、タスク完了時に現在のノードに戻るように移行オプションが設定されている場合にのみ使用できます。この機能は、プラットフォームのver 7.1で導入されました。
現在のところ、URLのエンティティタイプを使用する際には制限があります。https
とは対照的にhttp
から始まるURLの値やwww
のサフィックスを持たないURLの値は動作しません。
エンティティの事前割当について
以下の方法で、宛先ダイアログタスクのデータを事前に入力することができます。
- エンティティキーに値を追加します。
- 必要に応じて、現在のダイアログタスク
Context
オブジェクトから出力先のダイアログタスクにデータを渡すためのカスタムキーと値を追加します。
デフォルトでは、ターゲットダイアログタスクで定義されたエンティティノードは、キーと値のペアとして表示されます。その後、関連するエンティティの値を定義したり、セッション変数やコンテキスト変数を使用して必要に応じてカスタムキーや値を追加したりすることができます。
元のダイアログタスクから移行先ダイアログタスクへの移行は、ユーザーの入力がリンクされたダイアログタスクのいずれかと一致したときに実行時に発生します。複数のダイアログタスクをマッピングする必要がある場合、条件付き移行を使用して、どのダイアログタスクをエンドユーザーに表示するかを定義することができます。
別のダイアログタスクを呼び出す際に、最初のダイアログタスクの情報を次のダイアログタスクに渡す場合があります。たとえば、フライトの予約ダイアログタスクで収集した顧客情報をホテルの予約ダイアログタスクに渡すことができます。
ボットプラットフォームでは、次のJSON構文に示すように、コンテキスト
オブジェクトのmappedIntents
変数を使用することで、インテントノードの参照およびソースダイアログタスクのコンテキストの保持が可能になります。
{ 'title': 'title of the link', 'link':' url for the link' ,'postbackpayload': 'system generated payload'}
たとえば、コンテキスト
オブジェクト内の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"" }
リンクでマップされたダイアログタスクのリストを表示したり、選択肢のリストとして表示したりするために、これらの変数にアクセスしてユーザへのプロンプトメッセージ内で提示することができます。コンテキスト
オブジェクトを使えば、ソースダイアログタスクがアクティブでなくなっても、ソースダイアログのコンテキストをターゲットダイアログタスクに渡すことができます。
postbackpayload
キーの値はボットプラットフォームによって生成され、FacebookやSlackなどの一部のチャンネルで使用することができます。
詳細については、タスクでのセッション変数とコンテキスト変数の使用およびコンテキストオブジェクトを参照してください。