如何在Alexa SDK的emit()响应中传递更新后的sessionAttributes?
在Alexa SDK中使用emit()时传递更新的sessionAttributes
嘿,我来帮你搞定这个问题!其实你不用在emit()的响应构建器参数里单独传入sessionAttributes——Alexa SDK已经帮你封装好了更简单的方式:
- 直接更新
this.attributes对象:SDK会自动将这个对象作为sessionAttributes包含在响应中。this.attributes就是请求中sessionAttributes的对应实例,每次请求到来时SDK会自动加载它,你修改后调用emit(),更新后的属性就会被带回Alexa服务。
举个具体的例子:
// 先更新单个session属性 this.attributes['favoriteColor'] = 'blue'; // 或者替换整个sessionAttributes对象 const updatedSessionAttributes = { favoriteColor: 'blue', lastInteraction: Date.now() }; this.attributes = updatedSessionAttributes; // 调用emit响应,SDK会自动带上更新后的sessionAttributes this.emit(':elicitSlot', slotToElicit, speechOutput, repromptSpeech, updatedIntent);
如果之后遇到更复杂的响应场景,需要用自定义响应构建器,也可以通过responseBuilder的withSessionAttributes()方法显式设置,但对于emit()的快捷指令(比如:elicitSlot、:tell、:ask这些),直接修改this.attributes就完全够用了。
内容的提问来源于stack exchange,提问作者Jay A. Little
相关产品推荐
相关产品推荐

