Class: Aws::Lex::Conversation
  
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
          - Object
 
          
            - Aws::Lex::Conversation
 
          
        
        show all
      
     
  
  
  
  
  
      - Extended by:
 
      - Forwardable
 
  
  
  
  
  
      - Includes:
 
      - Support::Mixins::Responses
 
  
  
  
  
  
  
    - Defined in:
 
    - lib/aws/lex/conversation.rb,
  lib/aws/lex/conversation/spec.rb,
 lib/aws/lex/conversation/version.rb,
 lib/aws/lex/conversation/type/bot.rb,
 lib/aws/lex/conversation/simulator.rb,
 lib/aws/lex/conversation/type/base.rb,
 lib/aws/lex/conversation/type/slot.rb,
 lib/aws/lex/conversation/type/event.rb,
 lib/aws/lex/conversation/type/intent.rb,
 lib/aws/lex/conversation/handler/base.rb,
 lib/aws/lex/conversation/handler/echo.rb,
 lib/aws/lex/conversation/type/context.rb,
 lib/aws/lex/conversation/type/message.rb,
 lib/aws/lex/conversation/response/base.rb,
 lib/aws/lex/conversation/slot/elicitor.rb,
 lib/aws/lex/conversation/spec/matchers.rb,
 lib/aws/lex/conversation/type/response.rb,
 lib/aws/lex/conversation/response/close.rb,
 lib/aws/lex/conversation/type/sentiment.rb,
 lib/aws/lex/conversation/type/checkpoint.rb,
 lib/aws/lex/conversation/type/input_mode.rb,
 lib/aws/lex/conversation/type/slot_shape.rb,
 lib/aws/lex/conversation/type/slot_value.rb,
 lib/aws/lex/conversation/handler/delegate.rb,
 lib/aws/lex/conversation/slot/elicitation.rb,
 lib/aws/lex/conversation/type/enumeration.rb,
 lib/aws/lex/conversation/response/delegate.rb,
 lib/aws/lex/conversation/support/inflector.rb,
 lib/aws/lex/conversation/type/time_to_live.rb,
 lib/aws/lex/conversation/type/dialog_action.rb,
 lib/aws/lex/conversation/type/response_card.rb,
 lib/aws/lex/conversation/type/session_state.rb,
 lib/aws/lex/conversation/type/transcription.rb,
 lib/aws/lex/conversation/type/interpretation.rb,
 lib/aws/lex/conversation/response/elicit_slot.rb,
 lib/aws/lex/conversation/type/sentiment_score.rb,
 lib/aws/lex/conversation/response/elicit_intent.rb,
 lib/aws/lex/conversation/type/fulfillment_state.rb,
 lib/aws/lex/conversation/type/intent_confidence.rb,
 lib/aws/lex/conversation/type/invocation_source.rb,
 lib/aws/lex/conversation/handler/slot_resolution.rb,
 lib/aws/lex/conversation/response/confirm_intent.rb,
 lib/aws/lex/conversation/type/confirmation_state.rb,
 lib/aws/lex/conversation/type/dialog_action_type.rb,
 lib/aws/lex/conversation/type/sentiment_response.rb,
 lib/aws/lex/conversation/type/session_attributes.rb,
 lib/aws/lex/conversation/support/mixins/responses.rb,
 lib/aws/lex/conversation/type/proposed_next_state.rb,
 lib/aws/lex/conversation/exception/missing_handler.rb,
 lib/aws/lex/conversation/type/message/content_type.rb,
 lib/aws/lex/conversation/type/response_card/button.rb,
 lib/aws/lex/conversation/type/slot_elicitation_style.rb,
 lib/aws/lex/conversation/support/mixins/slot_elicitation.rb,
 lib/aws/lex/conversation/type/transcription/resolved_context.rb
 
  
  
 
Defined Under Namespace
  
    
      Modules: Exception, Handler, Response, Slot, Spec, Support, Type
    
  
    
      Classes: Simulator
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - VERSION =
          
        
 
        '6.4.2'
 
      
    
  
  Instance Attribute Summary collapse
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  
  #close, #confirm_intent, #delegate, #elicit_intent, #elicit_slot
  Constructor Details
  
    
  
  
    #initialize(opts = {})  ⇒ Conversation 
  
  
  
  
    
Returns a new instance of Conversation.
   
 
  
  
    
      
15
16
17
18
19 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 15
def initialize(opts = {})
  self.event = opts.fetch(:event)
  self.context = opts.fetch(:context)
  self.lex = Type::Event.shrink_wrap(event)
end
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #context  ⇒ Object 
  
  
  
  
    
Returns the value of attribute context.
   
 
  
  
    
      
11
12
13 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 11
def context
  @context
end 
     | 
  
 
    
      
      
      
  
  
    #event  ⇒ Object 
  
  
  
  
    
Returns the value of attribute event.
   
 
  
  
    
      
11
12
13 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 11
def event
  @event
end 
     | 
  
 
    
      
      
      
  
  
    #lex  ⇒ Object 
  
  
  
  
    
Returns the value of attribute lex.
   
 
  
  
    
      
11
12
13 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 11
def lex
  @lex
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    #active_context(name:)  ⇒ Object 
  
  
  
  
    
      
115
116
117 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 115
def active_context(name:)
  lex.session_state.active_contexts.find { |c| c.name == name }
