我配置了一个意图,用户可以在其中询问重置密码。我的机器人成功地发现用户正在询问密码重置并正确响应。该机器人为用户提供有关如何重置密码的帮助,然后询问他们是否要记录支持票。当他们键入话语“创建票证”时,会触发第二个意图。
第二个意图要求用户提供他们的电子邮件地址、客户 ID 和工单描述。
一切正常,直到用户输入描述并且机器人调用有关密码重置的第一个意图并再次为用户提供重置密码的帮助。
当用户键入描述作为第二个意图中问题的一部分时,有没有办法防止触发第一个意图?
我配置了一个意图,用户可以在其中询问重置密码。我的机器人成功地发现用户正在询问密码重置并正确响应。该机器人为用户提供有关如何重置密码的帮助,然后询问他们是否要记录支持票。当他们键入话语“创建票证”时,会触发第二个意图。
第二个意图要求用户提供他们的电子邮件地址、客户 ID 和工单描述。
一切正常,直到用户输入描述并且机器人调用有关密码重置的第一个意图并再次为用户提供重置密码的帮助。
当用户键入描述作为第二个意图中问题的一部分时,有没有办法防止触发第一个意图?
不幸的是,没有办法强制 Lex 忽略意图表达,但 Lex 足够聪明,可以在检查意图级别之前尝试在插槽级别进行识别。
我也有一些类似的情况,其中插槽引出也是意图表达,但我发现如果这些slotType
值包括那些可能的意图表达,那么 Lex 在检查意图匹配之前会很好地检查和填充插槽.
因此,考虑到这一点,我会考虑以下几个选项:
A.根据前一个或触发意图的短语
自动填充开头。然后询问他们是否想在 elicit 中添加它。这样,他们就不需要重复触发意图的短语。我会写这样的引出提示:description
IntentName
description
在这张票的描述中,我已经写了“重置密码”。您还想在描述中添加什么?
即使要求他们完成句子也可能效果很好:
请完成这句话以添加为这张票的描述,“我正在重置我的密码,因为......”
B.
将所有意图话语添加为description
的slotType
值之一。这样,Lex 将在检查它们是否与意图表达匹配之前将描述中使用的单词识别为填充槽。
C.
我会考虑限制描述,甚至从多个插槽构建描述。例如,也许每个描述都应该包括(1)原因,(2)优先级/重要性级别等。因此为“原因”和“优先级”建立一个槽,并特别引出那些:
您重置密码的原因是什么?
你给这张票的优先级是多少?
然后在 Lambda 中将这些(以及任何其他)放在一起进行描述。