class AlexaWebService::Request

Attributes

access_token[R]
api_access_token[R]
api_endpoint[R]
application_id[R]
attributes[RW]
device_id[R]
intent_name[R]
request_hash[R]
request_id[R]
request_type[R]
session_new[R]
slots[R]
timestamp[R]
user_id[R]

Public Class Methods

new(request_hash) click to toggle source
# File lib/alexa_web_service/request.rb, line 9
def initialize(request_hash)
  @request_hash     = request_hash
  @api_access_token = request_hash["context"]["System"]["apiAccessToken"]
  @api_endpoint     = request_hash["context"]["System"]["apiEndpoint"]
  @device_id        = request_hash["context"]["System"]["device"]["deviceId"]
  @request_id       = request_hash["request"]["requestId"]
  @request_type     = request_hash["request"]["type"]
  @timestamp        = request_hash["request"]["timestamp"]
  @session_new      = request_hash["session"]["new"]
  @user_id          = request_hash["session"]["user"]["userId"]
  @access_token     = request_hash["session"]["user"]["accessToken"]
  @application_id   = request_hash["session"]["application"]["applicationId"]
  @intent_name      = get_intent_name
  @slots            = get_slots
  @attributes       = get_attributes
end

Public Instance Methods

filled_slots() click to toggle source
# File lib/alexa_web_service/request.rb, line 26
def filled_slots
  @slots.select { |slot| slot != nil} rescue []
end
intent_request?() click to toggle source
# File lib/alexa_web_service/request.rb, line 30
def intent_request?
  request_type == "IntentRequest"
end
launch_request?() click to toggle source
# File lib/alexa_web_service/request.rb, line 34
def launch_request?
  request_type == "LaunchRequest"
end
session_ended_request?() click to toggle source
# File lib/alexa_web_service/request.rb, line 44
def session_ended_request?
  request_type == "SessionEndedRequest"
end
session_new?() click to toggle source
# File lib/alexa_web_service/request.rb, line 48
def session_new?
  session_new
end
slot_hash() click to toggle source
# File lib/alexa_web_service/request.rb, line 38
def slot_hash
  if request_hash["request"]["intent"]
    request_hash["request"]["intent"]["slots"]
  end
end

Private Instance Methods

build_struct(hash) click to toggle source
# File lib/alexa_web_service/request.rb, line 70
def build_struct(hash)
  if hash.nil? || hash.empty?
    nil
  else
    slot_names = hash.keys.map {|k| k.to_sym.downcase }
    slot_values = hash.values.map { |v| v["value"] }
    Struct.new(*slot_names).new(*slot_values)
  end
end
get_attributes() click to toggle source
# File lib/alexa_web_service/request.rb, line 66
def get_attributes
  request_hash["session"]["attributes"] ? request_hash["session"]["attributes"] : {} 
end
get_intent_name() click to toggle source
# File lib/alexa_web_service/request.rb, line 54
def get_intent_name
  if request_hash["request"]["intent"]
    request_hash["request"]["intent"]["name"]
  end
end
get_slots() click to toggle source
# File lib/alexa_web_service/request.rb, line 60
def get_slots
  if request_hash["request"]["intent"]
    build_struct(request_hash["request"]["intent"]["slots"])
  end
end