如何使用node.js中的response.speak()调用intent?

时间:2018-05-10 10:40:23

标签: node.js alexa alexa-skill

this.response.speak('Okay, I will ask you some questions about ' +language + 
'. Here is your first question.' + this.AskQuestion);

如果我用 Python 作为语言,在Alexa模拟器上我得到输出

  

"好的,我会问你一些关于python的问题。这是你的第一个问题。未定义"

AskQuestion看起来像这样:

'AskQuestion': function() {
 var language = this.attributes['language'];

var currentQuestion=flashcardsDictionary
[this.attributes['currentFlashcardIndex']].question;

return 'In ' + language +', ' + currentQuestion;
}

为什么AskQuestion会返回未定义的值?

1 个答案:

答案 0 :(得分:0)

我会假设AskQuestion是另一个处理程序。在项目末尾的sdk example中,它举例说明了如何在同一状态下调用另一个处理程序。

const handlers = {
    'LaunchRequest': function () {
        this.emit('HelloWorldIntent');
    },

    'HelloWorldIntent': function () {
        this.emit(':tell', 'Hello World!');
    }
};

所以你不能这样.AskQuestion导致它不存在,alexa sdk将函数隐藏在对象内的另一组隐藏键中。 你可以做的是将意图转发给AskQuestion并处理那里的内容

this.response.speak('AskQuestion');

然后在AskQuestion

'AskQuestion': function() {
    var language = this.attributes['language'];

    var currentQuestion=flashcardsDictionary
    [this.attributes['currentFlashcardIndex']].question;

    this.response.speak("Yes everything is alright");
    this.emit(':responseReady');
}