如何在Dialogflow中设置复杂的“ IsList”参数

时间:2019-09-09 13:59:56

标签: dialogflow

我正在查看此链接:

Actions and parameters | Dialogflow Documentation | Google Cloud

在解释“列表参数”的地方,使用以下示例:

  
      
  • “我要苹果”
  •   
  • “我想要苹果和橙子”
  •   
  • “我想要苹果,橙子和香蕉”
  •   

然后我想知道是否可以设置“列表参数”来处理类似这样的事情:

  

“我要7个苹果,8个橙子和12个香蕉”

因此,您将拥有一种键-值对列表。

伪代码:

List<KeyValuePair<string, int>> fruitList = new List<KeyValuePair<string, int>>();

KeyValuePair<string, int> applesItem = new KeyValuePair<string, int>("apples", 7);
KeyValuePair<string, int> orangesItem = new KeyValuePair<string, int>("oranges", 8);
KeyValuePair<string, int> bananasItem = new KeyValuePair<string, int>("bananas", 12);

fruitList.Add(applesItem);
fruitList.Add(orangesItem);
fruitList.Add(bananasItem);

因此,在dialogflow中,$FruitList参数类似于上面的“键-值对”列表fruitList

然后,数字部分应与@sys.cardinal实体匹配。并且水果部分应该与其中包含一堆水果的自定义实体@Fruits相匹配。

伪代码:List<KeyValuePair<@sys.cardinal, @Fruits>>

如何在Dialogflow中创建一个“意图”来做到这一点? 有可能吗?

帮助/建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

我不确定是否可以让dialogflow返回键值对对象,但是使用复合实体,您可以创建一个由数量(数字)和水果(水果实体)组成的实体。您可以调用此复合实体订单,并在意图中的参数中列出该列表。输入

“我要7个苹果,8个橙子和12个香蕉”

您应该获得包含3个订购实体的列表(7个苹果,8个橙子,12个香蕉)

https://cloud.google.com/dialogflow/docs/entities-developer#developer_composite