Class: Aws::Lex::Conversation::Slot::Elicitation

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/lex/conversation/slot/elicitation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Elicitation

Returns a new instance of Elicitation.



11
12
13
14
15
16
17
18
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 11

def initialize(opts = {})
  self.name = opts.fetch(:name)
  self.elicit = opts.fetch(:elicit) { ->(_c) { true } }
  self.messages = opts.fetch(:messages)
  self.follow_up_messages = opts.fetch(:follow_up_messages) { opts.fetch(:messages) }
  self.fallback = opts[:fallback]
  self.max_retries = opts[:max_retries] || opts[:maximum_elicitations] || 0
end

Instance Attribute Details

#conversationObject

Returns the value of attribute conversation.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def conversation
  @conversation
end

#elicitObject

Returns the value of attribute elicit.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def elicit
  @elicit
end

#fallbackObject

Returns the value of attribute fallback.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def fallback
  @fallback
end

#follow_up_messagesObject

Returns the value of attribute follow_up_messages.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def follow_up_messages
  @follow_up_messages
end

#max_retriesObject

Returns the value of attribute max_retries.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def max_retries
  @max_retries
end

#messagesObject

Returns the value of attribute messages.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def messages
  @messages
end

#nameObject

Returns the value of attribute name.



8
9
10
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 8

def name
  @name
end

Instance Method Details

#elicit!Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 20

def elicit!
  return false unless elicit?
  return fallback.call(conversation) if maximum_elicitations?

  increment_slot_elicitations!
  conversation.elicit_slot(
    slot_to_elicit: name,
    messages: elicitation_messages
  )
end

#elicit?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
# File 'lib/aws/lex/conversation/slot/elicitation.rb', line 31

def elicit?
  return false if maximum_elicitations? && fallback.nil?

  elicit.call(conversation) && !slot.filled?
end