class AlexaRuby::IntentRequest

IntentRequest class implements Alexa “IntentRequest” request type

Attributes

confirmation_status[R]
dialog_state[R]
intent_name[R]
slots[R]

Public Class Methods

new(request) click to toggle source

Initialize new Intent request

@param request [Hash] valid request from Amazon Alexa service

Calls superclass method AlexaRuby::BaseRequest::new
# File lib/alexa_ruby/request/intent_request.rb, line 9
def initialize(request)
  @type = :intent
  super
  if @req[:request][:intent].nil?
    raise ArgumentError, 'Intent must be defined'
  end
  @intent = @req[:request][:intent]
  @dialog_state = define_dialog_state
  @intent_name = @intent[:name]
  @confirmation_status = define_confirmation_status
  parse_slots unless @intent[:slots].nil?
end

Private Instance Methods

define_confirmation_status() click to toggle source

Define user confirmation status

@return [Symbol] current confirmation status

# File lib/alexa_ruby/request/intent_request.rb, line 41
def define_confirmation_status
  case @intent[:confirmationStatus]
  when 'NONE'
    :unknown
  when 'CONFIRMED'
    :confirmed
  when 'DENIED'
    :denied
  end
end
define_dialog_state() click to toggle source

Define current dialog state

@return [Symbol] current dialog state

# File lib/alexa_ruby/request/intent_request.rb, line 27
def define_dialog_state
  case @req[:request][:dialogState]
  when 'STARTED'
    :started
  when 'IN_PROGRESS'
    :in_progress
  when 'COMPLETED'
    :completed
  end
end
parse_slots() click to toggle source

Parse slots and initialize each slot

# File lib/alexa_ruby/request/intent_request.rb, line 53
def parse_slots
  @slots = []
  @intent[:slots].each do |_, v|
    @slots << Slot.new(v)
  end
end