3

メインの LuisDialog と他の 2 つのダイアログで構成されるボットがあります。特定の LuisIntent を取得すると、他のダイアログの 1 つ (サンプル Echo Bot) を開始し、そのダイアログを終了すると、メインの LuisDialog に問題なく戻ります。

LuisIntent を取得して FormFlow ダイアログである他のダイアログを開始すると、ダイアログは喜んで開始されますが、ユーザーはダイアログを実行する前に何かを入力する必要があります。そのため、ユーザーは「サンドイッチを注文してください」と入力し、ダイアログで最初のメッセージを取得する前に何かを入力する必要があります。

ユーザーが何も入力するのを待たずに、誰が FormFlow を開始するか、または実際に Dialog を開始し、すぐにそれにジャンプするかを知っている人はいますか? サンドイッチ ダイアログを開始するために使用しているコードは次のとおりです。

    internal static IFormDialog<SandwichBot.SandwichOrder> MakeRootDialog()
    {


        return FormDialog.FromForm(SandwichBot.SandwichOrder.BuildForm);
    }

    [LuisIntent("OrderSandwich")]
    public async Task StartSandwichOrder(IDialogContext context, LuisResult result)
    {
        IFormDialog<SandwichBot.SandwichOrder> tmp = MakeRootDialog();
        context.Call(tmp, SandwichOrderComplete);
    }
4

1 に答える 1

3

わかりました。フォームを作成するときに FormOptions を見逃しました。したがって、MakeRootDialog は

        internal static IFormDialog<SandwichBot.SandwichOrder> MakeRootDialog()
    {
        return FormDialog.FromForm(SandwichBot.SandwichOrder.BuildForm,options: FormOptions.PromptInStart);
    }
于 2016-04-15T13:31:29.343 に答える