4

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

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

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

4

1 回答 1

1

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

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

[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();


    }
}

测试结果:

在此处输入图像描述

于 2018-07-03T06:54:14.053 回答