C# 将LUIS与FormFlow集成

C# 将LUIS与FormFlow集成,c#,botframework,azure-language-understanding,formflow,C#,Botframework,Azure Language Understanding,Formflow,我创建了一个机器人,里面有一个FormFlow。现在,如果您键入“我想发布产品”,LUIS将告诉您必须进入哪个对话框: internal static IDialog<AssesmentHelper> CreateProduct() { return Chain.From(() => FormDialog.FromForm(AssesmentHelper.BuildForm))

我创建了一个机器人,里面有一个FormFlow。现在,如果您键入“我想发布产品”,LUIS将告诉您必须进入哪个对话框:

    internal static IDialog<AssesmentHelper> CreateProduct()
            {
                return Chain.From(() => FormDialog.FromForm(AssesmentHelper.BuildForm))
                    .Do(async (context, profileForm) =>
                    {
                        try
                        {
                            var completed = await profileForm;

                        }
                        catch (FormCanceledException<AssesmentHelper> e)
                        {
                            string reply;
                            if (e.InnerException == null)
                            {
                                reply = $"You quit on {e.Last}--maybe you can finish next time!";
                            }
                            else
                            {
                                reply = Responses.ShortCircuit;
                            }
                            await context.PostAsync(reply);
                        }
                    });
            }

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
        { 
stLuis = await LuisHelper.ParseUserInput(activity.Text);
    switch (stLuis.topScoringIntent.intent)
    {

         case "CreateProduct":
              await Conversation.SendAsync(activity, CreateProduct);
              break;

         case "EditProduct":
               await Conversation.SendAsync(activity, EditProduct);
               break;

           case "None":

               break;

            default:
               break;
    }
}
我一进入这个对话框,它就要求我选择程序的编号。现在如果我选择1,2。路易斯将其作为无意图返回。因此,执行“无”情况

我想要的是,将控件重定向到同一个对话框。我也有类似的编辑产品对话框。这就是为什么我不能训练我的luis应用程序将数字理解为产品意图。否则,每当我为“编辑产品”选择“编号”时,它将转到不同的情况


早些时候,它以某种方式识别正确的意图,但今天我重新发布了我的luis应用程序,它停止了识别。

luis无法推断数字的意图,但在“无”处理过程中,您可以解析
活动。Text
以查看消息是否是数字,如果是,则相应地处理它。如果其他对话框也有数字作为输入,该怎么办,然后如何决定使用哪个对话。这就是对话状态的目的:你需要知道你问了什么,这样你才能正确地处理答案。你能发布CreateDialog的代码吗?或者提示用户输入数字的对话框?更新了@EzequielJadib上面的代码
 public static IForm<AssesmentHelper> BuildForm()
        {
            return new FormBuilder<AssesmentHelper>()
                    .Message(Responses.NumberSelection)
                    .Field(nameof(Program))
                    .Field(nameof(Product))
                    .Build();
        }
[Serializable]
    public enum Program
    {
        None = 0,
        A = 1,
     };

        [Serializable]
        public enum Product
        {
            None = 0,
            Azure = 1,
            Windows = 2
        };