3

我的机器人由一个主要的 LuisDialog 和另外两个对话框组成。当我得到某个 LuisIntent 时,我启动其他对话框之一(即示例 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 回答