从 LaunchIntent 向用户询问输入
Posted
技术标签:
【中文标题】从 LaunchIntent 向用户询问输入【英文标题】:Ask user for input from LaunchIntent 【发布时间】:2019-02-06 00:14:21 【问题描述】:我正在用 Node JS 8 编写一项技能。我有一个使用插槽设置的意图,如果我说它可以正常工作
向utterance询问skill name。
我想设计我的技能,以便用户可以说
打开技能名称
并在打开时询问他们输入,然后处理并传递给意图。我看到很多人说你不能这样做。但是我今天使用了 2 种技能来做到这一点。我只是在寻找正确的语法来做到这一点。
我有:
'LaunchRequest': function()
this.response.speak("What note would you like?");
this.emit(':responseReady');
这似乎应该可行,但我对 JS 和 Alexa 还很陌生。
【问题讨论】:
【参考方案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 指令。对话框指令可帮助您轻松填充和验证槽值。您可以使用指令向用户询问您满足其请求所需的信息。
有关对话框指令here的更多信息
【讨论】:
非常感谢,这正是我所需要的。以上是关于从 LaunchIntent 向用户询问输入的主要内容,如果未能解决你的问题,请参考以下文章