AWS Lambda中的sessionId是否与Alexa技能调用者的账号ID关联?
问题解答
核心结论
你当前代码里拿到的sessionId无法和调用技能的用户Alexa账号ID直接建立长期关联。
具体说明
sessionId是单次会话维度的临时标识,仅在当前用户与技能的对话会话存续期间有效,会话结束后立即失效。即便是同一个用户后续再次启动你的技能,生成的sessionId也会是全新的,没有可追溯的关联关系。- 如果你需要获取可和用户Alexa账号绑定的固定标识,可以从
session对象的user属性中取userId字段,该字段是亚马逊为「单个用户+单个技能」组合生成的唯一永久标识,同一个用户使用你的技能时,该值始终固定,你可以用它来做用户身份关联、个性化数据存储等操作。
示例代码
你可以直接在onSessionStarted函数中获取userId,示例如下:
function onSessionStarted(sessionStartedRequest, session) { console.log("Session starts"); console.log(`onSessionStarted requestId = ${sessionStartedRequest.requestId}, sessionId = ${session.sessionId}`); // 获取用户固定唯一标识 const alexaUserId = session.user.userId; console.log(`用户Alexa账号对应本技能的唯一ID:${alexaUserId}`); }
内容的提问来源于stack exchange,提问作者Plc Worker
相关产品推荐
相关产品推荐

