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

问题描述

我是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 User New Account 或类似的方式来触发。现在,如果用户在“获取客户输入”块中说“新用户”或“新帐户”,即使我没有将其作为参数添加到“获取客户输入”块中,也会触发 newUser 意图。有没有办法将Lex限制为仅这5个意图?因为稍后在Contact Flow中需要 newUser 意图,并且我不希望用户在Contact Flow开始时触发它。有任何想法吗?我可以使用Lambda函数对其进行限制吗?

解决方法

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

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

为此,请使用Lex的sessionAttributes。这些也可以是created or updated inside of Connect。您还可以在Connect中将Lex的sessionAttributes作为“外部” Contact Attribute$.Lex.SessionAttributes.attributeKey

接收

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

然后在处理每个意图之前,在Lex的Lambda内,检查此convo_point sessionAttribute并将其与触发的意图进行比较。如果对于新用户意图而言,转换点还为时过早,请使用ElicitIntent响应类型构建适当的响应,并要求用户尝试其他意图。当用户满足其他意图时,您可以更新convo_point以反映该意图,并允许新用户意图仅在发生这种情况后得到满足。