Alexa的对话如何运作?

时间:2018-01-02 15:34:11

标签: alexa alexa-skills-kit

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

  

" 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&#34 ;," B"," C")。但elicitSlot会导致您重新触发相同的意图。因此,每个意图检查一个插槽是否已填充,如果没有,请说出问题并引出该插槽,如果是,请设置会话属性然后转发到其他意图?

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

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

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

1 个答案:

答案 0 :(得分:0)

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