class AlexaRuby::Alexa
Main processing class, parses request from Amazon Alexa
and initialize new response object
Attributes
request[R]
response[R]
Public Class Methods
new(request, opts)
click to toggle source
Initialize new Alexa
assistant
@param request [Hash] request from Amazon Alexa
web service @param opts [Hash] additional options:
:disable_validations [Boolean] disables request validation if true
# File lib/alexa_ruby/alexa.rb, line 12 def initialize(request, opts) @req = request @opts = opts invalid_request_exception if invalid_request? @request = define_request raise ArgumentError, 'Unknown type of Alexa request' if @request.nil? @request.valid? if ssl_check? @response = Response.new(@request.type, @request.version) end
Private Instance Methods
define_request()
click to toggle source
Initialize proper request object
@return [Object] request object
# File lib/alexa_ruby/alexa.rb, line 50 def define_request case @req[:request][:type] when /Launch/ LaunchRequest.new(@req) when /Intent/ IntentRequest.new(@req) when /SessionEnded/ SessionEndedRequest.new(@req) when /AudioPlayer/, /Playback/, /System/ AudioPlayerRequest.new(@req) end end
invalid_request?()
click to toggle source
Check if it is an invalid request
@return [Boolean]
# File lib/alexa_ruby/alexa.rb, line 36 def invalid_request? @req[:version].nil? || @req[:request].nil? if validations_enabled? end
invalid_request_exception()
click to toggle source
Request structure isn't valid, raise exception
# File lib/alexa_ruby/alexa.rb, line 25 def invalid_request_exception raise ArgumentError, 'Invalid request structure, ' \ 'please, refer to the Amazon Alexa manual: ' \ 'https://developer.amazon.com/public/solutions' \ '/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference' end
ssl_check?()
click to toggle source
Check if we have SSL certificates URL and request signature and need to validate Amazon request
@return [Boolean]
# File lib/alexa_ruby/alexa.rb, line 67 def ssl_check? @request.certificates_chain_url = @opts[:certificates_chain_url] @request.signature = @opts[:request_signature] @request.certificates_chain_url && @request.signature && @request.type != :audio_player end
validations_enabled?()
click to toggle source
Check if validations are enabled
@return [Boolean]
# File lib/alexa_ruby/alexa.rb, line 43 def validations_enabled? !@opts[:disable_validations] || @opts[:disable_validations].nil? end