wit_ruby 1.1.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: e040638ae931f07535588e9e1c12d684322fa5b9
4
- data.tar.gz: bfaab5bddd0a95d47ee32f9f1aa63fddd8002b16
3
+ metadata.gz: f7a37eae422e375b443cde450d797b067ad85051
4
+ data.tar.gz: 01d091048c24291e389334f0c22836c0837ff94a
5
5
  SHA512:
6
- metadata.gz: e8706451d4e2fcc63f27f31d0cd73289fe2e839797c6383df98944fb19d1e2150af17a0603fa6c78f36a0f74ed72c8ac8dc03c94de78553a3b0dec0879a718aa
7
- data.tar.gz: 2ebc0aa165a14e8bbe3280669b202b0f67d945c44d04bc13d4d6667593f089cfa38b351db4a73a5d636bbbfe7dedfb7ee5fa9f83cc4a49f91bdfc48a189224d8
6
+ metadata.gz: 66036ce9176e0fb631094f784565acb5dc632f3d9c0900919f4080133f4aba580ca44608f41d4e2d927cafd55b769e7b6e977393ffa4f56ab225d5f180935573
7
+ data.tar.gz: 239caed49b27506a3147821a744563ca0bb0daa3996fbe57333385d2048ed174ec0f31de7858bbbf4a246a5f23421d4c388d2b39b5fca3d15398d03362d718ac
@@ -0,0 +1,119 @@
1
+ # WitRuby Changelog
2
+ All changes to this API wrapper will be documented in this file. This file follows the guidelines explained over at http://keepachangelog.com/.
3
+
4
+ ## 1.1.1 - 2014-06-30
5
+ ### Added
6
+ - As the wrapper defaults to the newest Wit.AI API version, new additions make WitRuby compatible.
7
+ - Added instance method, `entities`, for class Message that returns entities in result of a query
8
+ - Added optional argument, index, for methods `confidence`, `entities`, `entity_names`, and `intent` that returns each value at the desired index. Defaults at 0 if no index is passed (this is in response to Wit returning more than one outcome).
9
+ - Added ability to pass queries with spaces.
10
+ - Default to RSpec 3.
11
+
12
+ ### Deprecated
13
+ - New Wit.AI version deprecates some specific methods as results has been changed.
14
+
15
+ ### Removed
16
+ - Nothing
17
+
18
+ ### Fixed
19
+ - Due to the new version of the API, functionalities break in 1.1.0. This is fixed from the new additions.
20
+ - Tests that fail due to defaulting to the newest RSpec (being RSpec 3). Now defaults to RSpec 3 and fixed accordingly.
21
+
22
+ ## 1.1.0 - 2014-06-15
23
+
24
+ ### Added
25
+ - Implemented API call to send a specific sound file containing a message over to wit.ai (GET).
26
+
27
+ ### Deprecated
28
+ - Nothing.
29
+
30
+ ### Removed
31
+ - Nothing.
32
+
33
+ ### Fixed
34
+ - Changed testing suites to use a general instance for testing over at wit.ai so all developers can get passing tests.
35
+
36
+ ## 1.0.1 - 2014-06-06
37
+
38
+ ### Added
39
+ - Raise an error if a sent message has a length that is not between 0 to 256.
40
+
41
+ ### Deprecated
42
+ - Nothing.
43
+
44
+ ### Removed
45
+ - Nothing.
46
+
47
+ ### Fixed
48
+ - Nothing.
49
+
50
+ ## 1.0.0 - 2014-06-03
51
+
52
+ ### Added
53
+ - Yay! 1.0.0 for no reason! (Kinda.)
54
+ - Error checking to make sure input parameters to the session are correct.
55
+
56
+ ### Deprecated
57
+ - Adding expressions does not use a given BodyJson parameter and instead, requires the use of just the name of the entity, value, and new expression.
58
+
59
+ ### Removed
60
+ - Nothing.
61
+
62
+ ### Fixed
63
+ - Nothing.
64
+
65
+ ## 0.0.3 - 2014-05-21
66
+
67
+ ### Added
68
+ - Implemented getting array of entities from instance (GET).
69
+ - Implemented getting a specific entity from its name/id (GET).
70
+ - Implemented creation of entities (POST).
71
+ - Implemented the ability to update entities given the ID (PUT).
72
+ - Implemented deletion of entities (DELETE).
73
+ - Implemented addition of values (POST).
74
+ - Implemented deletion of values (DELETE).
75
+ - Implemented addition of expressions (POST).
76
+ - Implemented deletion of expressions (DELETE).
77
+ - New class definition for post / put calls assistance called BodyJson. Helps with JSON generation.
78
+
79
+ ### Deprecated
80
+ - Changed required Ruby version from 1.8.7 to 1.9.3.
81
+
82
+ ### Removed
83
+ - Nothing.
84
+
85
+ ### Fixed
86
+ - Nothing.
87
+
88
+ ## 0.0.2 - 2014-05-15
89
+
90
+ ### Added
91
+ - Implemented API call to get specific information from a sent message from it's given ID (GET).
92
+ - Intent specific API calls functional (GET).
93
+ - Change results to be returned as specific objects that inherit from the original class Result. Message, Intent, Entity, Expression are the specific wrappers for results.
94
+ - Changed description in gemspec.
95
+ - Error check so that only specific results can be refreshed. Refreshable objects are ones that
96
+ are directly returned from session calls.
97
+
98
+ ### Deprecated
99
+ - Nothing.
100
+
101
+ ### Removed
102
+ - Nothing.
103
+
104
+ ### Fixed
105
+ - Nothing.
106
+
107
+ ## 0.0.1 - 2014-05-08
108
+
109
+ ### Added
110
+ - Implemented connection with wit.ai API and sending a text message (GET).
111
+
112
+ ### Deprecated
113
+ - Nothing.
114
+
115
+ ### Removed
116
+ - Nothing.
117
+
118
+ ### Fixed
119
+ - Nothing.
@@ -0,0 +1,4 @@
1
+ # WitRuby - Contributors
2
+ I am a beginner developer so whoever has helped me build this gem will definitely be recognized! Listed below are the amazing others who have assisted in making me a better developer and creating this gem.
3
+
4
+ - @PWehlin & @rohitahuja (Platform45)
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![Coverage Status](https://coveralls.io/repos/gching/wit_ruby/badge.png?branch=master)](https://coveralls.io/r/gching/wit_ruby?branch=master)
7
7
 
8
8
 
9
- Provides a unofficial and (seemingly) pleasant Ruby API Wrapper for the Wit.AI API (Natural Language Interface) As of 1.0.0, most functionalities have been implemented. Go over to https://rubygems.org/gems/wit_ruby for more information.
9
+ Provides an unofficial and (seemingly) pleasant Ruby API Wrapper for the Wit.AI API (Natural Language Interface) As of 1.0.0, most functionalities have been implemented. Go over to https://rubygems.org/gems/wit_ruby for more information.
10
10
 
11
11
  I want to first off mention big props to the Wit.AI team. They are the true wizards here in making this beauty and by no means did I contribute anything magical. Do go check them out at http://wit.ai/! THANK YOU Wit.AI!
12
12
 
@@ -97,6 +97,10 @@ To send a specific message, use the saved session to send a given string as a pa
97
97
 
98
98
  $ session.send_message("Your Message")
99
99
 
100
+ To send a specific message sound file, pass over the path of the file as a parameter.
101
+
102
+ $ session.send_sound_message("Path to sound file")
103
+
100
104
  To get a specific messages information from the wit.ai, pass in the message's ID and use the method below.
101
105
 
102
106
  $ session.get_message("Message ID")
@@ -105,10 +109,12 @@ To get a specific messages information from the wit.ai, pass in the message's ID
105
109
 
106
110
  ```ruby
107
111
  message_results = session.send_message("Your Message")
108
- message_results.confidence # Returns the confidence of the message results.
109
- message_results.entity_names # Generates array of names of each entity in this message.
110
- message_results.intent # Returns the intent that this message corresponded to.
112
+ message_results.confidence(index=0) # Returns the confidence of the message results at the specified index.
113
+ message_results.entities(index=0) # Returns the entities of the message results at the specified index.
114
+ message_results.entity_names(index=0) # Generates array of names of each entity in this message at the specified index.
115
+ message_results.intent(index=0) # Returns the intent that this message corresponded to at the specified index.
111
116
  ```
117
+ *Index is an optional argument of type integer that lets you select the outcome at the specified index. The default index is 0.*
112
118
 
113
119
  ### Intent
114
120
 
@@ -200,7 +206,7 @@ Same goes for the deletion of an expression.
200
206
 
201
207
  ## Contributing
202
208
 
203
- I am a beginner developer so do contribute or help as much as possible! I definitely need to learn a lot :). Whoever helps will also have there name put here below this line. Amazing!
209
+ I am a beginner developer so do contribute or help as much as possible! I definitely need to learn a lot :). Whoever helps will also have there name put in [CONTRIBUTORS.md](CONTRIBUTORS.md)
204
210
  _________________________________
