Class: AlexaRubykit::Response
- Inherits:
-
Object
- Object
- AlexaRubykit::Response
- Defined in:
- lib/alexa_rubykit/response.rb
Instance Attribute Summary collapse
-
#card ⇒ Object
Returns the value of attribute card.
-
#response ⇒ Object
Returns the value of attribute response.
-
#response_object ⇒ Object
Returns the value of attribute response_object.
-
#session ⇒ Object
Returns the value of attribute session.
-
#session_attributes ⇒ Object
Returns the value of attribute session_attributes.
-
#speech ⇒ Object
Returns the value of attribute speech.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
-
#add_card(type = nil, title = nil, subtitle = nil, content = nil) ⇒ Object
“type”: “string”, “title”: “string”, “subtitle”: “string”, “content”: “string”.
-
#add_hash_card(card) ⇒ Object
The JSON Spec says order shouldn’t matter.
-
#add_session_attribute(key, value) ⇒ Object
Adds a key,value pair to the session object.
- #add_speech(speech_text) ⇒ Object
-
#build_response ⇒ Object
Builds a response.
-
#build_response_object(session_end = true) ⇒ Object
The response object (with outputspeech, cards and session end) Should rename this, but Amazon picked their names.
-
#build_session ⇒ Object
Creates a session object.
-
#initialize(version = '1.0') ⇒ Response
constructor
Every response needs a shouldendsession and a version attribute We initialize version to 1.0, use add_version to set your own.
-
#say_response(speech, end_session = true) ⇒ Object
Adds a speech to the object, also returns a outputspeech object.
-
#to_s ⇒ Object
TODO: Update this.
Constructor Details
#initialize(version = '1.0') ⇒ Response
Every response needs a shouldendsession and a version attribute We initialize version to 1.0, use add_version to set your own.
8 9 10 11 |
# File 'lib/alexa_rubykit/response.rb', line 8 def initialize(version = '1.0') @session_attributes = Hash.new @version = version end |
Instance Attribute Details
#card ⇒ Object
Returns the value of attribute card.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def card @card end |
#response ⇒ Object
Returns the value of attribute response.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def response @response end |
#response_object ⇒ Object
Returns the value of attribute response_object.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def response_object @response_object end |
#session ⇒ Object
Returns the value of attribute session.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def session @session end |
#session_attributes ⇒ Object
Returns the value of attribute session_attributes.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def session_attributes @session_attributes end |
#speech ⇒ Object
Returns the value of attribute speech.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def speech @speech end |
#version ⇒ Object
Returns the value of attribute version.
4 5 6 |
# File 'lib/alexa_rubykit/response.rb', line 4 def version @version end |
Instance Method Details
#add_card(type = nil, title = nil, subtitle = nil, content = nil) ⇒ Object
“type”: “string”,
"title": "string",
"subtitle": "string",
"content": "string"
27 28 29 30 31 32 33 34 35 |
# File 'lib/alexa_rubykit/response.rb', line 27 def add_card(type = nil, title = nil , subtitle = nil, content = nil) # A Card must have a type which the default is Simple. @card = Hash.new() @card[:type] = 'Simple' if type.nil? @card[:title] = title unless title.nil? @card[:subtitle] = subtitle unless subtitle.nil? @card[:content] = content unless content.nil? @card end |
#add_hash_card(card) ⇒ Object
The JSON Spec says order shouldn’t matter.
38 39 40 41 42 |
# File 'lib/alexa_rubykit/response.rb', line 38 def add_hash_card(card) card[:type] = 'Simple' if card[:type].nil? @card = card @card end |
#add_session_attribute(key, value) ⇒ Object
Adds a key,value pair to the session object.
14 15 16 |
# File 'lib/alexa_rubykit/response.rb', line 14 def add_session_attribute(key, value) @session_attributes[key.to_sym] = value end |
#add_speech(speech_text) ⇒ Object
18 19 20 21 |
# File 'lib/alexa_rubykit/response.rb', line 18 def add_speech(speech_text) @speech = { :type => 'PlainText', :text => speech_text } @speech end |
#build_response ⇒ Object
Builds a response. Takes the version, response and should_end_session variables and builds a JSON object.
72 73 74 75 76 77 78 79 |
# File 'lib/alexa_rubykit/response.rb', line 72 def build_response response_object = build_response_object response = Hash.new response[:version] = @version response[:sessionAttributes] = @session_attributes unless @session_attributes.empty? response[:response] = response_object response.to_json end |
#build_response_object(session_end = true) ⇒ Object
The response object (with outputspeech, cards and session end) Should rename this, but Amazon picked their names. The only mandatory field is end_session which we default to true.
62 63 64 65 66 67 68 |
# File 'lib/alexa_rubykit/response.rb', line 62 def build_response_object(session_end = true) @response = Hash.new @response[:outputSpeech] = @speech unless @speech.nil? @response[:card] = @card unless @card.nil? @response[:shouldEndSession] = session_end @response end |
#build_session ⇒ Object
Creates a session object. We pretty much only use this in testing.
52 53 54 55 56 57 |
# File 'lib/alexa_rubykit/response.rb', line 52 def build_session # If it's empty assume user doesn't need session attributes. @session_attributes = Hash.new if @session_attributes.nil? @session = { :sessionAttributes => @session_attributes } @session end |
#say_response(speech, end_session = true) ⇒ Object
Adds a speech to the object, also returns a outputspeech object.
45 46 47 48 |
# File 'lib/alexa_rubykit/response.rb', line 45 def say_response(speech, end_session = true) output_speech = add_speech(speech) { :outputSpeech => output_speech, :shouldEndSession => end_session } end |
#to_s ⇒ Object
TODO: Update this.
82 83 84 |
# File 'lib/alexa_rubykit/response.rb', line 82 def to_s "Version => #{@version}, SessionObj => #{@session}, Response => #{@response}" end |