Class: BetterAlexaRubyKit::Response
- Inherits:
-
Object
- Object
- BetterAlexaRubyKit::Response
- Defined in:
- lib/better_alexa_rubykit/response.rb
Instance Attribute Summary collapse
-
#card ⇒ Object
Returns the value of attribute card.
-
#reprompt ⇒ Object
Returns the value of attribute reprompt.
-
#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_reprompt(speech_text, ssml: false) ⇒ Object
-
#add_session_attribute(key, value) ⇒ Object
Adds a key,value pair to the session object.
- #add_speech(speech_text, ssml: false) ⇒ Object
-
#build_response(session_end = true) ⇒ 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, ssml: false) ⇒ Object
Adds a speech to the object, also returns a outputspeech object.
-
#to_s ⇒ Object
Outputs the version, session object and the response object.
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/better_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/better_alexa_rubykit/response.rb', line 4 def card @card end |
#reprompt ⇒ Object
Returns the value of attribute reprompt.
4 5 6 |
# File 'lib/better_alexa_rubykit/response.rb', line 4 def reprompt @reprompt end |
#response ⇒ Object
Returns the value of attribute response.
4 5 6 |
# File 'lib/better_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/better_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/better_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/better_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/better_alexa_rubykit/response.rb', line 4 def speech @speech end |
#version ⇒ Object
Returns the value of attribute version.
4 5 6 |
# File 'lib/better_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"
32 33 34 35 36 37 38 39 40 |
# File 'lib/better_alexa_rubykit/response.rb', line 32 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] = type || 'Simple' @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.
43 44 45 46 47 |
# File 'lib/better_alexa_rubykit/response.rb', line 43 def add_hash_card(card) card[:type] = 'Simple' if card[:type].nil? @card = card @card end |
#add_reprompt(speech_text, ssml: false) ⇒ Object
22 23 24 25 |
# File 'lib/better_alexa_rubykit/response.rb', line 22 def add_reprompt(speech_text, ssml: false) @reprompt = { "outputSpeech" => build_speech(speech_text, ssml: ssml) } @reprompt end |
#add_session_attribute(key, value) ⇒ Object
Adds a key,value pair to the session object.
14 15 16 |
# File 'lib/better_alexa_rubykit/response.rb', line 14 def add_session_attribute(key, value) @session_attributes[key.to_sym] = value end |
#add_speech(speech_text, ssml: false) ⇒ Object
18 19 20 |
# File 'lib/better_alexa_rubykit/response.rb', line 18 def add_speech(speech_text, ssml: false) @speech = build_speech(speech_text, ssml: ssml) end |
#build_response(session_end = true) ⇒ Object
Builds a response. Takes the version, response and should_end_session variables and builds a JSON object.
77 78 79 80 81 82 83 84 |
# File 'lib/better_alexa_rubykit/response.rb', line 77 def build_response(session_end = true) response_object = build_response_object(session_end) 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.
66 67 68 69 70 71 72 73 |
# File 'lib/better_alexa_rubykit/response.rb', line 66 def build_response_object(session_end = true) @response = Hash.new @response[:outputSpeech] = @speech unless @speech.nil? @response[:card] = @card unless @card.nil? @response[:reprompt] = @reprompt unless session_end && @reprompt.nil? @response[:shouldEndSession] = session_end @response end |
#build_session ⇒ Object
Creates a session object. We pretty much only use this in testing.
56 57 58 59 60 61 |
# File 'lib/better_alexa_rubykit/response.rb', line 56 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, ssml: false) ⇒ Object
Adds a speech to the object, also returns a outputspeech object.
50 51 52 53 |
# File 'lib/better_alexa_rubykit/response.rb', line 50 def say_response(speech, end_session = true, ssml: false) output_speech = add_speech(speech, ssml: ssml) { :outputSpeech => output_speech, :shouldEndSession => end_session } end |
#to_s ⇒ Object
Outputs the version, session object and the response object.
87 88 89 |
# File 'lib/better_alexa_rubykit/response.rb', line 87 def to_s "Version => #{@version}, SessionObj => #{@session}, Response => #{@response}" end |