【问题标题】:How does Alexa's conversation flow work?Alexa 的对话流程如何运作?
【发布时间】:2018-01-03 16:44:41
【问题描述】:

我想写一个问答游戏,流程是这样的:

“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】:

    您可能会看一下here,这将处理您编写的许多 if else 和 elicit slot。对于问题等,您确实可能必须创建一个状态,以便您可以检查您是否处于询问状态或只是处于设置状态。这将帮助您的技能阻止男人必须做的事情。 (不要忘记总是把这个状态放回去,因为如果你有时不这样做,Alexa 会很棘手。你可以在here 上找到更多信息。这看起来也是你想要做的一个很好的例子。 希望这对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多