【问题标题】:Ask user for input from LaunchIntent从 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 还很陌生。

【问题讨论】:

    标签: alexa alexa-skills-kit alexa-skill


    【解决方案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的更多信息

    【讨论】:

    • 非常感谢,这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2011-10-19
    • 2021-04-24
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多