如何保持alexa技能开放?

Vis*_*hnu 9 amazon alexa-skill alexa-skills-kit

我创造了一项技能,以便人们可以跟踪某些状态.但不是每次都要求alexa打开应用程序并进行交互.

alexa ask grocerylist to add 2 eggs
alexa ask grocerylist to add bread
Run Code Online (Sandbox Code Playgroud)

我希望保持杂货店技能开放,以便用户可以与之互动,直到他们要求它关闭

alexa open grocerylist
.... 2 mins later
add 2 eggs
.... 1 min later
add bread
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不必alexa ask grocerylist每次都使用.

Jos*_*nta 13

这是不可能的.这是一个安全功能,因此第三方无法创建一种技能来"倾听"某人所说的一切.您可以响应,如果您没有设置"endSession"标志,它将保持会话打开.但它只会保持打开约8秒钟.如果你设置了一个reprompt,它将在那时读取它们的reprompt并保持打开另外8秒.所以你可以保持线路打开的最大值是16秒左右.

  • 在论坛和其他地方,大多数人都问这个问题,他们希望持续保持这种技能。监听用户稍后可能会说的任何内容而无需调用。询问者在这里未明确说明他们的情况,因此我根据大多数搜索此问题的人所寻找的答案回答了这个问题。 (4认同)
  • 这个回答首先说“不可能”,然后你准确地描述了如何做我理解的提问者想要的。下面的@adamp 给出了相同的答案。 (2认同)

pyt*_*981 5

这当然是可能的!(但@Bill 的评论最多可能会被限制在 8 秒左右)

在您的回复中,在调用 时buildSpeechletResponse,设置shouldEndSessionfalse以便保持会话打开并继续侦听更多话语,而无需使用“alexa Ask MyApp...”再次启动该技能。

各种演示将展示如何做到这一点。例如,请参阅此处的示例代码:https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/savvyConsumer/src/AlexaSkill.js