我有一个包含不同参数的dialogflow意图。虽然参数名称是唯一的,但在某些情况下,值存储在错误的参数中,而不是存储在自己的参数中。
图片1.png显示了我的意图及其用户所说的"正如你在2.png中看到的,我为每个变量名称都有一个VarName用户定义的实体。现在3.png我通过编写"将贷款期限改为20"来尝试对话流程。但正如你在4.png中看到的那样,而不是将20英镑放入"贷款期限"参数,对话流放置"贷款期限"价值在"年 - 平均 - 本金"这句话是错误的参数。
我希望我能说清楚。 提前谢谢,
答案 0 :(得分:2)
问题在于,您有两个示例短语,从Dialogflow的角度来看,它们完全匹配相同类型的输入。通过将一个短语的一部分分配给参数,您基本上可以说该短语的这一部分可以被与参数的实体类型匹配的任何内容替换。
所以短语"将年份变为平均委托人为5"可以认为匹配Change @VarName to @sys.number
之类的东西。但短语"将贷款期限改为30"也匹配。
您有多种解决方案,具体取决于您如何完成并处理这些数字。
解决方案1:使用不同的意图
不是创建一个允许您更改所有可能变量的Intent,而是创建多个Intent,以人们表达方式捕获短语,并绑定后端以专门处理每个意图。所以你可能有一个看起来像这样的Intent
和另一个看起来像这样的意图
在您的履行中,您需要检查触发了哪个操作以确定要调整的值,然后检查参数以查看如何调整 - 如果设置了数字,您将使用该数字,否则你可以按百分比调整它。如果您想进行相对调整,可以为其他短语添加其他值。
解决方案2:使用通用值参数
与解决方案1类似,不是在要调整的属性之后命名每个值参数,而是只有一些通用值(百分比值,数字等)加上参数来确定属性(您的VarName
参数和实体类型)。
Intent更容易指定,但在后端,您需要确定用户是否指定了对该属性没有意义的值参数(例如用户指定的属性)更改术语的百分比)并生成错误。它可能看起来像这样:
解决方案3:合并两个
当然,您可以使用您想要的任何参数名称。默认情况下,它会在类型后面命名参数,因为它很好且通用。因此,您可以使用Action来确定要设置的内容,然后使用通用名称来确定如何设置或调整它。
那些可能看起来像这样: