带有枚举的机器人生成器表单流
bot builder form flow with enum
我有一个使用表单流对话框的机器人构建器项目,除了识别对枚举的 selection 的响应时出现问题外,它工作正常。
[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
}
当我 select 女士、小姐或博士时,机器人将此作为有效选项接受并移至下一个提示。但是,当我 select 先生或夫人时,我被要求在先生和夫人之间做出选择,无论我选择什么,都会导致先生(或夫人)不是标题选项 - 发生了什么?
显示枚举的机器人图像:
机器人响应枚举的图像 selection:
这是因为机器人能够解析 "Mrs" 中的 "Mr" 而无法解析 "Mr" 和 "Mrs" 之间的 select。因此,该机器人正在征求用户建议。之后不知道为什么说是invalid option
更多或更少的微软文档:
机器人如何解析表单对话框中的用户输入:
- 区分大小写和下划线 (_)。
- 生成最大长度的每个 n-gram。
- 在每个单词的末尾添加 "s?"(以支持复数形式)。
我能够使用 Terms 属性 来区分 Mr 和 Mrs。
public enum TitleBot
{
[Terms("Mr")]
Mr=1,
[Terms("Mrs")]
Mrs,
Ms,
Miss,
Dr
}
选择先生
选择夫人
我有一个使用表单流对话框的机器人构建器项目,除了识别对枚举的 selection 的响应时出现问题外,它工作正常。
[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
}
当我 select 女士、小姐或博士时,机器人将此作为有效选项接受并移至下一个提示。但是,当我 select 先生或夫人时,我被要求在先生和夫人之间做出选择,无论我选择什么,都会导致先生(或夫人)不是标题选项 - 发生了什么?
显示枚举的机器人图像:
机器人响应枚举的图像 selection:
这是因为机器人能够解析 "Mrs" 中的 "Mr" 而无法解析 "Mr" 和 "Mrs" 之间的 select。因此,该机器人正在征求用户建议。之后不知道为什么说是invalid option
更多或更少的微软文档:
机器人如何解析表单对话框中的用户输入:
- 区分大小写和下划线 (_)。
- 生成最大长度的每个 n-gram。
- 在每个单词的末尾添加 "s?"(以支持复数形式)。
我能够使用 Terms 属性 来区分 Mr 和 Mrs。
public enum TitleBot
{
[Terms("Mr")]
Mr=1,
[Terms("Mrs")]
Mrs,
Ms,
Miss,
Dr
}
选择先生
选择夫人