Class: Alexa::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/alexa/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ Request

Returns a new instance of Request.



5
6
7
8
9
10
11
12
13
14
# 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

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



3
4
5
# File 'lib/alexa/request.rb', line 3

def body
  @body
end

#paramsObject

Returns the value of attribute params.



3
4
5
# File 'lib/alexa/request.rb', line 3

def params
  @params
end

Instance Method Details

#application_idObject



16
17
18
# File 'lib/alexa/request.rb', line 16

def application_id
  session.application_id
end

#cancel_request?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/alexa/request.rb', line 44

def cancel_request?
  intent_request? && intent_name == "AMAZON.CancelIntent"
end

#dialog_stateObject



71
72
73
# File 'lib/alexa/request.rb', line 71

def dialog_state
  params["request"]["dialogState"]
end

#help_request?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/alexa/request.rb', line 40

def help_request?
  intent_request? && intent_name == "AMAZON.HelpIntent"
end

#intent_nameObject



79
80
81
82
# File 'lib/alexa/request.rb', line 79

def intent_name
  return nil if !intent_request?
  params["request"]["intent"]["name"]
end

#intent_request?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/alexa/request.rb', line 28

def intent_request?
  type == "IntentRequest"
end

#launch_request?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/alexa/request.rb', line 32

def launch_request?
  type == "LaunchRequest"
end

#localeObject



84
85
86
# File 'lib/alexa/request.rb', line 84

def locale
  params["request"]["locale"]
end

#sessionObject



48
49
50
# File 'lib/alexa/request.rb', line 48

def session
  @_session ||= Alexa::Session.new(params["session"].dup)
end

#session_ended_request?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/alexa/request.rb', line 36

def session_ended_request?
  type == "SessionEndedRequest"
end

#slotsObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 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

#typeObject



24
25
26
# File 'lib/alexa/request.rb', line 24

def type
  params["request"]["type"]
end

#user_idObject



20
21
22
# File 'lib/alexa/request.rb', line 20

def user_id
  session.user_id
end

#valid?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/alexa/request.rb', line 75

def valid?
  Rails.configuration.x.alexa.skill_ids.include?(application_id)
end