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



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

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

例如

机器人:请输入您的第一个症状。

用户:咳嗽

symptoms = ['cough']

机器人:请输入您的第二个症状。

发烧:发烧

symptoms = ['cough', 'fever']

机器人:请输入您的第三个症状。

用户:呼吸困难

symptoms = ['cough', 'fever']

如何构建这样的流程?

(注我知道我可以简单地有一个意图,要求用户在一行中键入所有症状,但我更愿意一个接一个地询问症状,这样我就可以确保在将症状插入列表之前进行数据清理(

这也更像是一个设计问题:( 你可以粗略地实现你描述的后续意图和上下文,但更好的方法是更清楚地将意图和参数匹配与任何类型的进一步后端处理分开。

如果尚未定义,则应将symptom实体定义为开发人员映射实体。这为您提供了将任意数量的同义词映射到一个参考值的选项:

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

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

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

最新更新