class Alexa::Request

Attributes

body[RW]
params[RW]

Public Class Methods

new(request) click to toggle source
# File lib/alexa/request.rb, line 5
def initialize(request)
  @req = request
  @body = request.body
  @params = if request.body.size > 0
              request.body.rewind
              JSON.parse(request.body.read).with_indifferent_access
            else
              {}
             end
end

Public Instance Methods

application_id() click to toggle source
# File lib/alexa/request.rb, line 16
def application_id
  session.application_id
end
cancel_request?() click to toggle source
# File lib/alexa/request.rb, line 44
def cancel_request?
  intent_request? && intent_name == "AMAZON.CancelIntent"
end
dialog_state() click to toggle source
# File lib/alexa/request.rb, line 71
def dialog_state
  params["request"]["dialogState"]
end
help_request?() click to toggle source
# File lib/alexa/request.rb, line 40
def help_request?
  intent_request? && intent_name == "AMAZON.HelpIntent"
end
intent_name() click to toggle source
# File lib/alexa/request.rb, line 79
def intent_name
  return nil if !intent_request?
  params["request"]["intent"]["name"]
end
intent_request?() click to toggle source
# File lib/alexa/request.rb, line 28
def intent_request?
  type == "IntentRequest"
end
launch_request?() click to toggle source
# File lib/alexa/request.rb, line 32
def launch_request?
  type == "LaunchRequest"
end
locale() click to toggle source
# File lib/alexa/request.rb, line 84
def locale
  params["request"]["locale"]
end
session() click to toggle source
# File lib/alexa/request.rb, line 48
def session
  @_session ||= Alexa::Session.new(params["session"].dup)
end
session_ended_request?() click to toggle source
# File lib/alexa/request.rb, line 36
def session_ended_request?
  type == "SessionEndedRequest"
end
slots() click to toggle source
# File lib/alexa/request.rb, line 52
def slots
  @_slots ||= begin
                if intent_request?
                  return [] if help_request?
                  return [] if cancel_request?

                  params["request"]["intent"]["slots"]
                    .inject(HashWithIndifferentAccess.new) do |hash, slot|
                    name = slot[0]
                    data = slot[1]
                    hash[name] = Alexa::Slot.new(data)
                    hash
                  end
                else
                  []
                end
              end
end
type() click to toggle source
# File lib/alexa/request.rb, line 24
def type
  params["request"]["type"]
end
user_id() click to toggle source
# File lib/alexa/request.rb, line 20
def user_id
  session.user_id
end
valid?() click to toggle source
# File lib/alexa/request.rb, line 75
def valid?
  Alexa.configuration.skill_ids.include?(application_id)
end