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);
};
- 这是当用户启动 Alexa 技能时开始执行代码的地方吗?在我看来,这是创建 HelloWorld 对象并启动用户想要的意图的代码部分。
- 这部分是否在每次用户调用意图时执行?比如我在这个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
希望澄清事情!
我正在学习 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);
};
- 这是当用户启动 Alexa 技能时开始执行代码的地方吗?在我看来,这是创建 HelloWorld 对象并启动用户想要的意图的代码部分。
- 这部分是否在每次用户调用意图时执行?比如我在这个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
希望澄清事情!