У меня есть проект конструктора ботов, использующий диалоговое окно потока форм, который работает нормально, за исключением проблемы с распознаванием ответа на выбор перечисления.
[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
}
Когда я выбираю Ms, Miss или Dr, бот принимает это как допустимый параметр и переходит к следующему приглашению. Однако, когда я выбираю «Мистер или миссис», меня просят выбрать между «Мистер и миссис», и что бы я ни выбрал, результаты «Мистер (или миссис)» не являются заглавными буквами. Что происходит?
Изображение бота с перечислением:
Изображение ответов бота на выбор enum: