允许用户在使用一次启动短语后向 Alexa 发出多个命令

Allow users to issue multiple commands to Alexa after using the launch phrase once

如果每个意图都需要技能的调用名称,那么启动短语的目的是什么?

例如,这是有道理的:

"Alexa, open adventure game"  (launch phrase)
"move forward"                (intent)
"pick up item"                (intent)
"close adventure game"        (exit)

但据我所知,您必须这样做:

"Alexa, open adventure game"                (launch phrase)
"Alexa, ask adventure game to move forward" (intent)
"Alexa, ask adventure game to pick up item" (intent)
"Alexa, close adventure game"               (exit)

我真正的问题是 "Alexa, ask {invocation_name} to {utterance}" 的对话框结构过于臃肿,很难从文档中看出如何解决这个问题。我希望我在启动短语的工作方式中遗漏了一些东西,这将允许我的用户更自然地发出命令。

如果保持会话活动,则不必每次都使用调用名称。为此,您必须在响应 JSON 中包含 shouldEndSession 参数并将其设置为 false。当 shouldEndSession 设置为 true 或不存在时,Alexa 结束会话。

例如: for LaunchRequest 给出这样的回复。

{
   'version':'1.0',
   'sessionAttributes':{

   },
   'response':{
      'outputSpeech':{
         'type':'PlainText',
         'text':'Launch phrase here'
      },          
      'reprompt':{
         'outputSpeech':{
            'type':'PlainText',
            'text':'re-prompt phrase here'
         }
      },
      'shouldEndSession':false
   }
}

请注意 shouldEndSession 为 false,这会使会话保持活动状态。并且用户可以只说 "move forward" 而无需使用调用名称。

当您真正想要结束会话时,将 shouldEndSession 设置为 true

例如:对于Amazon.StopIntent

注意: 即使您将 shouldEndSession 设置为 false ,默认的 Alexa 会话超时为 8 秒且不可配置。

每个意图不需要调用名称。

以下可能性很大:

"Alexa, open adventure game"  (launch phrase)
"move forward"                (intent)
"pick up item"                (intent)
"close adventure game"        (exit)

您是否遇到过技能问题,或者这只是您在阅读技能商店中的示例话语时注意到的问题?

如果您遇到技能问题,可能是会话超时,开发者没有提供重新提示。在这种情况下,唤醒词+调用(Alexa,打开冒险游戏)不得不说再次启动技能。

如果您只是按照给出的示例(第二组)进行操作,则必须了解每个话语不仅仅是一个意图话语,而是一个启动+意图话语。这意味着,这些示例中的每一个都用于启动技能 意图。所以基本上你的例子是

"Alexa, open adventure game"                (launch phrase)
"Alexa, ask adventure game to move forward" (launch phrase + intent)
"Alexa, ask adventure game to pick up item" (launch phrase + intent)
"Alexa, close adventure game"               (launch phrase + exit)

这些话语不是一个接一个说出来的,它们都是独立的命令。

一旦启动了一项技能,只要会话处于活动状态,您就不需要一次又一次地重复调用。