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

时间:2018-07-30 15:48:41

标签: alexa alexa-skills-kit

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

例如,这很有意义:

"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,要求{invocation_name}到{utterance}”的对话框结构太过膨胀,很难从文档中看到如何解决此问题。我希望在启动短语的工作方式方面有所遗漏,从而使我的用户可以更自然地发出命令。

2 个答案:

答案 0 :(得分:0)

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

对于LaunchRequest

Ex:给出这样的响应。

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

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

请注意,shouldEndSession为假,这使会话保持活动状态。用户只需说出 “前进” ,而无需使用调用名称。

当您实际要结束会话时,请将shouldEndSession设置为true

Ex :代表Amazon.StopIntent

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

答案 1 :(得分:0)

并非所有意图 都需要调用名称。

以下是很有可能的:

"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)

这些话不应该一个接一个地讲,它们都是独立的命令。

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