Alexa的谈话流程如何运作?

问题描述 投票:1回答:1

我想写一个测验/面试游戏,其流程如下:

“Alexa,开始电影琐事。”

欢迎来到电影琐事。你需要听规则吗?

“没有。”

你想玩什么类别?喜剧,戏剧或动画?

“喜剧。”

问题1.星球大战在哪一年发布? A,1970.B,1977.C,1980。

“B.”

正确。你的分数是1.问题2 ...

我设法写了意大利面条代码来完成这个,有很多if session.attributes.categoryif session.attributes.needsRules等东西,3页嵌套if-elsing。

我正在使用Node和官方的Alexa SDK,所以我阅读了它的文档封面,但它很容易混淆和破坏(自6月以来没有工作的示例,旧UI的说明等)。我的问题是:对于这样的事情,什么样的流程是“正确的”/传统的?

在我写的代码中,我经常使用elicitSlot,这很好,因为它让我只听我想听的东西(例如answerType“A”,“B”,“C”)。但elicitSlot导致你重新触发同样的意图。因此,每个意图检查一个插槽是否已填充,如果没有,请说出问题并引出该插槽,如果是,请设置会话属性然后转发到其他意图?

这似乎很草率。也许解决方案是定义一个askingRulesStateaskingCategoryStateaskingQuestionState等,每个只有一个处理程序。但只有一个处理程序的州似乎......错了?

如果我要问用户一个类似“你想玩什么类别?”的问题,这是否意味着我需要创建一个SetCategoryIntent?如果是这样,我将如何阻止用户触发该意图,除非我想要它们?

我意识到这是一个有点模糊的问题,但是我很难把它归结为更小更清晰的东西,因为我的问题是流程总体上让我迷失方向。我甚至欣赏最小的小费!

alexa alexa-skills-kit
1个回答
0
投票

你可能看看here,这将处理很多if else和你写的插槽。对于问题而言,您确实可能必须建立状态,以便您可以检查是否有问题要求状态或仅处于设置状态。这将有助于你的技能阻止人们做它必须做的事情。 (别忘了总是把这个状态放回去,因为如果你有时不这样做,Alexa会很棘手。你可以在here找到更多信息。这看起来也是你想要做的很好的例子。希望这个帮助你前进一点。

© www.soinside.com 2019 - 2024. All rights reserved.