Alexa Skills - sessionAttributes如何实际运作?

时间:2018-02-03 18:52:27

标签: javascript alexa-skills-kit alexa-skill

我已经试图了解这几天,这与another question类似,但这个答案并没有解决我的问题。

我无法从我的Alexa技能中填充JSON响应的sessionAttributes属性:

var sessionAttributes = {};
sessionAttributes = { "somekey": "somevalue" };
session.attributes = sessionAttributes;

我认为从我的AWS Lambda函数发送的响应来自Alexa的请求的响应将包括我的自定义添加,但事实并非如此,我无法弄清楚原因。

我想我理解响应对象对于this.response访问的闭包是私有的,但这只会让我更加困惑(来源:Github Issue

所以我的问题是:如何在涉及与Alexa进行多次用户互动的会话中保留数据?

我认为需要建立自己的响应对象,我不能使用任何自动化功能?

1 个答案:

答案 0 :(得分:1)

您错过了对setSessionAttributes的调用,这使sessionAttributes的新值可供其他处理程序使用。

所以您需要做的是:

var sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
sessionAttributes.somekey = "somevalue";
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);

注意:以上示例要求您使用的是Node SDK 2+版本。