0

我有一个使用表单流对话框的机器人构建器项目,它工作正常,除了识别对枚举选择的响应的问题。

[Serializable]
public class ContactBot
{
    [Template(TemplateUsage.EnumSelectOne,"How do you like to be addressed - {||}", "Please select a title to address you by - {||}")]
    public TitleBot? Title { get; set; }

    [Prompt("What's your first name?", FieldCase = CaseNormalization.InitialUpper)]
    public String FirstName { get; set; }

    [Prompt("and your last name?", FieldCase = CaseNormalization.InitialUpper)]
    public String LastName { get; set; }

    [Prompt("I'll need your email address to confirm the appraisal")]
    [Pattern(RegexConstants.Email)]
    public String Email { get; set; }

    [Prompt("and a phone number, preferably a mobile, to contact you to arrange an appointment")]
    [Pattern(RegexConstants.Phone)]
    public String Phone { get; set; }

    public static IForm<ContactBot> BuildContactForm()
    {
        return new FormBuilder<ContactBot>()
            .Message("Firstly, can you give me some detail about yourself?")
            .Field(nameof(Title))
            .Field(nameof(FirstName))
            .Field(nameof(LastName))
            .Field(nameof(Email))
            .Field(nameof(Phone))
            .Confirm("You have provided the following: \r\r Name: {Title} {FirstName} {LastName} \r\r Email: {Email} \r\r Phone: {Phone} \r\r Is this correct? ")
            .Build();
    }

和枚举

public enum TitleBot
{
    Mr,
    Mrs,
    Ms,
    Miss,
    Dr
}

当我选择女士、小姐或博士时,机器人会将此视为有效选项并移至下一个提示。但是,当我选择 Mr 或 Mrs 时,我被要求在 Mr 和 Mrs 之间进行选择,而我选择的任何结果都会导致 Mr(或 Mrs)不是标题选项 - 发生了什么?

显示枚举的机器人图像:

展示

机器人对枚举选择的响应图像:

机器人对枚举选择的响应

4

2 回答 2

1

这是因为机器人能够解析“Mrs”中的“Mr”,因此无法在“Mr”和“Mrs”之间进行选择。所以这个机器人正在征求用户的意见。在我不知道为什么它说它是一个无效选项之后。

或多或少 Microsoft doc:

机器人如何在表单对话框中解析用户输入:

  1. 中断大小写更改并下划线 (_)。
  2. 生成最大长度的每个 n-gram。
  3. 添加“s?” 到每个单词的末尾(以支持复数形式)。
于 2018-05-03T14:01:07.977 回答
0

我能够使用Terms 属性区分 Mr 和 Mrs 。

public enum TitleBot
{
    [Terms("Mr")]
    Mr=1,
    [Terms("Mrs")]
    Mrs,
    Ms,
    Miss,
    Dr
}

选择先生 选择先生

选择夫人 选择夫人

于 2018-05-04T06:08:28.010 回答