This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NextIntentHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = input.matches( | |
intentName("AMAZON.NextIntent") | |
.or(Predicates.requestType(NextCommandIssuedRequest::class.java)) | |
) | |
override fun handle(input: HandlerInput): Optional<Response> {...} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun HandlerInput.buildPlayResponse(audioStream: AudioStream): Optional<Response> { | |
val stream = Stream.builder() | |
.withOffsetInMilliseconds(audioStream.offsetInMilliseconds) | |
.withExpectedPreviousToken(null) | |
.withToken(audioStream.streamToken) | |
.withUrl(audioStream.file) | |
.build() | |
val audioItem = AudioItem.builder() | |
.withMetadata( | |
AudioItemMetadata.builder() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NextIntentHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = input.matches(intentName("AMAZON.NextIntent")) | |
override fun handle(input: HandlerInput) = | |
input.attributesManager.persistentAttributes["lastPlayedAudio"]?.let { | |
PlayAudioResponseBuilder.buildNewsResponse( | |
input, | |
Audio(it.toAudio().getNextDate()) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NextAndPreviousIntentHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = input.matches( | |
Predicates.intentName("AMAZON.NextIntent") | |
.or(Predicates.intentName("AMAZON.PreviousIntent")) | |
) | |
override fun handle(input: HandlerInput) = input.responseBuilder | |
.withSpeech(Translations.getMessage(input.getLanguage(), Translations.TranslationKey.NO_FEATURE)) | |
.addAudioPlayerStopDirective() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class StartOverIntentHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = | |
input.matches(Predicates.intentName("AMAZON.StartOverIntent")) | |
override fun handle(input: HandlerInput): Optional<Response> { | |
return input.attributesManager.persistentAttributes["lastPlayedAudio"]?.let { | |
input.playAudio(it.toAudio().url) | |
} ?: input.emptyResponse() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun HandlerInput.enqueuAudio(audioUrl: String) = responseBuilder | |
.addAudioPlayerPlayDirective( | |
PlayBehavior.ENQUEUE, | |
0L, | |
null, | |
"token", | |
audioUrl | |
) | |
.build() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun HandlerInput.buildResponse(audioUrl: String, offsetInMillis: Long? = 0L) = responseBuilder | |
.addAudioPlayerPlayDirective( | |
PlayBehavior.REPLACE_ALL, | |
offsetInMillis, | |
null, | |
"token", | |
audioUrl | |
) | |
.build() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PlaybackStoppedHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = | |
input.matches(Predicates.requestType(PlaybackStoppedRequest::class.java)) | |
override fun handle(input: HandlerInput): Optional<Response> { | |
val request = input.requestEnvelope.request | |
val intentRequest = request as PlaybackStoppedRequest | |
val lastPlayedAudio = JacksonSerializer().deserialize( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CancelAndStopIntentHandler : RequestHandler { | |
override fun canHandle(input: HandlerInput) = | |
input.matches( | |
intentName("AMAZON.StopIntent") | |
.or(intentName("AMAZON.CancelIntent")) | |
.or(intentName("AMAZON.PauseIntent")) | |
) | |
override fun handle(input: HandlerInput) = input.responseBuilder |
NewerOlder