class AlexaRuby::Session

Amazon Alexa user session

Attributes

attributes[R]
end_reason[R]
error[R]
id[R]
state[RW]
user[R]

Public Class Methods

new(session) click to toggle source

Initialize new Session

@param session [Hash] session parameters @raise [ArgumentError] if user session data is absent

# File lib/alexa_ruby/request/base_request/session.rb, line 11
def initialize(session)
  @session = session
  raise ArgumentError, 'Empty user session' if invalid_session?

  @state = @session[:new] ? :new : :old
  @id = @session[:sessionId]
  @attributes = @session[:attributes] || {}
  @user = load_user unless @session[:user].nil?
end

Public Instance Methods

end_reason=(reason) click to toggle source

Set session end reason

@param reason [String] reason type from Amazon Alexa request

# File lib/alexa_ruby/request/base_request/session.rb, line 24
def end_reason=(reason)
  @end_reason =
    case reason
    when 'USER_INITIATED'
      :user_quit
    when 'ERROR'
      :processing_error
    when 'EXCEEDED_MAX_REPROMPTS'
      :user_idle
    end
end
error=(err) click to toggle source

Set error parameters

@param err [Hash] error params

# File lib/alexa_ruby/request/base_request/session.rb, line 39
def error=(err)
  @error = { message: err[:message] }
  @error[:type] =
    case err[:type]
    when 'INVALID_RESPONSE'
      :invalid_alexa_ruby_response
    when 'DEVICE_COMMUNICATION_ERROR'
      :device_error
    when 'INTERNAL_ERROR'
      :runtime_error
    end
end

Private Instance Methods

invalid_session?() click to toggle source

Check if it is an invalid user session

@return [Boolean]

# File lib/alexa_ruby/request/base_request/session.rb, line 57
def invalid_session?
  @session.nil?
end
load_user() click to toggle source

Initialize user parameters

@return [Object] new User object instance

# File lib/alexa_ruby/request/base_request/session.rb, line 64
def load_user
  User.new(@session[:user])
end