C#Bot框架:如何在表单流对话框中设置字段可选

时间:2016-07-29 07:34:15

标签: c# botframework

我正在尝试构建一个具有表单流对话框的机器人。我必须在表单构建器中创建一个字段Optional。我通过在class属性中给出[Optional]注释来完成。但它不起作用。通过Form继续提示该字段。我怎么能控制它?

form = new FormBuilder<myClass>()
                    .Message("Welcome")
                    .Field(nameof(xxx))
                    .Field(nameof(yyy),//make this field optional, if value is there then validate. But should not prompt if no value.                        
                        validate: async (state, value) =>
                        {
                        }

我的班级

[Serializable]
public class myClass
{
    [Prompt("I didnt get you")]       
    public string xxx{ get; set; }

    [Optional]       
    public string yyy{ get; set; }

}

2 个答案:

答案 0 :(得分:0)

尝试

[Optional] 
public string yyy{ get; set; }

答案 1 :(得分:0)

在官方文档中,自定义属性[可选]仅用于可为空的枚举属性...在这种情况下,它显示标记为“无首选项”的最后一个选项。

对于字符串,默认提示符将显示您的问题,后跟“(当前选择:无首选项),表示它已填充默认值”No Preference“,但用户仍需要回答问题。

如果您需要根据特定规则跳过问题,可以实现活动属性,如下例所示:

  public static IForm<YourStateClass> Build()
  {
     return new FormBuilder<SandwichOrder>()
     .Field(nameof(PropertyName), active: (state) => { 
          // here goes your code that need to return a boolean where true will show the field and false will skip 
      })
     .Build();
  }