wit_bot 0.2.2 → 0.3.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.
- checksums.yaml +4 -4
- data/bin/console +4 -0
- data/examples/bot.rb +1 -8
- data/examples/hash.rb +20 -0
- data/examples/hash_with_bot.rb +25 -0
- data/examples/helpers/helpers.rb +6 -0
- data/examples/thread.rb +1 -10
- data/lib/wit_bot.rb +1 -4
- data/lib/wit_bot/bot/conversation/base.rb +15 -0
- data/lib/wit_bot/bot/models/message.rb +7 -0
- data/lib/wit_bot/models/context.rb +13 -2
- data/lib/wit_bot/models/context_entities.rb +10 -1
- data/lib/wit_bot/models/message.rb +36 -1
- data/lib/wit_bot/models/message_thread.rb +27 -0
- data/lib/wit_bot/models/wit/entity/entity_value.rb +1 -0
- data/lib/wit_bot/requests/message_request.rb +1 -1
- data/lib/wit_bot/requests/wit_request.rb +3 -3
- data/lib/wit_bot/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3f3caa74bcc0204ca38bd033d658a6f29d7d214
|
4
|
+
data.tar.gz: 8d5abcd72bc96298c507448768b7e7cd71f06b55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a40fb576433b153099d0fa3d0ec23617de5ccdc345975683872a65e173f1081f016b2add0e37b0dc6b142276f435ab95dca8f6fb696922bde1423160f6301f2a
|
7
|
+
data.tar.gz: ed106aafccb46edc139e9e18ccdf827b0372dcf86a179aa81481ff7d061387d3a5d3fc3217b0bad74b3bf2f00e77ebb1aefbe86cc0180e1c8bbe456e4cd35a3f
|
data/bin/console
CHANGED
data/examples/bot.rb
CHANGED
@@ -1,13 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative '../lib/wit_bot'
|
4
|
-
|
1
|
+
require_relative 'helpers/helpers'
|
5
2
|
require_relative 'bot/bot'
|
6
3
|
|
7
|
-
WitBot.configure do |c|
|
8
|
-
c.token = ENV['WIT_ACCESS_TOKEN'] # Create a wit bot and set the token here
|
9
|
-
end
|
10
|
-
|
11
4
|
conversation = WitBot::Bot::Conversation::Base.new
|
12
5
|
|
13
6
|
bot = Bot.new conversation
|
data/examples/hash.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'helpers/helpers'
|
2
|
+
|
3
|
+
old = WitBot::Bot::Conversation::Base.new # Create a conversation
|
4
|
+
|
5
|
+
old.send_message 'This is a cool test.' # Sent a message
|
6
|
+
|
7
|
+
hash = old.as_json # Convert conversation to a hash suitable for json use.
|
8
|
+
|
9
|
+
new = WitBot::Bot::Conversation::Base.from_hash hash # Recreate the conversation from the hash
|
10
|
+
|
11
|
+
puts 'Hash:'
|
12
|
+
|
13
|
+
ap hash # Print the hash
|
14
|
+
|
15
|
+
puts "\nSize: #{hash.to_json.length.to_s :human_size}"
|
16
|
+
|
17
|
+
puts "\nOld vs New:\n\n"
|
18
|
+
|
19
|
+
p old # Print old and new on top of each other for comparison.
|
20
|
+
p new
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'helpers/helpers'
|
2
|
+
require_relative 'bot/bot'
|
3
|
+
|
4
|
+
old = WitBot::Bot::Conversation::Base.new # Create a conversation
|
5
|
+
|
6
|
+
Bot.new old
|
7
|
+
|
8
|
+
old.send_message 'This is a cool test.' # Sent a message
|
9
|
+
|
10
|
+
hash = old.as_json # Convert conversation to a hash suitable for json use.
|
11
|
+
|
12
|
+
new = WitBot::Bot::Conversation::Base.from_hash hash # Recreate the conversation from the hash
|
13
|
+
|
14
|
+
Bot.new new
|
15
|
+
|
16
|
+
puts 'Hash:'
|
17
|
+
|
18
|
+
ap hash # Print the hash
|
19
|
+
|
20
|
+
puts "\nSize: #{hash.to_json.length.to_s :human_size}"
|
21
|
+
|
22
|
+
puts "\nOld vs New:\n\n"
|
23
|
+
|
24
|
+
p old # Print old and new on top of each other for comparison.
|
25
|
+
p new
|
data/examples/thread.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'awesome_print'
|
4
|
-
require 'wit_bot'
|
5
|
-
|
6
|
-
WitBot.configure do |c|
|
7
|
-
c.token = ENV['WIT_ACCESS_TOKEN'] # Create a wit bot and set the token here
|
8
|
-
end
|
9
|
-
|
10
|
-
thread = WitBot.thread # Create a new thread
|
1
|
+
require_relative 'helpers/helpers'
|
11
2
|
|
12
3
|
message = thread.create_message 'This is a cool test' # Create a normal message on the thread
|
13
4
|
|
data/lib/wit_bot.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
require 'active_support/
|
2
|
-
require 'active_support/core_ext/module/attribute_accessors'
|
3
|
-
require 'active_support/ordered_hash'
|
4
|
-
require 'active_support/concern'
|
1
|
+
require 'active_support/all'
|
5
2
|
require 'http'
|
6
3
|
require 'require_all'
|
7
4
|
require 'observer'
|
@@ -38,6 +38,21 @@ module WitBot
|
|
38
38
|
notify_observers :output, message
|
39
39
|
message
|
40
40
|
end
|
41
|
+
|
42
|
+
def to_hash
|
43
|
+
{
|
44
|
+
thread: @thread
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def from_hash(json)
|
49
|
+
@thread = WitBot::MessageThread.from_hash json[:thread]
|
50
|
+
self
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.from_hash(json)
|
54
|
+
self.new.from_hash json.with_indifferent_access
|
55
|
+
end
|
41
56
|
end
|
42
57
|
end
|
43
58
|
end
|
@@ -4,6 +4,13 @@ module WitBot
|
|
4
4
|
def bot?
|
5
5
|
true
|
6
6
|
end
|
7
|
+
def from_hash(json)
|
8
|
+
@_text = json[:_text]
|
9
|
+
self
|
10
|
+
end
|
11
|
+
def self.from_hash(thread, id, json)
|
12
|
+
self.new(thread, json[:text], id: id).from_hash json
|
13
|
+
end
|
7
14
|
def send
|
8
15
|
throw "You can't send a bot message."
|
9
16
|
end
|
@@ -8,14 +8,14 @@ module WitBot
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def empty?
|
11
|
-
|
11
|
+
to_hash.empty?
|
12
12
|
end
|
13
13
|
|
14
14
|
def entities
|
15
15
|
@entities ||= ContextEntities.new
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def to_hash
|
19
19
|
h = {}
|
20
20
|
h[:state] = state if state && !state.empty?
|
21
21
|
h[:reference_time] = reference_time.iso8601 if reference_time
|
@@ -23,5 +23,16 @@ module WitBot
|
|
23
23
|
h[:location] = location if location
|
24
24
|
h
|
25
25
|
end
|
26
|
+
|
27
|
+
def from_hash(h)
|
28
|
+
@state = Array.wrap h[:state]
|
29
|
+
@reference_time = Date.parse h[:reference_time] if h[:reference_time]
|
30
|
+
@entities = ContextEntities.from_hash h[:entities] if h[:entities]
|
31
|
+
@location = h[:location]
|
32
|
+
self
|
33
|
+
end
|
34
|
+
def self.from_hash(json)
|
35
|
+
self.new.from_hash json
|
36
|
+
end
|
26
37
|
end
|
27
38
|
end
|
@@ -9,10 +9,19 @@ module WitBot
|
|
9
9
|
def []=(entity, value, expressions=[value])
|
10
10
|
@hash[entity] = value.is_a?(EntityValue) ? value : EntityValue.new(value, expressions)
|
11
11
|
end
|
12
|
-
def
|
12
|
+
def to_hash
|
13
13
|
@hash.map do |id, values|
|
14
14
|
{id: id, values: values}
|
15
15
|
end
|
16
16
|
end
|
17
|
+
def from_hash(json)
|
18
|
+
json.each do |object|
|
19
|
+
self[object[:id]] = EntityValue.new object[:values]
|
20
|
+
end
|
21
|
+
self
|
22
|
+
end
|
23
|
+
def self.from_hash(json)
|
24
|
+
self.new.from_hash json
|
25
|
+
end
|
17
26
|
end
|
18
27
|
end
|
@@ -15,6 +15,32 @@ module WitBot
|
|
15
15
|
false
|
16
16
|
end
|
17
17
|
|
18
|
+
def to_hash
|
19
|
+
{
|
20
|
+
text: @text,
|
21
|
+
_text: @_text,
|
22
|
+
id: @id,
|
23
|
+
bot: bot?,
|
24
|
+
sent: @sent,
|
25
|
+
_outcomes: @_outcomes
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def from_hash(json)
|
30
|
+
@_text = json[:_text]
|
31
|
+
@sent = json[:sent]
|
32
|
+
@_outcomes = json[:_outcomes]
|
33
|
+
parse_outcomes!
|
34
|
+
self
|
35
|
+
end
|
36
|
+
def self.from_hash(thread, id, json)
|
37
|
+
return Bot::Message.from_hash thread, id, json if json[:bot]
|
38
|
+
self.new(thread, json[:text], id: id).from_hash json
|
39
|
+
end
|
40
|
+
def self.many_from_hash(thread, json)
|
41
|
+
json.inject({}) { |h, (id, message)| h[id] = self.from_hash thread, id, message; h }
|
42
|
+
end
|
43
|
+
|
18
44
|
def params(p=nil)
|
19
45
|
params = {
|
20
46
|
q: text,
|
@@ -33,11 +59,20 @@ module WitBot
|
|
33
59
|
|
34
60
|
@_text = response['_text']
|
35
61
|
@_outcomes = response['outcomes']
|
36
|
-
|
62
|
+
|
63
|
+
parse_outcomes!
|
37
64
|
|
38
65
|
self
|
39
66
|
end
|
40
67
|
|
68
|
+
def parse_outcomes(outcomes=@_outcomes)
|
69
|
+
outcomes.each_with_index.map { |outcome, i| Outcome.new self, outcome, i }
|
70
|
+
end
|
71
|
+
|
72
|
+
def parse_outcomes!(outcomes=@_outcomes)
|
73
|
+
@outcomes = parse_outcomes outcomes
|
74
|
+
end
|
75
|
+
|
41
76
|
def outcome
|
42
77
|
outcomes.first
|
43
78
|
end
|
@@ -8,6 +8,7 @@ module WitBot
|
|
8
8
|
@id = id
|
9
9
|
@messages = ActiveSupport::OrderedHash.new
|
10
10
|
@bot_messages = ActiveSupport::OrderedHash.new
|
11
|
+
@metadata = nil
|
11
12
|
end
|
12
13
|
|
13
14
|
def message(id)
|
@@ -35,5 +36,31 @@ module WitBot
|
|
35
36
|
def reset_context
|
36
37
|
@context = Context.new
|
37
38
|
end
|
39
|
+
|
40
|
+
def to_hash
|
41
|
+
{
|
42
|
+
id: @id,
|
43
|
+
context: @context,
|
44
|
+
messages: {
|
45
|
+
bot: @bot_messages,
|
46
|
+
user: @messages
|
47
|
+
},
|
48
|
+
metadata: @metadata
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def from_hash(json)
|
53
|
+
m = json[:messages]
|
54
|
+
@messages = WitBot::Message.many_from_hash(self, m[:user])
|
55
|
+
@bot_messages = WitBot::Message.many_from_hash(self, m[:bot])
|
56
|
+
|
57
|
+
@context = Context.from_hash json[:context]
|
58
|
+
@metadata = json[:metadata]
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.from_hash(json)
|
63
|
+
self.new(json[:id]).from_hash json
|
64
|
+
end
|
38
65
|
end
|
39
66
|
end
|
@@ -5,10 +5,10 @@ module WitBot
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def request(request=http)
|
8
|
+
response = process_response request.parse
|
8
9
|
if request.code.between? 200, 299
|
9
|
-
|
10
|
+
response
|
10
11
|
else
|
11
|
-
response = request.parse.with_indifferent_access
|
12
12
|
raise WitError.new(response[:status]), (response[:error] || response[:body])
|
13
13
|
end
|
14
14
|
end
|
@@ -17,7 +17,7 @@ module WitBot
|
|
17
17
|
def process_response(response)
|
18
18
|
if response.respond_to? :with_indifferent_access
|
19
19
|
response.with_indifferent_access
|
20
|
-
elsif response.
|
20
|
+
elsif response.is_a? Array
|
21
21
|
response.map {|r| process_response r}
|
22
22
|
else
|
23
23
|
response
|
data/lib/wit_bot/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wit_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben (@penne12_)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,6 +114,9 @@ files:
|
|
114
114
|
- bin/wit
|
115
115
|
- examples/bot.rb
|
116
116
|
- examples/bot/bot.rb
|
117
|
+
- examples/hash.rb
|
118
|
+
- examples/hash_with_bot.rb
|
119
|
+
- examples/helpers/helpers.rb
|
117
120
|
- examples/simple.rb
|
118
121
|
- examples/thread.rb
|
119
122
|
- lib/wit_bot.rb
|