205
211
 
206
212
 
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'bundler/gem_tasks'
4
4
  # Default directory to look in is `/specs`
5
5
  # Run with `rake spec`
6
6
  RSpec::Core::RakeTask.new(:spec) do |task|
7
- task.rspec_opts = ['--color', '--format=nested']
7
+ task.rspec_opts = ['--color', '--format=documentation']
8
8
  end
9
9
 
10
10
  task :default => :spec
@@ -10,23 +10,30 @@ module Wit
10
10
  ## Returns the confidence of the message results.
11
11
  ##
12
12
  ## @return [Float] confidence in the message for the intent.
13
- def confidence
14
- outcome["confidence"]
13
+ def confidence(index=0)
14
+ self.raw_data["outcomes"][index]["confidence"]
15
15
  end
16
16
 
17
17
  ## Returns the intent that this message corresponded to.
18
18
  ##
19
19
  ## @return [String] intent name that this message corrsponded to.
20
- def intent
21
- outcome["intent"]
20
+ def intent(index=0)
21
+ self.raw_data["outcomes"][index]["intent"]
22
+ end
23
+
24
+ ## Returns the entities that this message corresponded to.
25
+ ##
26
+ ## @return Hash of entities that this message corrsponded to.
27
+ def entities(index=0)
28
+ self.raw_data["outcomes"][index]["entities"]
22
29
  end
