class Alexa::IntentHandlers::Base
Attributes
context[RW]
Public Class Methods
_required_slot_names()
click to toggle source
Lets you set required_slot_names
per subclass
class IntentHandlers::NewIntent < IntentHandlers::Base
required_slot_names :Function, :CareerLevel
end
handler = IntentHandlers::NewIntent.new handler.required_slot_names # => [:Function, :CareerLevel]
# File lib/alexa/intent_handlers/base.rb, line 18 def _required_slot_names @_required_slot_names ||= [] end
inherited(subclass)
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 5 def inherited(subclass) subclass.instance_variable_set("@_required_slot_names", _required_slot_names.clone) end
new(alexa_context)
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 29 def initialize(alexa_context) @context = alexa_context end
required_slot_names(*names)
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 22 def required_slot_names(*names) @_required_slot_names = names.map(&:to_s) end
Public Instance Methods
handle()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 37 def handle raise "Override .handle" end
intent_usage_count()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 57 def intent_usage_count @_usage_count ||= context.user.usage_count_for(intent_name: request.intent_name) end
request()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 33 def request context.request end
response()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 45 def response @_response ||= Alexa::Response.new(intent: self) end
say_welcome?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 49 def say_welcome? @say_welcome == true end
session()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 41 def session request.session end
slots()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 53 def slots request.slots end
Protected Instance Methods
audio_supported?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 140 def audio_supported? context.device.audio_supported? end
bye_response()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 128 def bye_response @_bye_response ||= Alexa::Responses::Bye.new(intent: self) end
delegate_response()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 124 def delegate_response @_delegate_response ||= Alexa::Responses::Delegate.new end
dialog_complete?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 98 def dialog_complete? dialog_state == "COMPLETED" end
dialog_state()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 106 def dialog_state request.dialog_state end
empty_slots()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 72 def empty_slots @_empty_slots ||= slots.select { |name, slot| slot.value.nil? } end
has_all_slots?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 63 def has_all_slots? empty_slots.empty? end
has_required_slots?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 67 def has_required_slots? non_empty_slot_names = non_empty_slots.map { |_, s| s.name } (required_slot_names - non_empty_slot_names).empty? end
has_unmatched_slots?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 102 def has_unmatched_slots? unmatched_slots.any? end
intent_confirmed?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 88 def intent_confirmed? # TODO: Move this to Alexa::Request request.params["request"]["intent"]["confirmationStatus"] == "CONFIRMED" end
intent_denied?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 93 def intent_denied? # TODO: Move this to Alexa::Request request.params["request"]["intent"]["confirmationStatus"] == "DENIED" end
non_empty_slots()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 76 def non_empty_slots @_non_empty_slots ||= slots.select { |name, slot| !slot.value.nil? } end
required_slot_names()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 84 def required_slot_names self.class._required_slot_names end
say_welcome!()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 132 def say_welcome! @say_welcome = true end
sorry_response()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 110 def sorry_response { "version": "1.0", sessionAttributes: session, "response": { "outputSpeech": { "type": "PlainText", "ssml": "Sorry! Looks like I couldn't process your request, may be try something else?" }, "shouldEndSession": false } } end
unmatched_slots()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 80 def unmatched_slots @_unmatched_slots ||= slots.select { |_, slot| slot.bad_match? } end
video_supported?()
click to toggle source
# File lib/alexa/intent_handlers/base.rb, line 136 def video_supported? context.device.video_supported? end