将LUIS与FormFlow集成

我创建了一个机器人,里面有一个FormFlow。 现在,如果您键入我想要启动产品,LUIS将告诉它必须转到哪个对话框:

internal static IDialog CreateProduct() { return Chain.From(() => FormDialog.FromForm(AssesmentHelper.BuildForm)) .Do(async (context, profileForm) => { try { var completed = await profileForm; } catch (FormCanceledException 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 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. azure
  2. 视窗

现在如果我回复1,2。 Luis将其作为无意图返回,因此我的消息不会转到相应的对话框。 总是去无案例。

对话框的代码是:

  public static IForm BuildForm() { return new FormBuilder() .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 }; 

一进入此对话框,它就会要求我选择编号来选择程序。 现在,如果我选择1,2。 Luis将其作为无意图返回。 因此,案例“无”,被执行。

我想要的是,将控件重定向到相同的对话框。 我也有类似的编辑产品对话框。 这就是为什么我无法训练我的luis app将数字理解为Product Intent。 否则,每当我选择编辑产品的编号时,它将转到不同的情况。

之前它以某种方式确定了正确的意图,但今天我重新发布了我的luis应用程序并且它停止了识别。