Alexa Skills - sessionAttributes 是如何工作的?
Alexa Skills - How does sessionAttributes actually work?
几天来我一直在努力解决这个问题,它与 another question 类似,但那个答案并没有解决我的问题。
我无法填充来自我的 Alexa 技能的 JSON 响应的 sessionAttributes 属性:
var sessionAttributes = {};
sessionAttributes = { "somekey": "somevalue" };
session.attributes = sessionAttributes;
我认为从我的 AWS Lambda 函数发送的响应来自 Alexa 的请求的响应将包括我的自定义添加,但事实并非如此,我不明白为什么。
我想我明白响应对象对于 this.response 访问的闭包是私有的,但这只会让我更加困惑(来源:Github Issue)
所以我的问题是:如何在涉及多个用户与 Alexa 交互的会话中保留数据?
我认为需要构建我自己的响应对象,我不能使用任何自动化功能?
您缺少对 setSessionAttributes 的调用,它使 sessionAttributes 的新值可供其他处理程序使用。
所以你需要做的是:
var sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
sessionAttributes.somekey = "somevalue";
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);
注意:以上示例要求您使用的是 Node SDK 2+ 版本。
几天来我一直在努力解决这个问题,它与 another question 类似,但那个答案并没有解决我的问题。
我无法填充来自我的 Alexa 技能的 JSON 响应的 sessionAttributes 属性:
var sessionAttributes = {};
sessionAttributes = { "somekey": "somevalue" };
session.attributes = sessionAttributes;
我认为从我的 AWS Lambda 函数发送的响应来自 Alexa 的请求的响应将包括我的自定义添加,但事实并非如此,我不明白为什么。
我想我明白响应对象对于 this.response 访问的闭包是私有的,但这只会让我更加困惑(来源:Github Issue)
所以我的问题是:如何在涉及多个用户与 Alexa 交互的会话中保留数据?
我认为需要构建我自己的响应对象,我不能使用任何自动化功能?
您缺少对 setSessionAttributes 的调用,它使 sessionAttributes 的新值可供其他处理程序使用。
所以你需要做的是:
var sessionAttributes = handlerInput.attributesManager.getSessionAttributes();
sessionAttributes.somekey = "somevalue";
handlerInput.attributesManager.setSessionAttributes(sessionAttributes);
注意:以上示例要求您使用的是 Node SDK 2+ 版本。