Formflow机器人与枚举答案位置与答案文本混淆

Jas*_*ans 3 botframework

我有一个表单流对话框,其中包含以下问题定义为枚举

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
}
Run Code Online (Sandbox Code Playgroud)

以下是用户对问题的看法......

在此输入图像描述

我遇到的问题是,如果输入数字"3"作为答案,那么响应是这样的......

在此输入图像描述

看起来机器人不确定我的意思是在第3位或答案"三".我认为这个Terms属性可以解决这个问题吗?

我该如何解决这个问题?

Zer*_*yth 11

这是因为两件事的结合.

首先,您尝试在看似不可为空的字段上使用0 Enum值.在这种情况下,0值保留为null.从formflow文档页面:

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

第二部分是因为您在"条款"属性中使用了1,2,3等数值[Terms("1", "One")] ,因此默认情况下,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
    }
Run Code Online (Sandbox Code Playgroud)