编写相同 alexa 函数的不同方式

Different ways of writing the same alexa function

我一直在学习 Codecademy 的 alexa 技能课程,lambda 函数的语法突然发生了变化。以下两个lambda函数有什么区别,我应该使用哪个?

我在 Codecademy 论坛上提问,没有任何回应。

// First way
const LaunchRequestHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
  },
  handle(handlerInput) {
    return handlerInput.responseBuilder
      .speak("Hello, Welcome to Codecademy. What is your name?")
      .reprompt("Welcome. What is your name?")
      .getResponse();
  },
};
...
exports.handler = skillBuilder
  .addRequestHandlers(
    LaunchRequestHandler,
    ...
  )
  .lambda();
// Second way
var handlers = {
  'LaunchRequest': function() {
    this.response
        .speak("Hello, Welcome to Codecademy. What is your name?")
        .listen("Welcome. What is your name?");
    this.emit(':responseReady');
  },
...
}
...
exports.handler = function(event, context, callback){
    var alexa = Alexa.handler(event, context);
    alexa.registerHandlers(handlers);
    alexa.execute();
};

两种变体 运行 都正确,但我主要看到代码以第一种方式编写,课程采用第二种格式。

第一个是用alexa-sdk v2写的,第二个是用alexa-sdk v1写的。它们的工作方式相同,唯一的区别是代码的结构。 v2 在选择处理程序的方式上使用了一些不同的方法,并且有 canHandle 方法来做到这一点。

如果我是你,我会使用 v2 工作并培养我的技能,因为它更新,它将支持最新的功能,而且我认为它比 v1 结构更好,更灵活。