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

HelloWorld Alexa Skill - where does it start executing?

我正在学习 javascript 以及构建 Alexa Skill 的基础知识。亚马逊在此处提供了一个简单的 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 技能时开始执行代码的地方吗?在我看来,这是创建 HelloWorld 对象并启动用户想要的意图的代码部分。
  2. 这部分是否在每次用户调用意图时执行?比如我在这个Alexa Skill中问了两次Alexa "help",这块代码会被调用两次吗?我来自 Java,那里有一个 main 方法并且仍然掌握 javascript。

是的,分配给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 每次都是 re-initialized。所以,输出将是:

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

希望澄清事情!