如何将参数附加到Dialogflow中先前上下文的现有参数列表?

时间:2018-06-13 10:05:53

标签: dialogflow

我正在构建一个聊天机器人,一次一个地询问用户症状。

有一个单独的实体@symptom,这是一个列表。我想弄清楚如何从现有的上下文中将每个新症状附加到症状参数列表中。

例如,

Bot:请输入您的第一个症状。

用户:咳嗽

a < b ? b : a

Bot:请输入您的第二个症状。

发烧:发烧

symptoms = ['cough']

Bot:请输入您的第三个症状。

用户:无气愤

symptoms = ['cough', 'fever']

我如何建立这样的流程?

(注意我知道我只能有一个意图,要求用户在一行中输入所有症状,但我更愿意逐一询问症状,以便在插入症状之前确保数据清理进入清单)

1 个答案:

答案 0 :(得分:1)

这个too更多的是一个设计问题:)你可以粗略地实现你所描述的后续意图和上下文,但更好的方法是更明确地将意图和参数匹配与任何匹配进一步的后端处理。

如果您尚未将symptom实体定义为Developer mapping entity,则应该这样做。这使您可以选择将任意数量的同义词映射到一个参考值:

reference value: fever
synonyms: fever, feverishness, high temperature, febricity, febrility

用户现在可以输入任何同义词,您将始终获得参考值作为参数(如果参数是列表,则列出这些值的列表)。参考值甚至不必是普通单词,它可以是任何唯一标识符(例如来自症状数据库的主键)。只有当它本身包含在同义词列表中时才匹配。

此结构将确保您始终从明确定义的值集中获取参数,即使实际用户输入具有更大的可变性。对这些参数的任何进一步处理都应该是后端代码的一部分,而不是与Dialogflow代理绑定。理想情况下,您会将参考值视为用户输入和后端业务逻辑之间的API。