我正在用Node JS 8编写一项技能。我有一个设置插槽的意图,如果我说
,它可以正常工作。请{技能名称}和{话语}。
我想设计自己的技能,以便用户可以说
打开{技能名称}
,打开时会要求他们提供输入,然后将其处理并传递给该意图。我见过很多人说你不能这样做。但是我今天使用了2种技能来做到这一点。我只是在寻找正确的语法来做到这一点。
我有:
'LaunchRequest': function() {
this.response.speak("What note would you like?");
this.emit(':responseReady');
}
似乎应该可以使用,但是我对JS和Alexa还是很陌生。
答案 0 :(得分:1)
是的,有可能。
技能使用者打开您的技能时,您可以在欢迎信息后提出问题。
例如:
[user] : open note skill
[Alexa] : Welcome to note skill. What note would you like?
----------<Alexa will wait for users input>--------
[user] : ABC note.
[Alexa] : <response>
要让Alexa在说出欢迎消息后等待用户输入,您需要保持会话活动状态。根据响应中的shouldEndSession
参数使会话保持活动状态。对于任何请求(如果未提供),shouldEndSession
默认为true
。在您的情况下,对LaunchRequest
的响应应将此shouldEndSession
参数设置为false
。只有会话保持打开状态,用户才能继续交互。
例如:
'LaunchRequest': function() {
const speech = "Welcome to note skill. What note would you like?";
const reprompt = "What note would you like?";
this.emit(':ask', speech, reprompt);
}
阅读this answer,以了解有关如何使用ask-nodejs-sdk使会话保持活动状态的更多信息。
使用对话框模型
实现此目的的另一种方法是使用Dialog指令。对话框指令可帮助您轻松填充和验证插槽值。您可以使用指令向用户询问您完成他们的请求所需的信息。
有关Dialog指令here
的更多信息