Aws lambda 在Amazon LEX中切换意图后,返回到对话框树中的同一位置

Aws lambda 在Amazon LEX中切换意图后,返回到对话框树中的同一位置,aws-lambda,amazon-lex,aws-lex,Aws Lambda,Amazon Lex,Aws Lex,我有一个预约租车的对话树。 机器人有一个称为“orderIntent”的主意图和一个称为“colorIntent”的第二意图。 在“orderIntent”对话框中,将要求用户选择汽车类别、日期和价格(所有这些在该intent中都有单独的位置) 我希望在对话框中的任何给定时刻,用户能够调用“colorIntent”意图,并根据自己的意愿设置颜色,完成后,返回到他之前离开的树对话框中的相同位置 例如,当要求用户选择预订日期,并回答“我想为汽车选择绿色”时,这将调用“colorIntent”意图,用

我有一个预约租车的对话树。 机器人有一个称为“orderIntent”的主意图和一个称为“colorIntent”的第二意图。 在“orderIntent”对话框中,将要求用户选择汽车类别、日期和价格(所有这些在该intent中都有单独的位置)

我希望在对话框中的任何给定时刻,用户能够调用“colorIntent”意图,并根据自己的意愿设置颜色,完成后,返回到他之前离开的树对话框中的相同位置

例如,当要求用户选择预订日期,并回答“我想为汽车选择绿色”时,这将调用“colorIntent”意图,用户将能够选择颜色

之后,用户应返回到他部分完成的对话框的同一部分,并再次被要求选择预订日期。我想实现这一点,同时维护他在主对话框中已经部分实现的关于他已经选择的汽车类别和价格的信息,以及关于他从“colorIntent”意图中选择的颜色的新信息

如何在机器人的AWS Lambda中配置此类逻辑?


试试看汽车的功能,这会解决你的问题。因为在这里,他们正在拿一些book_酒店的插槽值,并在book_汽车中设置

利用
sessionAttributes
来实现这一点,因为
sessionAttributes
保留在各个意图中,而
slot
仅保留在每个意图中

意图\u逻辑可以运行,在运行时填充
插槽
,并且插槽值也应该保存在
会话属性
中。然后在任何意图点,用户都可以触发意图

现在,Intent_A的
插槽
被Intent_B的
插槽
覆盖,但Intent_A的插槽值仍保存在
sessionAttributes

关于如何在意图之间更改的额外信息:

然后您有两个选择:

(1) 强制用户再次触发IntentA 提示:“要继续预订汽车,请说,预订a 汽车”

(2) 使用
confirminist
返回IntentA,但需要 问一个确认问题,比如“你想继续预订吗?” 一辆车?“不管怎么说,对这一点的反应都会传到Intent_a,所以 在Intent_A内部,您只需检查
确认状态
这将是
“确认”
“拒绝”
,取决于 用户回答了这个问题。如果确认,则可以继续 意图A,如果拒绝,则应关闭意图A

(在dialogAction类型下查看)


回到Intent_A后,您应该检查
sessionAttributes
中是否有任何插槽数据,并强制将这些数据返回到相应的
插槽中。然后,您的原始逻辑可以检测到哪些插槽已被填满,并继续它停止的位置。

根据我所看到的,我认为它基于BookTrip Lex蓝图。。在这种情况下,意图共享信息,但前提是意图已经实现并完成。如果在对话框中间调用第二个意图,则当第一个意图离开时,对话框不会恢复到该部分。