поток конструктора ботов с enum - PullRequest
0 голосов
/ 03 мая 2018

У меня есть проект конструктора ботов, использующий диалоговое окно потока форм, который работает нормально, за исключением проблемы с распознаванием ответа на выбор перечисления.

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

Изображение бота с перечислением:

display

Изображение ответов бота на выбор enum:

bot responses to enum selection

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Мне удалось различить мистера и миссис, используя атрибут Terms .

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

Выбор Мистер Selecting Mr

Выбор Миссис Selecting Mrs

0 голосов
/ 03 мая 2018

Это потому, что бот способен анализировать "Mr" в "Mrs", и поэтому он не может выбирать между "Mr" и "Mrs". Поэтому бот просит совета пользователя. После того, как я не знаю, почему он говорит, что это неверный параметр.

Более или менее Microsoft doc:

Как анализировать пользовательский ввод в диалоге формы:

  1. Разрыв в регистрах изменений и подчеркивание (_).
  2. Генерация каждого n-грамма до максимальной длины.
  3. Добавить "s?" до конца каждого слова (для поддержки множественного числа).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...