Amazon Connect Contact Flow - 循环意图,直到用户明确退出

时间:2018-06-06 17:27:10

标签: amazon-web-services amazon-lex amazon-connect

我使用Amazon Lex详细here构建了BookTrip僵尸程序。

当与机器人聊天时,用户可以继续预订酒店房间或租车,直到他们结束对话。以下是成功预订的示例,然后通过chatbot界面进行另一次预订尝试:

Book a second hotel chat screenshot

当我在Amazon Connect联系人流程中使用此聊天机器人时,用户无法在第一次预订后继续预订任何内容。从逻辑上讲,联系流将继续执行BookHotelBookCar意图,直到执行ConnectToAgentEndConversation意图。

Contact flow screenshot

我尝试将BookHotelBookCar循环回到"获取客户"的开头。输入块,但错误输出。

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是将用户保留在机器人中,直到他们完成所有预订,然后退回到Amazon Connect。您可以通过以下方式执行此操作:

  1. 获取初次预订的广告位值
  2. 使用lambda来完成意图(写入数据库等)并清除插槽值
  3. 使用ConfrimIntent询问“您是否要添加其他预订”
  4. 如果用户回答“是”,确认意图,那么您将获得槽值(从步骤1开始)

    如果用户回答“否”,您将退回到Amazon Connect

    您可以查看lambda请求和回复详情here

    在AWS开发人员论坛here上也对此模式进行了很好的讨论。

答案 1 :(得分:0)

我发现了一种解决此问题的方法,该方法可以在您有多个意图时使用,尽管有很多缺点。

基本上,在Amazon Connect中创建一个虚拟块。我将Set Contact Attributes与一个名为“ continue”且值为“ continuing”的虚拟属性一起使用。从未使用过。然后在成功时,将其循环回以重新启动Lex块!

enter image description here

保存和发布时没有错误,并且可以很好地满足我的用例。

以下是上面设置的图像的工作原理:
A.播放欢迎提示(以前是Lex块启动时的提示)
B.“获取客户输入”是Lex块。
C. Lex结束任何意图并移至虚拟块(设置接触属性)
D.成功设置虚拟属性后,移回以重新启动B. Lex块。

这里有缺点:
  1. Lex块启动时会要求提示,因此您必须将其设计到机器人中,因为它会在您的意图结束时发出一个提示,然后在重新启动时发出另一个提示。 Lex块。
  2.这将创建一个无限循环,至少直到用户结束呼叫或会话超时为止。但是,解决此问题的一种方法是创建一个专为说再见而设计的意图,不要将意图的实现指向假人。