首页 > 解决方案 > 如何从 Dialogflow 中的先前上下文将参数附加到现有参数列表?

问题描述

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

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

例如,

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

用户:咳嗽

symptoms = ['cough']

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

发烧:发烧

symptoms = ['cough', 'fever']

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

用户:气喘吁吁

symptoms = ['cough', 'fever']

我该如何建立这样的流程?

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

标签: dialogflow-es

解决方案


更像是一个设计问题:) 您可以通过后续意图和上下文大致实现您所描述的内容,但更好的方法是将意图和参数匹配与任何类型的进一步后端处理更清楚地分开。

如果您还没有,您应该将您的symptom实体定义为Developer 映射实体。这使您可以选择将任意数量的同义词映射到一个参考值:

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

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

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


推荐阅读