23
30
 
24
31
  ## Generates Array of the names of each entity in this message.
25
32
  ##
26
33
  ## @return [Array] names of each entity
27
- def entity_names
34
+ def entity_names(index=0)
28
35
  entity_arr = Array.new
29
- outcome["entities"].each_key do |key|
36
+ self.raw_data["outcomes"][index]["entities"].each_key do |key|
30
37
  entity_arr << key
31
38
  end
32
39
  return entity_arr
@@ -40,8 +47,8 @@ module Wit
40
47
  ## @param possible_key [Symbol] possible method or key in the hash or entity.
41
48
  ## @return [Class] depending on the given results in the data.
42
49
  def method_missing(possible_key, *args, &block)
43
- if @rawdata["outcome"]["entities"].has_key?(possible_key.to_s)
44
- entity_value = @rawdata["outcome"]["entities"][possible_key.to_s]
50
+ if @rawdata["outcomes"][0]["entities"].has_key?(possible_key.to_s)
51
+ entity_value = @rawdata["outcomes"][0]["entities"][possible_key.to_s]
45
52
  entity_value.class == Hash ? Entity.new(entity_value) : EntityArray.new(entity_value)
46
53
  else
47
54
  super
@@ -104,7 +104,7 @@ module Wit
104
104
  ## @return [Array] entities in this current result object.
105
105
  def setup_entities
106
106
  ## Get the current entities hash
