Botframework Formflow没有将LUIS builtin.number绑定到int或int?领域

时间:2017-03-10 18:08:16

标签: c# botframework luis

我遇到一个问题,即使邮件中有实体,表单流仍会提示我输入票号。 我在这里将TicketNumber声明为int。 我也试过将TicketNumber声明为int?

我尝试了变量2,其中传递了数字。但即便如此,当我提示时,它会要求我显示12345作为当前选择的票号。 我们在下面观察中看到的空分是否有问题? 我有其他更大的形式有多个字符串字段,它工作正常。

变化1:

var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters(), this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities);

变化2:

var ticketNumber = 12345;
var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters { TicketNumber = ticketNumber}, this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities);

public class TicketStatusParameters
    {
       [Prompt("Please enter a ticket number {||}")]
       [Describe("Ticket Number")]
       [Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")]
       public int TicketNumber { get; set; }
   }

2 个答案:

答案 0 :(得分:1)

自动绑定不适用于Prebuilt实体,因为FormFlow使用EntityRecommendation.Type值在Form模型中查找具有相同名称的字段。您需要使用变体#2。

enter image description here

关于变体#2中描述的问题,我认为问题是你的提示具有{||}模式元素,这对于不可枚举的字段没有意义。

尝试仅使用[Prompt("Please enter a ticket number")]

答案 1 :(得分:0)

我有一个具有可空字段的测试代码,并且当该字段作为跳过该字段的状态的一部分传入时。除非你传递FormOptions.PromptFieldsWithValues,否则我不知道你是如何得到这种行为的。你把班级改成了这个,对吧?

public class TicketStatusParameters
    {
       [Prompt("Please enter a ticket number {||}")]
       [Describe("Ticket Number")]
       [Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")]
       public int? TicketNumber { get; set; }
   }