class AlexaToolbox::Request

Echo can send 3 types of requests

Attributes

audioplayer[R]
cause[R]
context[R]
error[R]
intent[R]
json[R]
locale[R]
options[R]
request_id[R]
session[R]
type[R]
version[R]

Public Class Methods

default_options() click to toggle source
# File lib/alexa_toolbox/request.rb, line 15
def self.default_options
  @default_options ||= {
    :application_id => ''
  }
end
new(json_request, options = {}) click to toggle source
# File lib/alexa_toolbox/request.rb, line 21
def initialize(json_request, options = {})
  @options = options if options.key?(:application_id)

  @request_id = json_request[:request][:requestId]
  raise ArgumentError, 'Request ID not present' if @request_id.nil?
  @version = json_request.key?(:version) ? json_request[:version] : ""
  @locale = json_request.key?(:request) && json_request[:request].key?(:locale) ? json_request[:request][:locale] : ""
  @error = json_request.key?(:request) && json_request[:request].key?(:error) ? json_request[:request][:error] : ""
  @cause = json_request.key?(:request) && json_request[:request].key?(:cause) ? json_request[:request][:cause] : ""
  @json   = json_request
  @type = json_request[:request][:type][0..10] == "AudioPlayer" ? "AudioPlayer" : json_request[:request][:type]

  @intent = @type == "IntentRequest" ? AlexaToolbox::Intent.new(json_request[:request][:intent]) : nil
  @audioplayer = @type == "AudioPlayer" ? AlexaToolbox::AudioPlayer.new(json_request[:request]) : nil
  @session = json_request.key?(:session) ? AlexaToolbox::Session.new(json_request[:session]) : nil
  @context = json_request.key?(:context) ? AlexaToolbox::Context.new(json_request[:context]) : nil
end

Public Instance Methods

user_terminated?() click to toggle source
# File lib/alexa_toolbox/request.rb, line 43
def user_terminated?
  if self.type != "SessionEndedRequest"
    return nil
  end
  return self.json[:request][:reason] == "USER_INITIATED"
end
valid?() click to toggle source
# File lib/alexa_toolbox/request.rb, line 39
def valid?
  self.options[:application_id] && ((!self.session.nil? && self.options[:application_id] == self.session.application_id) || (!self.context.nil? && self.options[:application_id] == self.context.application_id))
end