107
- entities_raw = @rawdata["entities"] || @rawdata["outcome"]["entities"]
107
+ entities_raw = @rawdata["entities"] || @rawdata["outcomes"]["entities"]
108
108
  ## Set the intance variable to be an array containing these entities.
109
109
  ## If its empty, then set the instance variable to nil
110
110
  unless entities_raw.empty?
@@ -25,6 +25,8 @@ module Wit
25
25
  if length <= 0 || length > 256
26
26
  raise NotCorrectSchema.new("The given message, \"#{message}\" is either too short or too long. Message length needs to be between 0 and 256.")
27
27
  end
28
+ # Replace spaces with "%20" for usage in URL
29
+ message.gsub!(" ", "%20")
28
30
  ## Recieve unwrapped results
29
31
  results = @client.get("/message?q=#{message}")
30
32
  return return_with_class(Wit::REST::Message, results)
@@ -61,7 +63,6 @@ module Wit
61
63
  ## @todo Notify Wit.ai as there documentation does not include the stats parameter
62
64
  def get_message(message_id)
63
65
  results = @client.get("/messages/#{message_id}")
64
-
65
66
  return return_with_class(Wit::REST::Message, results)
66
67
  end
67
68
 
@@ -1,3 +1,3 @@
1
1
  module Wit
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -11,19 +11,31 @@ require 'timeout'
11
11
 
12
12
  #VCR config
13
13
  VCR.configure do |c|
14
- c.cassette_library_dir = 'spec/fixtures/wit_cassettes'
15
- c.hook_into :webmock
16
- allow_next_request_at = nil
17
- filters = [:real?, lambda { |r| URI(r.uri).host == 'api.wit.ai' }]
18
14
 
19
- c.after_http_request(*filters) do |request, response|
20
- allow_next_request_at = Time.now + 1
21
- end
15
+ ## Used to see if were in the Travis CI environment.
16
+ ## Kinda dirty as were expecting ENV["TRAVIS"] is not declared.
17
+ ## We could use ENV["TRAVIS_WIT_TOKEN"], but that is the same dirtiness as
18
+ ## we assume one does not have it.
19
+ ## If it is the Travis CI environment, turn off VCR entirely and ignore cassettes.
20
+
21
+ if ENV["TRAVIS"] == true
22
+ puts("[WitRuby] Currently in Travis CI environment, VCR turned off.")
23
+ VCR.turn_off!(:ignore_cassettes => true)
24
+ else
25
+ puts("[WitRuby] Not in Travis CI environment, VCR on and recording cassettes.")
26
+ c.cassette_library_dir = 'spec/fixtures/wit_cassettes'
27
+ c.hook_into :webmock
28
+ allow_next_request_at = nil
29
+ filters = [:real?, lambda { |r| URI(r.uri).host == 'api.wit.ai' }]
22
30
 
23
- c.before_http_request(*filters) do |request|
24
- if allow_next_request_at && Time.now < allow_next_request_at
25
- sleep(allow_next_request_at - Time.now)
31
+ c.after_http_request(*filters) do |request, response|
32
+ allow_next_request_at = Time.now + 1
26
33
  end
27
- end
28
34
 
35
+ c.before_http_request(*filters) do |request|
36
+ if allow_next_request_at && Time.now < allow_next_request_at
37
+ sleep(allow_next_request_at - Time.now)
38
+ end
39
+ end
40
+ end
29
41
  end
@@ -23,7 +23,7 @@ describe Wit::REST::Client do
23
23
  @client = Wit::REST::Client.new(token: rand_auth)
24
24
  @conn = @client.instance_variable_get("@conn")
25
25
  expect(@conn.address).to eql("api.wit.ai")
26
- expect(@conn.use_ssl?).to be_true
26
+ expect(@conn.use_ssl?).to be_truthy
27
27
 
28
28
  end
29
29
 
@@ -41,7 +41,7 @@ describe Wit::REST::Client do
41
41
  @conn = @client.instance_variable_get("@conn")
42
42
  expect(@conn.address).to eql(new_host)
