如何使用特定请求调用技能与newSession处理程序一起使用?

时间:2017-02-11 22:08:09

标签: node.js alexa-skills-kit amazon-echo

您可以阅读可以通过特定请求调用技能的here

但我的技能有一个新会话的处理程序,一旦我尝试通过特定请求调用我的技能,它仍然会在这个新的会话功能中结束。

const handlers = {
    'NewSession': function () {
        this.attributes.speechOutput = this.t('WELCOME_MESSAGE', this.t('SKILL_NAME'));
        this.attributes.repromptSpeech = this.t('WELCOME_REPROMT');
        this.emit(':ask', this.attributes.speechOutput, this.attributes.repromptSpeech);
        },
    'RankIntent': function () {
        const rank1raw = this.event.request.intent.slots.RankOne;
        const rank2raw = this.event.request.intent.slots.RankTwo;
        ...
    }
}

有没有办法获得正确的意图,或者我必须在newSession函数中做一些if子句来查看进入的内容以及应该响应的函数?

1 个答案:

答案 0 :(得分:1)

您可以阅读here on line 17

  

如果要使用,请使用LaunchRequest,而不是NewSession   一次性模型Alexa,问[my-skill-invocation-name](做   东西)...

所以我的方法是:

const handlers = {
    'LaunchRequest': function () {
        this.attributes.speechOutput = this.t('WELCOME_MESSAGE', this.t('SKILL_NAME'));
        this.attributes.repromptSpeech = this.t('WELCOME_REPROMT');
        this.emit(':ask', this.attributes.speechOutput, this.attributes.repromptSpeech);
        },
    'RankIntent': function () {
        const rank1raw = this.event.request.intent.slots.RankOne;
        const rank2raw = this.event.request.intent.slots.RankTwo;
        ...
    }
}