当用户提交字段名称作为值时,FormFlow禁用字段之间的切换

时间:2018-07-02 12:18:28

标签: c# botframework formflow

我们正在机器人中使用FormFlow。 FormFlow具有允许用户键入字段名称并切换到给定字段的功能。假设我们有一个这样的模型类

    public class SampleModelClass
    {
        public string FirstField { get; set; }
        public string SecondField { get; set; }
    }

当要求用户输入FirstField时,用户实际上可以键入“ first field”,这导致再次询问FirstField问题。有什么方法可以禁用此功能,并将“第一字段”作为FirstField的值吗?重命名FirstField可以,但是我们正在寻找更好的解决方案

1 个答案:

答案 0 :(得分:1)

  

当要求用户输入FirstField时,用户实际上可以键入“ first field”,这导致再次询问FirstField问题。有什么方法可以禁用此功能,并将“第一字段”作为FirstField的值吗?重命名FirstField可以,但是我们正在寻找更好的解决方案

您可以尝试使用Terms attribute(带有正则表达式)来定义用于将用户输入与字段或字段中的值进行匹配的术语列表,以下示例供您参考

[Serializable]
public class SampleModelClass
{
    [Terms(@"^[.*]$")]
    public string FirstField { get; set; }

    [Terms(@"^[.*]$")]
    public string SecondField { get; set; }

    public static IForm<SampleModelClass> BuildForm()
    {
        return new FormBuilder<SampleModelClass>()
                .Message(async (state) => { return new PromptAttribute($"Welcome to the form bot!"); })
                .Build();


    }
}

测试结果:

enter image description here