MS Bot Framework中的表单对话框忽略所有枚举中的第一项

2 c# enums botframework

我正在使用MS bot框架并构建一个对话框表单.对于用户可用的选项,我使用枚举和此代码来构建表单:

        return new FormBuilder<InsuranceDialogForm>()
            .Message("Sure, I will need to ask you a couple of questions first.")
            .Build();
Run Code Online (Sandbox Code Playgroud)

我的枚举看起来像这样:

public class InsuranceDialogForm
{
    //[Prompt("Are you our customer?")]
    //Disabled prompt because otherwise choice buttons won't appear
    public IsCurrentCustomer IsCurrentCustomer;

    //[Prompt("Which type of insurance do you need?")]
    public InsuranceType InsuranceType;

    //[Prompt("Which country are you travelling to?")]
    public string TravelDestination;

    //[Prompt("Please select one:")]
    public InsurancePackage InsurancePackage;
}

public enum IsCurrentCustomer
{
    Yes, No
}

public enum InsuranceType
{
    Travel, Vehicle, Life
}

public enum InsurancePackage
{
    Basic, Standard, Executive
}

public enum WhoIsTravelling
{
    Me, Family
}
Run Code Online (Sandbox Code Playgroud)

问题是机器人忽略了每个枚举的第一个选项.它不能在机器人输出的按钮中进行选择,如果你手动输入它,它会说"....不是一个选项".所以我必须使用这样的解决方法:

public enum IsCurrentCustomer
{
    IGNORE, Yes, No
}
Run Code Online (Sandbox Code Playgroud)

与此同时,微软的例子没有这个问题.我能做错什么?

Kie*_*Chu 8

枚举中的0值保留给未知值.您可以提供明确的一个或从1开始枚举.

来自他们的示例代码(https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/PizzaBot/Pizza.cs)

您可以将枚举的第一个值明确设置为1,或者在枚举中包含未知值(您正在做什么).

// 1
public enum IsCurrentCustomer
{
    IGNORE, Yes, No
}

// 2

public enum IsCurrentCustomer
{
    Yes = 1, No
}
Run Code Online (Sandbox Code Playgroud)