Class: Alexa::Request
- Inherits:
-
Object
- Object
- Alexa::Request
- Defined in:
- lib/alexa/request.rb
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#params ⇒ Object
Returns the value of attribute params.
Instance Method Summary collapse
- #application_id ⇒ Object
- #cancel_request? ⇒ Boolean
- #dialog_state ⇒ Object
- #help_request? ⇒ Boolean
-
#initialize(request) ⇒ Request
constructor
A new instance of Request.
- #intent_name ⇒ Object
- #intent_request? ⇒ Boolean
- #launch_request? ⇒ Boolean
- #locale ⇒ Object
- #session ⇒ Object
- #session_ended_request? ⇒ Boolean
- #slots ⇒ Object
- #type ⇒ Object
- #user_id ⇒ Object
- #valid? ⇒ Boolean
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
#body ⇒ Object
Returns the value of attribute body.
3 4 5 |
# File 'lib/alexa/request.rb', line 3 def body @body end |
#params ⇒ Object
Returns the value of attribute params.
3 4 5 |
# File 'lib/alexa/request.rb', line 3 def params @params end |
Instance Method Details
#application_id ⇒ Object
16 17 18 |
# File 'lib/alexa/request.rb', line 16 def application_id session.application_id end |
#cancel_request? ⇒ Boolean
44 45 46 |
# File 'lib/alexa/request.rb', line 44 def cancel_request? intent_request? && intent_name == "AMAZON.CancelIntent" end |
#dialog_state ⇒ Object
71 72 73 |
# File 'lib/alexa/request.rb', line 71 def dialog_state params["request"]["dialogState"] end |
#help_request? ⇒ Boolean
40 41 42 |
# File 'lib/alexa/request.rb', line 40 def help_request? intent_request? && intent_name == "AMAZON.HelpIntent" end |
#intent_name ⇒ Object
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
28 29 30 |
# File 'lib/alexa/request.rb', line 28 def intent_request? type == "IntentRequest" end |
#launch_request? ⇒ Boolean
32 33 34 |
# File 'lib/alexa/request.rb', line 32 def launch_request? type == "LaunchRequest" end |
#locale ⇒ Object
84 85 86 |
# File 'lib/alexa/request.rb', line 84 def locale params["request"]["locale"] end |
#session ⇒ Object
48 49 50 |
# File 'lib/alexa/request.rb', line 48 def session @_session ||= Alexa::Session.new(params["session"].dup) end |
#session_ended_request? ⇒ Boolean
36 37 38 |
# File 'lib/alexa/request.rb', line 36 def session_ended_request? type == "SessionEndedRequest" end |
#slots ⇒ Object
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 |
#type ⇒ Object
24 25 26 |
# File 'lib/alexa/request.rb', line 24 def type params["request"]["type"] end |
#user_id ⇒ Object
20 21 22 |
# File 'lib/alexa/request.rb', line 20 def user_id session.user_id end |
#valid? ⇒ Boolean
75 76 77 |
# File 'lib/alexa/request.rb', line 75 def valid? Rails.configuration.x.alexa.skill_ids.include?(application_id) end |