从 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 向用户询问输入的主要内容,如果未能解决你的问题,请参考以下文章

YouTrack 工作流编辑器 - 如何询问用户输入

从用户输入中删除数组

在while循环中从用户输入中获取最小值

如何要求用户输入帐号,然后从文本文件中返回他的余额[关闭]

C++:使用程序集询问用户输入而不按回车? [复制]

用于从邮政编码填充用户地址位置的 Ruby Gem