Да, это возможно.Единственное, что вам нужно, это вспомогательная функция, которая создает все обработчики.Затем используйте эту вспомогательную функцию для registerHandlers
.
Что-то вроде этого:
const getHandlers = (request) => {
const intentName = request.intent.name;
return {
'LaunchRequest': function () {
this.emit(':ask', welcomeOutput, welcomeReprompt);
},
'AMAZON.HelpIntent': function () {
speechOutput = 'Placeholder response for AMAZON.HelpIntent.';
reprompt = '';
this.emit(':ask', speechOutput, reprompt);
},
'AMAZON.CancelIntent': function () {
speechOutput = 'Placeholder response for AMAZON.CancelIntent';
this.emit(':tell', speechOutput);
},
'AMAZON.StopIntent': function () {
speechOutput = 'Placeholder response for AMAZON.StopIntent.';
this.emit(':tell', speechOutput);
},
'SessionEndedRequest': function () {
speechOutput = '';
//this.emit(':saveState',true);//uncomment to save attributes to db on session end
this.emit(':tell', speechOutput);
},
[intentName]: function () {
speechOutput = '';
speechOutput = "Here is the output";
this.emit(":ask", speechOutput, speechOutput);
},
};
};
exports.handler = (event, context) => {
const alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(getHandlers(event.request));
alexa.execute();
};
Отказ от ответственности : не проверено
Редактировать:
Но я думаю, что не рекомендуется переписывать все ваши обработчики.Вы должны определенно использовать встроенные намерения, а не свое намерение «управлять ими всеми».Соответственно, вы должны сделать небольшое изменение в getHandlers
:
const getHandlers = (request) => {
const intentName = request.intent.name;
const handlers = {
'LaunchRequest': function () {
this.emit(':ask', welcomeOutput, welcomeReprompt);
},
'AMAZON.HelpIntent': function () {
speechOutput = 'Placeholder response for AMAZON.HelpIntent.';
reprompt = '';
this.emit(':ask', speechOutput, reprompt);
},
'AMAZON.CancelIntent': function () {
speechOutput = 'Placeholder response for AMAZON.CancelIntent';
this.emit(':tell', speechOutput);
},
'AMAZON.StopIntent': function () {
speechOutput = 'Placeholder response for AMAZON.StopIntent.';
this.emit(':tell', speechOutput);
},
'SessionEndedRequest': function () {
speechOutput = '';
//this.emit(':saveState',true);//uncomment to save attributes to db on session end
this.emit(':tell', speechOutput);
},
};
if (!handlers[intentName]) {
handlers[intentName] = function () {
speechOutput = '';
speechOutput = "Here is the output";
this.emit(":ask", speechOutput, speechOutput);
};
}
return handlers;
};