Class: AlexaRubykit::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/alexa_rubykit/response.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#cardObject

Returns the value of attribute card.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def card
  @card
end

#responseObject

Returns the value of attribute response.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def response
  @response
end

#response_objectObject

Returns the value of attribute response_object.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def response_object
  @response_object
end

#sessionObject

Returns the value of attribute session.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def session
  @session
end

#session_attributesObject

Returns the value of attribute session_attributes.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def session_attributes
  @session_attributes
end

#speechObject

Returns the value of attribute speech.



4
5
6
# File 'lib/alexa_rubykit/response.rb', line 4

def speech
  @speech
end

#versionObject

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_responseObject

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_sessionObject

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_sObject

TODO: Update this.



82
83
84
# File 'lib/alexa_rubykit/response.rb', line 82

def to_s
  "Version => #{@version}, SessionObj => #{@session}, Response => #{@response}"
end