我的天蓝色机器人有问题。目前,我有两种不同的会话选择选项:
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))
机器人按预期问问题,但是我注意到如果我输入"甜点"当机器人要我选择比萨饼时,机器人决定跳过去让我选择一个甜点(反过来也会发生)。有没有办法禁用这个跳过? 我不确定导致这种情况发生的原因。感谢。
答案 0 :(得分:1)
我不确定是什么导致这种情况发生。
Bot Framework Formflow有一个选项,供用户在填写表单时切换到另一个字段。您可以在doc中找到它。这就是为什么当用户进入披萨时,表格流正在跳过甜点领域。
- 您可以输入其名称切换到其他字段。 (三明治,长度,面包,奶酪,浇头和酱汁)。
因此,当您将您的字段命名为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。