0

在将 Lambda 与 Lex 和一般脚本一起使用时,我还很陌生。在一个意图中,我要求用户提供他们的名字、姓氏和组织。我想知道是否有一种方法可以在同一个聊天机器人中的其他意图之间共享此信息?例如,当以另一个意图响应用户时,我希望能够在回复给他们的响应中使用他们的名字。我在网上看过,我对如何实现这一点感到非常困惑。任何帮助都非常感谢。先感谢您。

4

3 回答 3

1

要跨多个意图存储值,请使用SessionAttributes.

在 SessionAttributes 中备份您的槽值是很常见的,这样您就可以在其他意图中使用它们,或者能够返回到原始意图并恢复槽以继续用户离开的地方。

意图 A 中的示例:

//get the values of the slots, use your slot names at the end
var first_name = event.currentIntent.slots.first_name;
var last_name = event.currentIntent.slots.last_name;
var organization = event.currentIntent.slots.organization;

//insert slot values into sessionAttributes
event.sessionAttributes = {
    "first_name": first_name,
    "last_name": last_name,
    "organization": organization,
};

当您使用更新的 sessionAttributes 响应 lex 时,这些值将被保存并在其他意图中可用。

现在在意图 B:

var first_name = event.sessionAttributes.first_name; 

var response_message = "Hello, "+ first_name +". I can help you to ...";
于 2019-06-23T05:56:25.410 回答
0

使用 SLOTS 处理在 Amazon lex 中捕获的用户输入。当您的 AWS Lambda 代码处理请求时,您可以将此捕获的数据存储在您希望使用的任何 Intent 中。

于 2019-06-21T11:07:09.327 回答
0

(一种方式)这可以使用上下文来完成,在意图询问名称时初始化输出上下文“first_name”,并将所有其他意图输入上下文作为“first_name”。因此,当“first_name”被填满时,它会变得活跃并且所有其他意图都可以识别。

于 2021-07-13T18:43:21.770 回答