HelloWorld Alexa Skill - 它在哪里开始执行?

时间:2017-02-07 23:34:18

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

我正在学习javascript和构建Alexa技能的基础知识。亚马逊提供了一个简单的HelloWorld Alexa技能:https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/helloWorld/src/index.js

我对这个功能有两个问题。

// Create the handler that responds to the Alexa Request.
exports.handler = function (event, context) {
    // Create an instance of the HelloWorld skill.
    var helloWorld = new HelloWorld();
    helloWorld.execute(event, context);
};
  1. 这是用户启动Alexa Skill时代码执行的地方吗?在我看来,这是代码的一部分,它创建一个HelloWorld对象并启动用户想要的意图。
  2. 每次用户调用意图时都会执行此部分吗?例如,如果我在Alexa Skill中两次询问Alexa“帮助”,那么这段代码会被调用两次吗?我来自Java,那里有一个主要的方法,并且仍然掌握了javascript。

1 个答案:

答案 0 :(得分:1)

是的,分配给exports.handler的函数大致相当于Java主例程。每次调用技能时都会执行此函数内的代码。

它之外的代码也会运行,但只有在Lambda首次初始化时才会运行,除非你的技能使用非常非常繁重,否则这种情况很少发生。在下面的示例中:

var globalCount = 0;
exports.handler = function (event, context) {
    var localCount = 0;
    // Create an instance of the HelloWorld skill.
    var helloWorld = new HelloWorld();
    helloWorld.execute(event, context);
    console.log("GlobalCount: " + globalCount + " LocalCount: " + localCount);
    localCount++;
    globalCount++;
};

您将看到globalCount随着对技能的每次调用而持续递增 - 这意味着只调用功能代码。 localCount同时每次都重新初始化。所以,输出将是:

GlobalCount: 0 LocalCount: 0
GlobalCount: 1 LocalCount: 0
GlobalCount: 2 LocalCount: 0

希望澄清事情!