Azure Bot пропускает разговор, если пользователь вводит определенную строку - PullRequest
0 голосов
/ 17 мая 2018

У меня проблема с моим лазурным ботом.В настоящее время у меня есть два варианта выбора беседы:

public enum Pizza
{
    Hawaiian = 1,
    Pepperoni,
    Cheese
};
public enum Dessert
{
    Sundae = 1,
    Brownie,
    Cookie
};    

Я добавил шаблоны, чтобы они отображались в виде списка в беседе бота:

[Template(TemplateUsage.EnumSelectOne, "Please choose a pizza {||}", ChoiceStyle = ChoiceStyleOptions.Auto)]
public Pizza? PizzaOptions;

[Template(TemplateUsage.EnumSelectOne, "Please choose a dessert {||}", ChoiceStyle = ChoiceStyleOptions.Auto)]
public Dessert? DessertOptions;

Это выглядит так вформа бота:

.Message("Choose your pizza")
.Field(nameof(PizzaOptions))
.Message("Choose a dessert")
.Field(nameof(DessertOptions))

Бот работает, как и ожидалось, задает вопросы, однако я заметил, что если я наберу "десерт", когда бот попросит меня выбрать пиццу, бот решит пропуститьи попросите меня выбрать десерт (бывает и обратное).Есть ли способ отключить этот пропуск?Я не уверен, что является причиной этого.Благодаря.

1 Ответ

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

Я не уверен, что послужило причиной этого.

Bot Framework Formflow имеет возможность для пользователя переключаться на другое поле при его заполнении формы. Вы можете найти его в их документ . Это причина, по которой поток форм пропускает поле десерта, когда пользователь вводит пиццу.

  • Вы можете переключиться на другое поле, введя его имя. (Бутерброд, длина, хлеб, сыр, начинки и соус).

Поэтому, когда вы назвали свое поле PizzaOptions и DessertOptions и пользователь ввел «десерт» для PizzaOptions, Formflow считает, что пользователь хочет пропустить и перейти к полю десерта.

Если вы хотите отключить эту опцию, назовите свое поле так, чтобы пользователь не вводил для Pizza или Dessert, например,

    [Template(TemplateUsage.EnumSelectOne, "Please choose a pizza {||}", ChoiceStyle = ChoiceStyleOptions.Auto)]
    [Describe("Pizza")]
    public Pizza PizOption;

    [Template(TemplateUsage.EnumSelectOne, "Please choose a dessert {||}", ChoiceStyle = ChoiceStyleOptions.Auto)]
    [Describe("Desert")]
    public Dessert? DesOption;

Поскольку вы используете атрибут Describe, имена DesOption и PizOption не будут отображаться для пользователя.

Output

...