我想写一个测验/面试游戏,其流程如下:
“Alexa,开始电影琐事。”
欢迎来到电影琐事。你需要听规则吗?
“没有。”
你想玩什么类别?喜剧,戏剧或动画?
“喜剧。”
问题1.星球大战在哪一年发布? A,1970.B,1977.C,1980。
“B.”
正确。你的分数是1.问题2 ...
我设法写了意大利面条代码来完成这个,有很多if session.attributes.category
,if session.attributes.needsRules
等东西,3页嵌套if-elsing。
我正在使用Node和官方的Alexa SDK,所以我阅读了它的文档封面,但它很容易混淆和破坏(自6月以来没有工作的示例,旧UI的说明等)。我的问题是:对于这样的事情,什么样的流程是“正确的”/传统的?
在我写的代码中,我经常使用elicitSlot
,这很好,因为它让我只听我想听的东西(例如answerType
“A”,“B”,“C”)。但elicitSlot
导致你重新触发同样的意图。因此,每个意图检查一个插槽是否已填充,如果没有,请说出问题并引出该插槽,如果是,请设置会话属性然后转发到其他意图?
这似乎很草率。也许解决方案是定义一个askingRulesState
,askingCategoryState
,askingQuestionState
等,每个只有一个处理程序。但只有一个处理程序的州似乎......错了?
如果我要问用户一个类似“你想玩什么类别?”的问题,这是否意味着我需要创建一个SetCategoryIntent
?如果是这样,我将如何阻止用户触发该意图,除非我想要它们?
我意识到这是一个有点模糊的问题,但是我很难把它归结为更小更清晰的东西,因为我的问题是流程总体上让我迷失方向。我甚至欣赏最小的小费!