【发布时间】:2018-01-16 22:43:31
【问题描述】:
我正在尝试编写一个问答游戏,其中 Alexa 从一个列表中随机询问 10 个问题,并记录分数,然后宣布它。我正在使用 Node.js Lambda 函数来执行此操作。
我写了一个课程QuizMaster,它运行测验:它询问用户他们喜欢的类别和难度级别,创建带有随机 A/B/C 答案槽的随机问题列表,并检查是否提供了答案最后一个问题是正确的。
这对我来说有些棘手:我可以在哪里保存对 QuizMaster 实例的引用?如果我将它创建为意图处理程序之外的变量,它第一次可以正常工作,但是如果用户重新调用该技能,那么测验大师仍然存在,并且会立即重新宣布他们的最终得分并结束游戏。这让我有点困惑,因为我的心智模型是每次 Lambda 端点被击中时,就像亚马逊正在运行 node index.js 并且当会话结束时,执行结束。但我想我错了——它更像是亚马逊运行node index.jsonce,让它在循环中打开以监听事件,并且每个事件都进入处理函数吗?因此,如果我连续运行两次,我仍然可以将这些旧变量与它们的旧值放在一起吗?这是否意味着如果 10 个用户同时运行我的 Alexa 技能,他们都为这些变量共享相同的值/修改彼此的状态?还是会像 AWS 运行文件 10 次并收取我单次执行 10 倍的内存的费用?
所以,我想我打算将状态存储在数据库中或直接附加到会话(在 Alexa Node SDK 中,this.attributes)。所以我是否需要重写我的应用程序,以便我可以序列化状态,将其附加到会话,然后将状态拉出——我不能保留QuizMaster 实例来跟踪每件事——用户会话?
【问题讨论】:
标签: aws-lambda alexa alexa-skills-kit