代码之家  ›  专栏  ›  技术社区  ›  MyrionSC2

如何使用npm的alexa sdk将LaunchRequest委托给IntentRequest

  •  2
  • MyrionSC2  · 技术社区  · 8 年前

    我正在使用 alexa-sdk . 我正在使用 dialog model 处理用户交互。我在将流量传递到新 request types ,例如从启动请求到意图请求。

    下面是我的处理程序的一个示例,以及理想情况下我想要的。我的具体用例是,我想问用户一些问题,然后根据他们的回答将它们发送到不同的意图。在意图中,我希望能够访问请求对象,就像它们最初输入了该意图一样,这样对话框模型就可以完成它的工作。

    const handlers = {
        'LaunchRequest': function () {
            this.emit('Entry'); // this does not do what I want
        },
        'Entry': function () {
            let request = this.event.request; // this is the launch request object.
            // I would like to get the request object for Entry, like if the user started here
    
            // ask some questions, potentially passing the torch to a new intent based on the answers
        }
    };
    

    那么,有没有任何方法可以像用户最初请求某个意图那样“调用”该意图?抱歉,如果我在文档中遗漏了一些明显的内容,我想我已经彻底搜索过了,但文档太多了。ps:当然,我可以手动构造请求对象,但我真的不应该这样做。

    1 回复  |  直到 8 年前
        1
  •  3
  •   A.Kraus    8 年前

    我很确定,目前还没有办法像你所要求的那样呼吁达成一项意向。

    如果您仔细阅读对话框目录的语法描述 here ,它说:

    请注意,返回对话框指令时不能更改意图,因此意图名称和插槽集必须与发送给您的技能的意图相匹配。

    通过返回对话框指令,您可以通过在技能生成器中设置的提示和重新提示来“引出”或“确认”插槽或意图,甚至可以让代理为您处理对话框。

    据我所知,触发特定意图的唯一解决方案是让用户调用它。你可以引导用户说出特定的话语来触发你的意图。

    至于保存旧请求,您可以使用 session attributes . 只需在启动后使用包含整个LaunchRequest的会话属性构建一个响应。

    "sessionAttributes": {
    "oldRequest": this.event.request
    }