如何将 Amazon Connect 限制为多个意图中的一组特定 Lex 意图?

How to restrict Amazon Connect to a specific set of Lex intents out of multiple intents?

我是 AWS 的新手,遇到 Amazon Connect 和 Lex 的问题。 我的 Lex 机器人中有 11 个意图。在“获取客户输入”内的 Amazon Connect 联系流中,我只包含了 11 个意向中的 5 个。 Get Customer Input screenshot。 我的问题是我想将 Lex 限制为那些特定的意图,即当用户说话时,“获取客户输入”应该只触发这 5 个意图之一,而不是触发机器人中所有 11 个意图之一。

我在获取客户输入中的意图:

  1. newRes:当客户说新预订时
  2. removePreviousRes:当客户说删除我的预订或取消我的预订时
  3. updatePreviousRes:当客户说更改我的预订或更新我的预订时
  4. checkRideStatus:当用户说我的乘车状态是什么时
  5. getAnOperator:当用户说与接线员通话时

我在 Lex 机器人中也有一个 newUser 意图,可以通过说 New UserNew 来触发帐户 或类似的东西。现在,如果用户在“获取客户输入”块中说“新用户”或“新帐户”,即使我没有将其作为参数添加到“获取客户输入”块中,也会触发 newUser 意图。有没有办法将 Lex 限制为只有这 5 个意图?因为稍后在联系流中我需要 newUser 意图,并且我不希望用户在联系流开始时触发它。有任何想法吗?我可以使用 Lambda 函数限制它吗?

您绝对可以使用 sessionAttributes 和您的 Lambda 函数自行控制。

您无法阻止 Lex 尝试将用户输入与您的某些意图相匹配,但是,您可以根据您可以创建的变量来检查这些意图是否在您不希望它们被触发时被触发跨多个意图跟踪用户在对话中的位置。

为此,请使用 Lex 的 sessionAttributes。这些也可以是created or updated inside of Connect. You can also receive Lex's sessionAttributes in Connect as an "External" Contact Attribute$.Lex.SessionAttributes.attributeKey

例如:
设置一个名为 convo_point 的属性,并将 Connect 对话开始时的值设置为“initiate”或“beginning”。然后考虑您的对话流程和您需要的不同检查点,您可以在其中允许或禁止某些意图。

然后在 Lex 的 Lambda 内部,在处理每个意图之前,检查此 convo_point sessionAttribute 并与触发的意图进行比较。如果会议点对于新用户意图来说太早,则使用 ElicitIntent 响应类型构建适当的响应并要求用户尝试不同的意图。当用户实现其他意图时,您可以更新 convo_point 以反映这一点,并允许新用户意图仅在该意图发生后实现。