此问题标题的歉意。很难用其他方式来表达。我已经使用他们的新开发工具(Skill Flow Builder)建立了Alexa技能。该工具具有一项功能,可以部署该技能并创建运行它所需的Lambda函数。此Lambda函数使用DynamoDB来存储有关变量的信息,以及代表您在技能中进行中的当前位置的场景名称。
我已经编辑了该技能,并对其进行了彻底的测试,但是现在我删除了所有旧场景,并用具有新名称的新场景替换了它们。
现在,当我部署并尝试运行该技能时,它会引发错误,因为它正在尝试查找不再存在的场景的名称。之所以这样做,是因为它想在那时恢复技能。旧场景名称存储在数据库中。
这是Lambda函数引发的错误消息:
{"errorMessage":"Cannot find the scene not interesting.","errorType":"Error","stackTrace":["StoryAccessor.getSceneByID (/var/task/node_modules/@alexa-games/sfb-f/dist/storyEntities/StoryAccessor.js:28:19)","ACEDriver.processScene (/var/task/node_modules/@alexa-games/sfb-f/dist/driver.js:435:47)","ACEDriver.resumeStory (/var/task/node_modules/@alexa-games/sfb-f/dist/driver.js:188:41)","<anonymous>","process._tickDomainCallback (internal/process/next_tick.js:228:7)"]}
是无法找到的被称为“有趣”的场景。
问题是,我该如何重置技能,以便它不使用数据库在最后一点恢复技能?
当然,答案是,当您对技能进行重大更改时,启动一个新的DynamoDB表:在我的情况下,场景名称中的完整更改。
在Skill Flow Builder abcConfig.json
文件中,使用您的所有其他设置,编辑dynamo-db-session-table-name
对象中的default
字符串。给它起一个新名字,然后重新部署。它将建立一个新表。