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