请帮助我解决Dialogflow代理的问题!
我定义了一个名为“ProgrammingLanguages”的实体,并为其分配了两个具有共同同义词的不同参考值,如下所示:
Android - Mobile OS, Mobile Development, GoogleiOS - Mobile OS, Mobile Development, Apple
我已经定义了一个意图,其中包含一个名为“ProgrammingLanguages”的参数,并选择了“是”的isList选项
现在当我问我的代理“给我展示移动操作系统的列表”时,它总是只返回“Android”!当我更改实体内部值的顺序后,它开始显示“iOS”,这意味着它总是采用第一个值,并且没有显示所有具有相似同义词的该特定实体的值!
有人能帮我理解这种行为吗?
谢谢,
回答:
这样做是不会正确工作的。你不能为不同的实体值设置相同的同义词。如果你使用相同的同义词,那就意味着这两个实体是相同的。
isList 用于捕获参数的多个值,例如,如果我在收集汽车品牌名称,我的实体将是car_brands,用户可以提供单个值或多个值,如Ferrari、Benz、Bugati、BMW或仅Suzuki。
如果你问你的代理“展示移动操作系统的列表”,那意味着它应该返回Android和iOS。实体不是用来返回响应值的。它们是用来捕获你希望机器人/代理返回值的类别的。
在你的情况下,
- 创建一个实体,并将所有上述同义词归入一个,例如“mobileOS”。
- 当用户使用这些同义词时,mobileOS将被捕获为参数。
- 使用它来决定并返回所有移动操作系统。
你不需要启用isList,因为你不是在从用户那里收集一系列值。