强制响应来自特定自定义广告位,重复

时间:2017-05-29 21:09:19

标签: alexa-skills-kit alexa-skill amazon-echo

我试图写一个"琐事测验"技能,就像许多已经存在的技能一样,但我希望用户能够给出实际答案,而不是" a / b / c"或" 1/2/3"。所以谈话会像这样:

  • Alexa :哪个行星最接近太阳:水星还是金星?
  • 用户Mercury
  • Alexa :那是对的!你有一点。哪家公司生产Corvette,凯迪拉克或雪佛兰?
  • 用户Chevrolet
  • Alexa :没错!你有两点。什么是乔治华盛顿的假牙?木头还是象牙?

...等...

由于每个问题都有自己的一组答案,我很乐意为每个问题创建一个自定义广告位类型,因此我的LIST_Q1_ANSWERS广告位为["Mercury", "Venus"] LIST_Q2_ANSWERS的{​​{1}}位置,这一切都很好。但是,我不知道如何告诉我的技能,答案应仅来自这个特定的自定义插槽。

当然可以为每个问题创建一个特定的["Cadillac", "Chevrolet"],因此我创建了Intent,我启动了一个对话框,我Q1Intent我的{{} 1}}。但是,这并没有成功,因为在我的响应中填写所需的Elicit广告位时,我不得不说"更正"并且询问下一个问题,这意味着我必须Q1Intent LIST_Q1_ANSWERS ...并且不允许这样做;我必须先结束Dialog,然后再开始一个新的。 (所以谈话会进入"哪个星球......?#34;"水星""正确!你想要下一个问题吗?""是& #34;"好的。哪家公司......"那并不好。)

我可能在这里过于复杂。也许有一种更简单的方法来模拟我想要的语音界面。我当然可以在一个大的自定义广告位中定义所有不同的答案,然后只有一个Elicit,但人们可以回答Q2Intent行星问题而且这很愚蠢。 (我知道我必须处理问题的任何答案,而不仅仅是插槽中的答案,但我想将问题偏向于从插槽中选择答案;那是什么插槽用于。)

那么,我该怎么做呢?对话不会起作用,我不会想。

2 个答案:

答案 0 :(得分:1)

这是一个非常合理的请求,IMO,但Alexa仍然无法实现。使用其他一些机器人/人工智能平台,您可以指定一个上下文,使其尝试将用户响应与您的技能意图的子集相匹配(通常只有1,我认为)。

这是一个流行的Alexa功能请求,它在同一点上:

允许根据应用程序状态暂时禁用意图/话语 https://forums.developer.amazon.com/content/idea/40045/allow-temporarily-disabling-intentsutterances-base.html

答案 1 :(得分:-1)

是的,我相信你可以做到你想要的。我在"Who's On First?" baseball skit技能中做了类似的事情。

可能还有很多其他方法可以实现这一目标,但我采取了以下方法:

  1. 为每个用户响应创建一个意图。例如,在上面的例子中你说过,“水银”和“雪佛兰”都是意图。
  2. 在会话对象中向前传递信息。可以使用数据库,但在这种情况下会话运行良好。此信息将允许您的意图处理程序识别所询问的问题。如果每个答案都是唯一的,那么这不是必需的,但它允许多个问题具有相同的答案。例如,答案“水银”可以解答“命名行星”以及“命名液态金属”这两个问题。
  3. 由于错误答案可能比正确答案更多,因此使用插槽来获取错误答案可能是有意义的。或者,您可能只是将不匹配的意图作为错误答案处理,并使用会话中传递的问题ID来确定哪个问题不正确。
  4. 您可以通过编程方式将响应字符串放在一起。因此,如果答案是正确的,请在你的技能所说的下一个问题的开头加上“正确,下一个问题”。
  5. 我希望这可以让您了解如何继续。 Alexa可以做很多事情。我们有时需要发挥创意。