Class: AlexaRuby::AudioPlayer

Inherits:
Object
  • Object
show all
Defined in:
lib/alexa_ruby/response/audio_player.rb

Overview

AudioPlayer class encapsulates all Alexa audio player directives

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAudioPlayer

Initialize new directive object



10
11
12
# File 'lib/alexa_ruby/response/audio_player.rb', line 10

def initialize
  @directive = {}
end

Instance Attribute Details

#directiveObject

Returns the value of attribute directive.



7
8
9
# File 'lib/alexa_ruby/response/audio_player.rb', line 7

def directive
  @directive
end

Instance Method Details

#build_play_directive(opts) ⇒ Hash

Build an AudioPlayer.Play directive

Parameters:

  • opts (Hash)

    optional request parameters:

    • streaming URL

    • radio station token

    • expected previous station token

    • playback offset

Returns:

  • (Hash)

    AudioPlayer.Play directive

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
29
30
31
32
# File 'lib/alexa_ruby/response/audio_player.rb', line 22

def build_play_directive(opts)
  raise ArgumentError, 'Invalid streaming URL' unless valid_url?(opts[:url])
  token = opts[:token] || SecureRandom.uuid
  offset = opts[:offset] || 0
  @directive[:type] = 'AudioPlayer.Play'
  @directive[:playBehavior] = 'REPLACE_ALL'
  @directive[:audioItem] = { stream: {} }
  @directive[:audioItem][:stream][:url] = opts[:url]
  @directive[:audioItem][:stream][:token] = token
  @directive[:audioItem][:stream][:offsetInMilliseconds] = offset
end

#build_stop_directiveHash

Build AudioPlayer.Stop directive

Returns:

  • (Hash)

    AudioPlayer.Stop directive



37
38
39
# File 'lib/alexa_ruby/response/audio_player.rb', line 37

def build_stop_directive
  @directive[:type] = 'AudioPlayer.Stop'
end