Вы можете воспользоваться конечным автоматом в Alexa, я бы посоветовал иметь другое состояние, кроме обычного по умолчанию, чтобы там был StopIntent.В этом случае вы можете переключиться в это состояние, когда вы проигрываете звук, и только тогда ваше конкретное поведение Stop будет работать, там вы можете вернуться в обычное состояние, которое не будет иметь поведения по умолчанию для вашего навыка, поэтому он будет работать по умолчаниюодин из самого Alexa, закрывающий ваш навык.
В этом коде вы можете получить общее представление о том, как это может работать, хотя наверняка чего-то не хватает, но важными являются this.handler.state
, который контролирует вкакое состояние является сеансом в данный момент, и Alexa.CreateStateHandler(state, intents)
, который получает в качестве параметра имя определенного состояния и конкретное поведение для намерений в этом состоянии.
const Alexa = require('alexa-sdk');
const defaultHandlers = {
PlayIntent: function() {
// move to state 'PLAY'
this.handler.state = 'PLAY'
// Code to play
}
}
const playingHanders = Alexa.CreateStateHandler('PLAY', {
PlayIntent: function() {
// Code to play
},
'AMAZON.StopIntent': function() {
//output to available screen
makeTemplate.call(this, 'stop');
// move to default state
this.handler.state = ''
this.response.speak('Ok. I sent a practice tip to your Alexa app.').audioPlayerStop();
this.emit(':responseReady');
this.response.shouldEndSession(true);
}
})
module.exports.skill = (event, context, callback) => {
const alexa = Alexa.handler(event, context, callback);
alexa.appId = APP_ID
alexa.registerHandlers(defaultHandlers, playingHanders)
alexa.execute();
}
В интернете есть много учебных пособий, чтобы вы могли найти лучшие идеи о том, как воспользоваться этим.