end
     | 
  
 
    
      
  
  
    #active_context!(name:, turns: 10, seconds: 300, attributes: {})  ⇒ Object 
  
  
  
  
    
      
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 119
def active_context!(name:, turns: 10, seconds: 300, attributes: {})
    instance = active_context(name: name)
  if instance
    clear_context!(name: name)
  else
    instance = Type::Context.new
  end
    instance.name = name
  instance.context_attributes = attributes
  instance.time_to_live = Type::TimeToLive.new(
    turns_to_live: turns,
    time_to_live_in_seconds: seconds
  )
  lex.session_state.active_contexts << instance
  instance
end
     | 
  
 
    
      
  
  
    #active_context?(name:)  ⇒ Boolean 
  
  
  
  
    
      
111
112
113 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 111
def active_context?(name:)
  !active_context(name: name).nil?
end 
     | 
  
 
    
      
  
  
    #chain  ⇒ Object 
  
  
  
  
    
      
21
22
23 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 21
def chain
  @chain ||= []
end 
     | 
  
 
    
      
  
  
    #checkpoint(label:)  ⇒ Object 
  
  
  
  
    
      
88
89
90 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 88
def checkpoint(label:)
  checkpoints.find { |v| v.label == label }
end
     | 
  
 
    
      
  
  
    #checkpoint!(opts = {})  ⇒ Object 
  
  
  
  
    
      
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 64
def checkpoint!(opts = {})
  label = opts.fetch(:label)
  params = {
    label: label,
    dialog_action_type: opts.fetch(:dialog_action_type) { 'Delegate' },
    fulfillment_state: opts[:fulfillment_state],
    intent: opts.fetch(:intent) { lex.current_intent },
    slot_to_elicit: opts[:slot_to_elicit]
  }.compact
  if checkpoint?(label: label)
        checkpoint(label: label).assign_attributes!(params)
  else
    checkpoints.unshift(
      Type::Checkpoint.build(params)
    )
  end
end
     | 
  
 
    
      
  
  
    #checkpoint?(label:)  ⇒ Boolean 
  
  
  
  
    
      
84
85
86 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 84
def checkpoint?(label:)
  !checkpoint(label: label).nil?
end 
     | 
  
 
    
      
  
  
    #checkpoints  ⇒ Object 
  
  
  
  
    
      
92
93
94 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 92
def checkpoints
  lex.session_state.session_attributes.checkpoints
end 
     | 
  
 
    
      
  
  
    #clear_all_contexts!  ⇒ Object 
  
  
  
  
    
      
144
145
146 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 144
def clear_all_contexts!
  lex.session_state.active_contexts = []
end 
     | 
  
 
    
      
  
  
    #clear_context!(name:)  ⇒ Object 
  
  
  
  
    
      
140
141
142 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 140
def clear_context!(name:)
  lex.session_state.active_contexts.delete_if { |c| c.name == name }
end
     | 
  
 
    
      
  
  
    #handlers  ⇒ Object 
  
  
  
  
    
      
40
41
42 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 40
def handlers
  chain.map(&:class)
end 
     | 
  
 
    
      
  
  
    #handlers=(list)  ⇒ Object 
  
  
  
  
    
      
25
26
27
28
29
30
31
32
33
34
35
36
37
38 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 25
def handlers=(list)
  last = nil
  reversed = list.reverse.map do |element|
    handler = element.fetch(:handler).new(
      options: element.fetch(:options) { {} },
      successor: last
    )
    last = handler
    handler
  end
  @chain = reversed.reverse
end
     | 
  
 
    
      
  
  
    #intent_confidence  ⇒ Object 
  
  
  
  
    
      
48
49
50 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 48
def intent_confidence
  @intent_confidence ||= Type::IntentConfidence.new(event: lex)
end 
     | 
  
 
    
      
  
  
    #intent_name  ⇒ Object 
  
  
  
  
    
      
52
53
54 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 52
def intent_name
  lex.current_intent.name
end 
     | 
  
 
    
      
  
  
    #proposed_next_state?  ⇒ Boolean 
  
  
  
  
    
      
148
149
150 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 148
def proposed_next_state?
  !proposed_next_state.nil?
end 
     | 
  
 
    
      
  
  
    #respond  ⇒ Object 
  
  
  
  
    
      
44
45
46 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 44
def respond
  chain.first.handle(self)
end 
     | 
  
 
    
      
  
  
    #restore_from!(checkpoint)  ⇒ Object 
  
  
  
  
    
      
96
97
98
99
100
101
102
103
104
105
106
107
108
109 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 96
def restore_from!(checkpoint)
    checkpoints.delete_if { |c| c.label == checkpoint.label }
    lex.current_intent = nil
    lex.session_state.intent = checkpoint.intent
  dialog_action = Type::DialogAction.new(
    type: checkpoint.dialog_action_type,
    slot_to_elicit: checkpoint.slot_to_elicit
  )
  lex.session_state.dialog_action = dialog_action
  self
end
     | 
  
 
    
      
  
  
    #session  ⇒ Object 
  
  
  
  
    
      
60
61
62 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 60
def session
  lex.session_state.session_attributes
end 
     | 
  
 
    
      
  
  
    #simulate!  ⇒ Object 
  
  
  
  
    
      
16
17
18 
     | 
    
      # File 'lib/aws/lex/conversation/spec.rb', line 16
def simulate!
  @simulate ||= Simulator.new(lex: lex)
end 
     | 
  
 
    
      
  
  
    #slots  ⇒ Object 
  
  
  
  
    
      
56
57
58 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 56
def slots
  lex.current_intent.slots
end 
     | 
  
 
    
      
  
  
    #stash  ⇒ Object 
  
  
  
  
    
      
152
153
154 
     | 
    
      # File 'lib/aws/lex/conversation.rb', line 152
def stash
  @stash ||= {}
end
     |