Module: AlexaRubykit

Defined in:
lib/alexa_rubykit/session_ended_request.rb,
lib/alexa_rubykit.rb,
lib/alexa_rubykit/request.rb,
lib/alexa_rubykit/session.rb,
lib/alexa_rubykit/version.rb,
lib/alexa_rubykit/response.rb,
lib/alexa_rubykit/intent_request.rb,
lib/alexa_rubykit/launch_request.rb

Overview

Session end request class.

Defined Under Namespace

Classes: IntentRequest, LaunchRequest, Request, Response, Session, SessionEndedRequest, Slot

Constant Summary collapse

VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.build_request(json_request) ⇒ Object

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/alexa_rubykit/request.rb', line 16

def self.build_request(json_request)
  raise ArgumentError, 'Invalid Alexa Request.' unless AlexaRubykit.valid_alexa?(json_request)
  @request = nil
  # TODO: We probably need better session handling.
  session = AlexaRubykit::Session.new(json_request['session'])
  case json_request['request']['type']
    when /Launch/
      @request = LaunchRequest.new(json_request['request']['requestId'])
    when /Intent/
      @request = IntentRequest.new(json_request['request']['requestId'], json_request['request']['intent'])
    when /SessionEnded/
      @request = SessionEndedRequest.new(json_request['request']['requestId'], json_request['request']['reason'])
    else
      raise ArgumentError, 'Invalid Request Type.'
  end
  @request.add_session(session)
  @request
end


9
10
11
# File 'lib/alexa_rubykit.rb', line 9

def self.print_json(json)
  p json
end


13
14
15
# File 'lib/alexa_rubykit.rb', line 13

def self.print_version
  p AlexaRubykit::VERSION
end

.valid_alexa?(request_json) ⇒ Boolean

Returns true if all the Alexa request objects are set.

Returns:

  • (Boolean)


18
19
20
21
# File 'lib/alexa_rubykit.rb', line 18

def self.valid_alexa?(request_json)
  !request_json.nil? || !request_json['session'].nil? ||
      !request_json['version'].nil? || !request_json['request'].nil?
end