我已经试图了解这几天,这与another question类似,但这个答案并没有解决我的问题。
我无法从我的Alexa技能中填充JSON响应的sessionAttributes属性:
var sessionAttributes = {};
sessionAttributes = { "somekey": "somevalue" };
session.attributes = sessionAttributes;
我认为从我的AWS Lambda函数发送的响应来自Alexa的请求的响应将包括我的自定义添加,但事实并非如此,我无法弄清楚原因。
我想我理解响应对象对于this.response访问的闭包是私有的,但这只会让我更加困惑(来源:Github Issue)
所以我的问题是:如何在涉及与Alexa进行多次用户互动的会话中保留数据?
我认为需要建立自己的响应对象,我不能使用任何自动化功能?
答案 0 :(得分:1)
您错过了对setSessionAttributes的调用,这使sessionAttributes的新值可供其他处理程序使用。
所以您需要做的是:
var sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
sessionAttributes.somekey = "somevalue";
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);
注意:以上示例要求您使用的是Node SDK 2+版本。