我想写一个测验/面试游戏,其流程如下:
" 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&#34 ;," B"," C")。但elicitSlot
会导致您重新触发相同的意图。因此,每个意图检查一个插槽是否已填充,如果没有,请说出问题并引出该插槽,如果是,请设置会话属性然后转发到其他意图?
这似乎很草率。也许解决方案是定义askingRulesState
,askingCategoryState
,askingQuestionState
等,每个只有一个处理程序。但只有一个处理程序的州似乎......错了吗?
如果我要向用户询问类似的问题"您想要播放什么类别?",这是否意味着我需要创建一个SetCategoryIntent
?如果是这样,我将如何阻止用户触发该意图,除非我想要它们?
我意识到这是一个很模糊的问题,但我很难把它归结为更小更清晰的东西,因为我的问题是流程总体来说让我迷失方向。我甚至欣赏最小的小费!