aws-lex-conversation 4.1.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9735c51e883e99b06c28d4c979b52eb5f5bffe95dcb5bb1eebb138b16ef3aa21
4
- data.tar.gz: 2cbfd1b527fb7058a7b496d9099edd78087eb69b928ebbc073c9d81bbdf35d80
3
+ metadata.gz: 128c0cd7f79f2ba2f9fa8c8a148a06100cd9b4d26f9569cd97f53fee5d33b16e
4
+ data.tar.gz: 3e715ccfbec559fabc2503c49d00fac234df8668edeab39f2c561ad379909da5
5
5
  SHA512:
6
- metadata.gz: 263f7eafd97d6c58cd93dcafd8652686e3a6a9909906d6c3bb65ac6e165cf4f94670e3f2f2dc38838758e19e85cfb0ed3806eff5b7521a6184bdbccf296aaeda
7
- data.tar.gz: 1b9096daf68a211f23c678da9a36fe4e92aa4cacd5c362f79020698870dfcacc2ace8d152b2260dc9f5390e8e4195a07b34c15cf76e4df56e3619e6c50043feb
6
+ metadata.gz: 176b75d71df52db5799a95380d6820665511e2e3459e5cdf0d8e30ae4ca0f090086c0bb6609c6124b629fc1ab04d0e3ee1e63fd35da0463186cb7479f165c4e2
7
+ data.tar.gz: 315f366c43a00923b50828360ff00d32fa8f566d2cc2c990670557de2b87d4259f0960d8abddf0baed3a039a7667ec3aa7982e82edf97db5c20443beb9611a2c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 4.3.0 - August 25, 2021
2
+
3
+ * Slot elicitor can now be passed an Aws::Lex::Conversation::Type::Message as part of the DSL/callback and properly formats the response as such
4
+
1
5
  # 4.1.0 - July 21, 2021
2
6
 
3
7
  * Don't set the `intent` property in the response for `ElicitIntent`
@@ -5,38 +5,32 @@ module Aws
5
5
  class Conversation
6
6
  module Slot
7
7
  class Elicitation
8
- attr_accessor :name, :elicit, :message, :follow_up_message,
9
- :content_type, :fallback, :maximum_elicitations,
10
- :conversation
8
+ attr_accessor :name, :elicit, :messages, :follow_up_messages,
9
+ :fallback, :maximum_elicitations, :conversation
11
10
 
12
11
  def initialize(opts = {})
13
12
  self.name = opts.fetch(:name)
14
13
  self.elicit = opts.fetch(:elicit) { ->(_c) { true } }
15
- self.message = opts.fetch(:message)
16
- self.follow_up_message = opts.fetch(:follow_up_message) { opts.fetch(:message) }
17
- self.content_type = opts.fetch(:content_type) do
18
- Aws::Lex::Conversation::Type::Message::ContentType.new('PlainText')
19
- end
20
- self.fallback = opts.fetch(:fallback) { ->(_c) {} }
14
+ self.messages = opts.fetch(:messages)
15
+ self.follow_up_messages = opts.fetch(:follow_up_messages) { opts.fetch(:messages) }
16
+ self.fallback = opts[:fallback]
21
17
  self.maximum_elicitations = opts.fetch(:maximum_elicitations) { 0 }
22
18
  end
23
19
 
24
20
  def elicit!
21
+ return false unless elicit?
25
22
  return fallback.call(conversation) if maximum_elicitations?
26
23
 
27
24
  increment_slot_elicitations!
28
25
  conversation.elicit_slot(
29
26
  slot_to_elicit: name,
30
- messages: [
31
- {
32
- contentType: content_type,
33
- content: elicitation_content
34
- }
35
- ]
27
+ messages: elicitation_messages
36
28
  )
37
29
  end
38
30
 
39
31
  def elicit?
32
+ return false if maximum_elicitations? && fallback.nil?
33
+
40
34
  elicit.call(conversation) && !slot.filled?
41
35
  end
42
36
 
@@ -46,11 +40,11 @@ module Aws
46
40
  conversation.slots[name.to_sym]
47
41
  end
48
42
 
49
- def elicitation_content
50
- first_elicitation? ? compose_message(message) : compose_message(follow_up_message)
43
+ def elicitation_messages
44
+ first_elicitation? ? compose_messages(messages) : compose_messages(follow_up_messages)
51
45
  end
52
46
 
53
- def compose_message(msg)
47
+ def compose_messages(msg)
54
48
  msg.is_a?(Proc) ? msg.call(conversation) : msg
55
49
  end
56
50
 
@@ -9,8 +9,10 @@ module Aws
9
9
  def close(opts = {})
10
10
  params = {
11
11
  session_state: lex.session_state,
12
- request_attributes: lex.request_attributes
12
+ request_attributes: lex.request_attributes,
13
+ intent: lex.current_intent
13
14
  }.merge(opts)
15
+ lex.session_state.intent = params.fetch(:intent)
14
16
  Response::Close.new(params).to_lex
15
17
  end
16
18
 
@@ -27,16 +29,20 @@ module Aws
27
29
  def delegate(opts = {})
28
30
  params = {
29
31
  session_state: lex.session_state,
30
- request_attributes: lex.request_attributes
32
+ request_attributes: lex.request_attributes,
33
+ intent: lex.current_intent
31
34
  }.merge(opts)
35
+ lex.session_state.intent = params.fetch(:intent)
32
36
  Response::Delegate.new(params).to_lex
33
37
  end
34
38
 
35
39
  def elicit_intent(opts = {})
36
40
  params = {
37
41
  session_state: lex.session_state,
38
- request_attributes: lex.request_attributes
42
+ request_attributes: lex.request_attributes,
43
+ intent: lex.current_intent
39
44
  }.merge(opts)
45
+ lex.session_state.intent = params.fetch(:intent)
40
46
  Response::ElicitIntent.new(params).to_lex
41
47
  end
42
48
 
@@ -20,11 +20,12 @@ module Aws
20
20
  fulfillment_state: FulfillmentState
21
21
  )
22
22
 
23
- # rubocop:disable Metrics/MethodLength
23
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
24
24
  def restore(conversation, opts = {})
25
25
  case dialog_action_type.raw
26
26
  when 'Close'
27
27
  conversation.close(
28
+ intent: intent,
28
29
  fulfillment_state: opts.fetch(:fulfillment_state) { fulfillment_state },
29
30
  messages: opts.fetch(:messages)
30
31
  )
@@ -34,9 +35,12 @@ module Aws
34
35
  messages: opts.fetch(:messages)
35
36
  )
36
37
  when 'Delegate'
37
- conversation.delegate
38
+ conversation.delegate(
39
+ intent: intent
40
+ )
38
41
  when 'ElicitIntent'
39
42
  conversation.elicit_intent(
43
+ intent: intent,
40
44
  messages: opts.fetch(:messages)
41
45
  )
42
46
  when 'ElicitSlot'
@@ -49,7 +53,7 @@ module Aws
49
53
  raise ArgumentError, "invalid DialogActionType: `#{dialog_action_type.raw}`"
50
54
  end
51
55
  end
52
- # rubocop:enable Metrics/MethodLength
56
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
53
57
  end
54
58
  end
55
59
  end
@@ -3,7 +3,7 @@
3
3
  module Aws
4
4
  module Lex
5
5
  class Conversation
6
- VERSION = '4.1.0'
6
+ VERSION = '5.1.0'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-lex-conversation
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Doyle
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-07-21 00:00:00.000000000 Z
15
+ date: 2021-09-02 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: shrink_wrap