Я пытаюсь написать игру-викторину, в которой Alexa задает 10 случайных вопросов из списка и отслеживает счет, а затем объявляет его. Для этого я использую функцию Node.js Lambda.
Я написал класс QuizMaster
, который запускает викторину: он спрашивает пользователя об их предпочтительных категориях и уровне сложности, создает рандомизированный список вопросов с рандомизированными ячейками для ответов A/B/C и проверяет, является ли предоставленный ответ правильным для последнего. - разговорный вопрос.
Вот где для меня все становится сложно: где я могу сохранить ссылку на этот экземпляр QuizMaster
? Если я создам его как переменную вне обработчиков намерений, в первый раз он будет работать нормально, но затем мастер викторины все еще будет рядом, если пользователь повторно вызовет навык, и немедленно повторно объявит свой окончательный результат и завершит игру. Это меня немного смущает, потому что моя мысленная модель заключалась в том, что каждый раз, когда происходит попадание в конечную точку Lambda, Amazon работает node index.js
, и когда сеанс завершается, выполнение завершается. Но я полагаю, что ошибаюсь — это больше похоже на то, что Amazon запускает node index.js
один раз, оставляя его открытым в цикле, прослушивая события, и каждое событие передается функции-обработчику? Так что, если я запущу его дважды подряд, у меня все еще будут старые переменные с их старыми значениями? Означает ли это, что если 10 пользователей запускают мой навык Alexa одновременно, все они будут использовать одни и те же значения для этих переменных/изменять состояние друг друга? Или это будет похоже на то, как AWS запускает файл 10 раз и берет с меня 10-кратный объем памяти за одно выполнение?
Итак, я предполагаю, что я должен хранить состояние в базе данных или напрямую подключаться к сеансу (в Alexa Node SDK, this.attributes
). Итак, мне нужно переписать мое приложение таким образом, чтобы я мог сериализовать состояние, прикрепить его к сеансу, а затем извлечь состояние - я не могу хранить экземпляр QuizMaster
, чтобы отслеживать вещи для каждого пользователя. сеанс?