wit 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +8 -0
  3. data/README.md +2 -0
  4. data/lib/wit.rb +32 -4
  5. data/wit.gemspec +1 -1
  6. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8238be41a9a6f12e9b5ca05aa47e2df2bb174de7
4
- data.tar.gz: 2cb886d831857aaffa697a17443714db24a38214
3
+ metadata.gz: 79a8e68599e29e35430b0cae7ed26691435dbd38
4
+ data.tar.gz: 5934e10cb348235ab7f619ef6030d5e1e4bce06d
5
5
  SHA512:
6
- metadata.gz: 0777a1f0a9ca34416275ac36080a2caf8563edba3960d8e269a193106e5c03b1c5b18e21b9f6de01a806b884f65ac11d70a2fd4858343e1659f61baadc79f150
7
- data.tar.gz: 7612bc8d01ba0499ea9a374251fbe2d9a8b1f884d9f1dde14d4fd64b90024585880ac49e6ebfee02afc0fedd10952f62b69a5a654d04cdc6ade03f1b4a2bc831
6
+ metadata.gz: a61fc72b671a939e0970487825ee000743ba14d3537f002e9455fc9841ea965db400294c5f230aefa6d7aef288e4f883a38647ecc32ebd3d4bc4c59e3e760904
7
+ data.tar.gz: 1b9c4d937a90aafc671282e88a5444b463fc6c71e7f81235f5084c0543813cea1ebf9ec57abfd7f1162959c2b5d2e1d881f99fe4b76f1fa667c29ac7a6f4f486
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## v4.1.0
2
+
3
+ - `converse` now takes `reset` as optional parameter.
4
+
5
+ ### Breaking changes
6
+
7
+ - `run_actions` now resets the last turn on new messages and errors.
8
+
1
9
  ## v4.0.0
2
10
 
3
11
  After a lot of internal dogfooding and bot building, we decided to change the API in a backwards-incompatible way. The changes are described below and aim to simplify user code and accommodate upcoming features.
data/README.md CHANGED
@@ -77,6 +77,7 @@ puts("Yay, got Wit.ai response: #{rsp}")
77
77
  ### .run_actions()
78
78
 
79
79
  A higher-level method to the Wit converse API.
80
+ `run_actions` resets the last turn on new messages and errors.
80
81
 
81
82
  Takes the following parameters:
82
83
  * `session_id` - a unique identifier describing the user session
@@ -102,6 +103,7 @@ Takes the following parameters:
102
103
  * `session_id` - a unique identifier describing the user session
103
104
  * `msg` - the text received from the user
104
105
  * `context` - the `Hash` representing the session state
106
+ * `reset` - (optional) whether to reset the last turn
105
107
 
106
108
  Example:
107
109
  ```ruby
data/lib/wit.rb CHANGED
@@ -71,6 +71,8 @@ class Wit
71
71
  if opts[:actions]
72
72
  @actions = validate_actions(logger, opts[:actions])
73
73
  end
74
+
75
+ @_sessions = {}
74
76
  end
75
77
 
76
78
  def logger
@@ -88,18 +90,19 @@ class Wit
88
90
  return res
89
91
  end
90
92
 
91
- def converse(session_id, msg, context={})
93
+ def converse(session_id, msg, context={}, reset=nil)
92
94
  if !context.is_a?(Hash)
93
95
  raise WitException.new('context should be a Hash')
94
96
  end
95
97
  params = {}
96
98
  params[:q] = msg unless msg.nil?
97
99
  params[:session_id] = session_id
100
+ params[:reset] = true if reset
98
101
  res = req(logger, @access_token, Net::HTTP::Post, '/converse', params, context)
99
102
  return res
100
103
  end
101
104
 
102
- def __run_actions(session_id, message, context, i)
105
+ def __run_actions(session_id, current_request, message, context, i)
103
106
  if i <= 0
104
107
  raise WitException.new('Max steps reached, stopping.')
105
108
  end
@@ -107,6 +110,9 @@ class Wit
107
110
  if json['type'].nil?
108
111
  raise WitException.new('Couldn\'t find type in Wit response')
109
112
  end
113
+ if current_request != @_sessions[session_id]
114
+ return context
115
+ end
110
116
 
111
117
  logger.debug("Context: #{context}")
112
118
  logger.debug("Response type: #{json['type']}")
@@ -150,7 +156,11 @@ class Wit
150
156
  raise WitException.new("unknown type: #{json['type']}")
151
157
  end
152
158
 
153
- return __run_actions(session_id, nil, context, i - 1)
159
+ if current_request != @_sessions[session_id]
160
+ return context
161
+ end
162
+
163
+ return __run_actions(session_id, current_request, nil, context, i - 1)
154
164
  end
155
165
 
156
166
  def run_actions(session_id, message, context={}, max_steps=DEFAULT_MAX_STEPS)
@@ -160,7 +170,25 @@ class Wit
160
170
  if !context.is_a?(Hash)
161
171
  raise WitException.new('context should be a Hash')
162
172
  end
163
- return __run_actions(session_id, message, context, max_steps)
173
+
174
+ # Figuring out whether we need to reset the last turn.
175
+ # Each new call increments an index for the session.
176
+ # We only care about the last call to run_actions.
177
+ # All the previous ones are discarded (preemptive exit).
178
+ current_request = 1
179
+ if @_sessions.has_key?(session_id)
180
+ current_request = @_sessions[session_id] + 1
181
+ end
182
+ @_sessions[session_id] = current_request
183
+
184
+ context = __run_actions(session_id, current_request, message, context, max_steps)
185
+
186
+ # Cleaning up once the last call to run_actions finishes.
187
+ if current_request == @_sessions[session_id]
188
+ @_sessions.delete(session_id)
189
+ end
190
+
191
+ return context
164
192
  end
165
193
 
166
194
  def interactive(context={}, max_steps=DEFAULT_MAX_STEPS)
data/wit.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'wit'
3
- s.version = '4.0.0'
3
+ s.version = '4.1.0'
4
4
  s.date = Date.today.to_s
5
5
  s.summary = 'Ruby SDK for Wit.ai'
6
6
  s.description = 'Ruby SDK for Wit.ai'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wit
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Wit Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-28 00:00:00.000000000 Z
11
+ date: 2016-08-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby SDK for Wit.ai
14
14
  email: help@wit.ai
@@ -46,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
46
  version: '0'
47
47
  requirements: []
48
48
  rubyforge_project:
49
- rubygems_version: 2.5.1
49
+ rubygems_version: 2.4.5
50
50
  signing_key:
51
51
  specification_version: 4
52
52
  summary: Ruby SDK for Wit.ai