在Dialogflow中连接实体

问题描述

我正在尝试连接不同的实体类型或实体属性。考虑这种情况:
我有动物清单,还有蔬菜清单
每个动物都吃蔬菜的子集-牛吃蔬菜A,蔬菜B,母鸡吃蔬菜B,蔬菜
一旦Cow处于上下文中,我要捕获的唯一蔬菜实体是veggieA和veggieB。即使提到了veggieC,我也不想因为我的所有跟进意图而抓住这个实体

我该如何实现?
我可以在动物实体类型中添加诸如牛,母鸡等动物的清单吗,在蔬菜实体类型中包含诸如veggieA,veggieB等蔬菜的清单吗
或像每种动物形成不同的实体类型一样-母牛是实体,母鸡是实体
我如何像前面所述连接不同的实体?

解决方法

要考虑的关键点是,实体中的任何值(无论是否定制)都将与以该实体作为参数的特定意图有效匹配。

意思是,如果您有一个void checkArry(char str[],int len){ if(len >= 0){ checkArry(str,len - 1); if(str[len] == 'P') printf("P"); } } 实体和一个animal实体,即使您只以牛为动物训练 Cow-intent 意图,该意图也将是无论您提交哪种动物,都可以匹配。据我所知,您不能在意图内限制有效的实体值。

因此,确保满足您的行为的最简单方法是为每只动物(具有相同蔬菜的一组动物)创建单独的实体。然后为每个动物实体创建特定的意图,后续意图也将分配一个特定的蔬菜实体。意思是,许多特定实体而不是一般实体。您将拥有以下实体:像牛,像鸡,像牛,像蔬菜,...

如果这对于您的特定用例而言似乎不可行,您还可以尝试保留通用实体并在Webhook实现中编写一些条件代码来处理您的特定行为,类似于here中的操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...