Formflow Bot与枚举答案位置与答案文本混淆

时间:2018-06-27 08:27:51

标签: botframework

我有一个Formflow对话框,其中将以下问题定义为枚举

public enum PreviousOwnerOptions
{
    [Describe("Owned from new")]
    [Terms("0", "new", ".*[O|o]wned from new")]
    OwnedFromNew = 0,

    [Terms("1", "One")]
    One,

    [Terms("2", "Two")]
    Two,

    [Terms("3", "Three")]
    Three,

    [Terms("4", "Four")]
    Four,

    [Terms("5", "Five")]
    Five,

    [Terms("6", "Six")]
    Six,

    [Describe("More than six")]
    [Terms(".*More than six", "more")]
    MoreThanSix
}

问题在此向用户显示...

enter image description here

我的问题是,如果您输入数字“ 3”作为答案,那么答案就是这个……

enter image description here

机器人似乎不确定我是在位置3回答还是“三”回答。我以为Terms属性可以解决这个问题?

请问该如何解决?

1 个答案:

答案 0 :(得分:11)

这是由于两件事的结合而发生的。

首先,您尝试在似乎是不可为空的字段上使用0枚举值。在这种情况下,将0值保留为null。来自formflow docs page

  

任何数据类型都可以为空,您可以使用它来建模该字段没有值。如果表单字段基于不可为空的枚举属性,则枚举中的值0表示空(即,表示该字段没有值),并且您应将枚举值从1开始。FormFlow会忽略所有其他属性类型和方法。

第二个原因是,由于默认情况下,您将在[Terms("1", "One")]之类的“条款”属性中使用1,2,3等数值,因此formflow会尝试将这些值与正确的枚举对齐。因此,我认为正在发生的事情是让您选择示例中使用的“ 3”,并且由于3是您的术语[Terms("3", "Three")]之一,它为您提供了这些选择。但在由于保留了0而在零索引枚举值中,[Terms("2", "Two")] Two,的实际枚举值为3。所以它不知道您的意思。

因此,为了使这些功能能够使用以下术语,它是这样的:

    public enum PreviousOwnerOptions
    {
        [Terms("1", "One")]
        One=1,

        [Terms("2", "Two")]
        Two,

        [Terms("3", "Three")]
        Three,

        [Terms("4", "Four")]
        Four,

        [Terms("5", "Five")]
        Five,

        [Terms("6", "Six")]
        Six,

        [Describe("More than six")]
        [Terms(".*More than six", "more")]
        MoreThanSix,

        [Describe("Owned from new")]
        [Terms("new", ".*[O|o]wned from new")]
        OwnedFromNew
    }