Module: AlexaRuby

Defined in:
lib/alexa_ruby.rb,
lib/alexa_ruby/request.rb,
lib/alexa_ruby/session.rb,
lib/alexa_ruby/version.rb,
lib/alexa_ruby/response.rb,
lib/alexa_ruby/response/card.rb,
lib/alexa_ruby/response/audio_player.rb,
lib/alexa_ruby/request/intent_request.rb,
lib/alexa_ruby/request/launch_request.rb,
lib/alexa_ruby/request/intent_request/slot.rb,
lib/alexa_ruby/request/audio_player_request.rb,
lib/alexa_ruby/request/session_ended_request.rb

Overview

Session end request class.

Defined Under Namespace

Classes: AudioPlayer, AudioPlayerRequest, Card, IntentRequest, LaunchRequest, Request, Response, Session, SessionEndedRequest, Slot

Constant Summary collapse

VERSION =
'0.2.0'.freeze

Class Method Summary collapse

Class Method Details

.build_request(json_request) ⇒ Object

Builds a new request for Alexa

Parameters:

  • json_request (JSON)

    json request from Amazon Alexa

Returns:

  • (Object)

    instance of request class

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
37
38
39
40
# File 'lib/alexa_ruby.rb', line 30

def build_request(json_request)
  json = load_json(json_request)

  unless AlexaRuby.valid_request?(json)
    raise ArgumentError, 'Invalid Alexa Request'
  end

  @request = define_request(json)
  raise ArgumentError, 'Invalid Request Type' if @request.nil?
  @request
end

.define_request(json) ⇒ Object

Define proper request class and instantinate it

Parameters:

  • json (JSON)

    json request from Amazon Alexa

Returns:

  • (Object)

    instance of request class



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/alexa_ruby.rb', line 60

def define_request(json)
  case json[:request][:type]
  when /Launch/
    LaunchRequest.new(json)
  when /Intent/
    IntentRequest.new(json)
  when /SessionEnded/
    SessionEndedRequest.new(json)
  when /AudioPlayer/
    AudioPlayerRequest.new(json)
  end
end

Prints some JSON

Parameters:

  • json (JSON)

    some JSON object



17
18
19
# File 'lib/alexa_ruby.rb', line 17

def print_json(json)
  p json
end

Prints the Gem version



22
23
24
# File 'lib/alexa_ruby.rb', line 22

def print_version
  p AlexaRuby::VERSION
end

.valid_request?(json) ⇒ Boolean

Check if it is a valid Amazon Alexa request

Parameters:

  • json (JSON)

    json request from Amazon Alexa

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
# File 'lib/alexa_ruby.rb', line 46

def valid_request?(json)
  session =
    if json[:request].nil? || /AudioPlayer/.match(json[:request][:type])
      true
    else
      !json[:session].nil?
    end
  !json.nil? && session && !json[:version].nil? && !json[:request].nil?
end