AWS Lex-如何将价值从一种意图共享到其他意图

时间:2019-06-19 20:05:38

标签: aws-lambda chatbot aws-lex

在将Lambda与Lex结合使用以及编写脚本方面,我还很陌生。我打算向用户询问他们的名字,姓氏和组织。我想知道是否可以在同一聊天机器人中的其他意图之间共享此信息?例如,当我以另一种意图回应用户时,我希望能够在回复他们时使用他们的名字。我在网上看过,但我对如何实现这一目标感到非常困惑。对此,我们将提供任何帮助。预先谢谢你。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

要跨多个意图存储值,请使用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 ...";

答案 2 :(得分:0)

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