2017-06-02 9 views
1

私は、Microsoft Bot Framework、LUISおよびLUISActionBindingでボットを開発しています。 BuyXFindAFINDB:私のLUISアプリで LuisActionDialogのコンテキストを渡して別のコンテキストにジャンプする方法

は、私は3人の主な意図を持っています。このボットの主な目的は、ユーザーがXを購入するのを手助けすることですが、最初にいくつかのフィルターを使用してAまたはBを検索したい場合や、Xを直接購入する場合があります。

各インテントごとにアクションを設定します必要なフィールドとオプションのフィールドで、すべてがうまく動作し、私の意図ハンドラが返すオブジェクトを受け取ることができます。

FindAハンドラでは、ユーザーがAを1つ選択するのを手助けし、FindBハンドラではBを選択するのに役立ちます。BuyXでは、AとBの情報が必要です。しかし、ユーザーがFindAまたはFindBダイアログを行った場合、私はそこにあるものを再利用したい。

私の質問は、コードがですでに私はFindAアクション+意図から取得することができたものに基づいて割り当てられたいくつかのプロパティを私BuyXActionクラスに到達するように、私は、意図FindAから意図BuyXを誘発することができる方法です。

この方法では、ユーザーはXを購入したいと言っても何も入力しなくても、FindAダイアログですでにやったことを繰り返すことはありません。

ありがとうございます。

答えて

1

私はSubActionsのコンセプトがここに役立つと信じています。どのように動作し、いくつかのコードのハイライトについては、documentation topicをご覧ください。

トリガ以前のコンテキスト(すなわち 最初から)と文脈アクション

ユーザが(なし現在のコンテキストで)文脈アクション をトリガーする入力を提供することができます。フレームワークは、 によってコンテキストチェーンをインスタンス化する方法(つまり、 の親アクションの連鎖によってコンテキスト全体が提供される)を提供することでこのシナリオをサポートし、最後に要求を実行します。

+0

この概念は、私がActionBindingを使用する理由の1つでした。私の考えは、BuyX_ChangeY、BuyX_ChangeZなどのBuyXのサブアクションを作成することでした。しかし、それらのYとZは必ずしも私のAとBである必要はありません。FindAとFindBをBaseLuisContextualActionのに拡張する必要がありますか? –

+0

はい、私はそれを試みます。 –

+0

私のFindActionsでは、私はサービスからデータを取得し、ユーザー入力に基づいてフィルタリングし、オブジェクトのリストを対応するインテントハンドラに返します。そこでは、リストを使用して、カードをユーザーに表示して、より多くの情報を入手するか、または選択するオプションを表示します。このアプローチでは、FindA/BインテントハンドラのすべてのコードをBuyXインテントハンドラに移動する必要がありますか? –

関連する問題