Вы можете воспользоваться преимуществом конечного автомата в Alexa, я бы предложил иметь другое состояние, помимо обычного по умолчанию, чтобы там был StopIntent. В этом случае вы можете переключиться в это состояние, когда воспроизводите звук, и только тогда ваше конкретное поведение Stop будет работать, там вы можете вернуться в обычное состояние, которое не будет иметь поведения по умолчанию для вашего навыка, поэтому оно будет работать по умолчанию один от самой Алексы, закрывающей ваше умение.
В этом коде вы можете получить базовое представление о том, как это может работать, хотя наверняка чего-то не хватает, но важными являются 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();
}
В Интернете есть много руководств по этому поводу, так что вы можете найти лучшие идеи о том, как этим воспользоваться.
person
Edwin
schedule
22.09.2018