如果用户键入特定字符串,Azure bot会跳过对话

时间:2018-05-17 12:37:03

标签: c# azure botframework bots

我的天蓝色机器人有问题。目前,我有两种不同的会话选择选项:

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 :(得分: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。

Output