C#Bot框架:如何在表单流对话框中设置可选字段
本文关键字:对话框 设置 字段 表单 框架 C#Bot | 更新日期: 2023-09-27 17:59:20
我正在尝试构建一个包含表单流对话框的bot。我必须在表单生成器中为Optional
创建一个字段。我在class属性中给出了[Optional]
注释。但它不起作用。By 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; }
}
尝试
[Optional]
public string yyy{ get; set; }
在官方文档中,自定义属性[可选]仅用于可为null的枚举属性。。。在这种情况下,它显示最后一个标记为"无偏好"的选项。
对于字符串,默认提示将显示您的问题,然后是"(当前选择:无偏好),显示它已填充默认值"无偏好",但用户仍需要回答该问题。
如果你需要根据特定规则跳过这个问题,你可以实现下面例子中的活动属性:
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();
}