alexa sdk 传递会话属性

alexa sdk pass session attributes

This Alexa Doc 表明 sessionAttributes 是响应参数之一,不在 response 对象内。

我正在使用 Alexa SDK,所有 emit 响应生成器仅使用 response 对象的参数。例如:

this.emit(':elicitSlot', slotToElicit, speechOutput, repromptSpeech, updatedIntent)

那么如何使用 Alexa SDK 中的 emit() 并在响应中传递更新的 sessionAttributes?

Alexa SDK 会自动序列化并包含您在调用 emit(..).

之前在 attributes 对象上设置的 key-value 对

更具体地说,你可以说:

this.attributes.myAttribute1 = 'some value';
this.emit(':elicitSlot', slotToElicit, speechOutput, repromptSpeech, updatedIntent);

并且 sessionAttributes 对象将在响应中自动更新以包括:

'myAttribute1': 'some value`

作为参考,您可以在SDK中查看elicitSlot的实现,这里:https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs/blob/master/lib/response.js#L131-L143