43
43
  expect(@conn.port).to eql(new_port)
44
- expect(@conn.proxy?).to be_true
44
+ expect(@conn.proxy?).to be_truthy
45
45
  expect(@conn.proxy_address).to eql(new_proxy)
46
46
  expect(@conn.proxy_port).to eql(new_proxy_port)
47
47
  expect(@conn.open_timeout).to eql(new_timeout)
@@ -52,7 +52,7 @@ describe Wit::REST::Client do
52
52
 
53
53
  it "should setup a session parameter to properly wrap API with commands" do
54
54
  @client = Wit::REST::Client.new(token: rand_auth)
55
- expect(@client.instance_variable_get("@session")).to be_true
55
+ expect(@client.instance_variable_get("@session")).to be_truthy
56
56
  end
57
57
 
58
58
 
@@ -5,37 +5,35 @@
5
5
  require 'spec_helper'
6
6
 
7
7
  describe Wit::REST::Message do
8
- let(:json) {%({
9
- "msg_id": "ba0fcf60-44d3-4499-877e-c8d65c239730",
10
- "msg_body": "how many people between Tuesday and Friday",
11
- "outcome": {
12
- "intent": "query_metrics",
13
- "entities": {
14
- "metric": {
15
- "value": "metric_visitors",
16
- "body": "people",
17
- "metadata": "{'code' : 324}"
8
+ let(:json) {%(
9
+
10
+ {
11
+ "msg_id" : "c20ad081-2cb9-4c63-8dd6-6667409514fa",
12
+ "outcomes" : [ {
13
+ "_text" : "how many people between Tuesday and Friday",
14
+ "intent" : "query_metrics",
15
+ "entities" : {
16
+ "metric" : [ {
17
+ "metadata" : "{'code' : 324}",
18
+ "value" : "metric_visitor"
19
+ } ],
20
+ "datetime" : [ {
21
+ "value" : {
22
+ "from" : "2014-06-24T00:00:00.000+02:00",
23
+ "to" : "2014-06-25T00:00:00.000+02:00"
24
+ }
25
+ }, {
26
+ "value" : {
27
+ "from" : "2014-06-27T00:00:00.000+02:00",
28
+ "to" : "2014-06-28T00:00:00.000+02:00"
29
+ }
30
+ } ]
18
31
  },
19
- "datetime": [
20
- {
21
- "value": {
22
- "from": "2013-10-21T00:00:00.000Z",
23
- "to": "2013-10-22T00:00:00.000Z"
24
- },
25
- "body": "Tuesday"
26
- },
27
- {
28
- "value": {
29
- "from": "2013-10-24T00:00:00.000Z",
30
- "to": "2013-10-25T00:00:00.000Z"
31
- },
32
- "body": "Friday"
33
- }
34
- ]
35
- },
36
- "confidence": 0.979
32
+ "confidence" : 0.986
33
+ } ]
37
34
  }
38
- })}
35
+
36
+ )}
39
37
  let(:rand_path) {"rand_path"}
40
38
  let(:rand_body) {"rand_body"}
41
39
  let(:rest_code) {"get"}
@@ -43,15 +41,15 @@ describe Wit::REST::Message do
43
41
 
44
42
 
45
43
  it "should have the following parameters, confidence and intent and entities" do
46
- expect(message_results.confidence).to eql(0.979)
44
+ expect(message_results.confidence).to eql(0.986)
47
45
  expect(message_results.intent).to eql("query_metrics")
48
- expect(message_results.metric.class).to eql(Wit::REST::Entity)
46
+ expect(message_results.metric.class).to eql(Wit::REST::EntityArray)
49
47
  expect(message_results.datetime.class).to eql(Wit::REST::EntityArray)
50
48
  end
51
49
 
52
50
  it "should have the right values in the entities" do
53
- expect(message_results.metric.value).to eql("metric_visitors")
54
- expect(message_results.datetime[0].body).to eql("Tuesday")
51
+ expect(message_results.metric[0].value).to eql("metric_visitor")
52
+ expect(message_results.datetime[0].value["from"]).to eql("2014-06-24T00:00:00.000+02:00")
55
53
  end
56
54
 
57
55
  it "should be able to return back an array of strings of the names of each entity" do
@@ -38,14 +38,14 @@ describe Wit::REST::Result do
38
38
  end
39
39
 
40
40
  it "should be refereshable if rest parameters and path/body are given and not if it isn't given" do
41
- expect(result.refreshable?).to be_true
42
- expect(not_refresh_result.refreshable?).to be_false
41
+ expect(result.refreshable?).to be_truthy
42
+ expect(not_refresh_result.refreshable?).to be_falsey
43
43
  end
44
44
 
45
45
  it "should have an empty method to check if the data is empty and return true if it is" do
46
- expect(result.empty?).to be_false
47
- expect(empty_hash.empty?).to be_true
48
- expect(empty_array.empty?).to be_true
46
+ expect(result.empty?).to be_falsey
47
+ expect(empty_hash.empty?).to be_truthy
48
+ expect(empty_array.empty?).to be_truthy
49
49
  end
50
50
 
51
51
  end
@@ -181,7 +181,7 @@ describe Wit::REST::Session do
181
181
 
182
182
  it "should get back the same message and have the same has as the sent message results" do
183
183
  expect(@resulting_message.msg_id).to eql(sent_message_id)
184
- expect(@resulting_message.msg_body).to eql(sent_message_result.msg_body)
184
+ expect(@resulting_message.outcomes[0]["_text"]).to eql(sent_message_result.outcomes[0]["_text"])
185
185
  end
186
186
  end
187
187
  end
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
26
- spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "rspec", "~> 3.0.0"
27
27
  spec.add_development_dependency "rspec-nc"
28
28
  spec.add_development_dependency "guard"
29
29
  spec.add_development_dependency "guard-rspec"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wit_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ching
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2014-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 3.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 3.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-nc
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -202,7 +202,8 @@ files:
202
202
  - ".coveralls.yml"
203
203
  - ".gitignore"
204
204
  - ".travis.yml"
205
- - CHANGELOG
205
+ - CHANGELOG.md
206
+ - CONTRIBUTORS.md
206
207
  - Gemfile
207
208
  - Guardfile
208
209
  - LICENSE.txt
data/CHANGELOG DELETED
@@ -1,32 +0,0 @@
1
- == 1.0.1
2
- * Added fix to raise an error if a sent message has a length that is not between 0 to 256.
3
-
4
- == 1.0.0
5
- * Yay! 1.0.0 for no reason! (Kinda.)
6
- * Added error checking to make sure input parameters to the session are correct.
7
- * Changed adding expression to not use the given BodyJson and instead, requires the use of just the name of the entity, value, and new expression.
8
-
9
- == 0.0.3
10
- * Implemented getting array of entities from instance (GET).
11
- * Implemented getting a specific entity from its name/id (GET).
12
- * Implemented creation of entities (POST).
13
- * Implemented the ability to update entities given the ID (PUT).
14
- * Implemented deletion of entities (DELETE).
15
- * Implemented addition of values (POST).
16
- * Implemented deletion of values (DELETE).
17
- * Implemented addition of expressions (POST).
18
- * Implemented deletion of expressions (DELETE).
19
- * Changed required Ruby version from 1.8.7 to 1.9.3
20
- * Added new class definition for post / put calls assistance. Helps with JSON generation.
21
-
22
- == 0.0.2
23
- * Implemented API call to get specific information from a sent message from it's given ID (GET).
24
- * Intent specific API calls functional (GET).
25
- * Changed description in gemspec.
26
- * Change results to be returned as specific objects that inherit from the original class Result.
27
- Message, Intent, Entity, Expression are the specific wrappers for results.
28
- * Made error check so that only specific results can be refreshed. Refreshable objects are ones that
29
- are directly returned from session calls.
30
-
31
- == 0.0.1
32
- * Implemented connection with wit.ai API and sending a text message (GET).