watson-client 0.0.1 → 0.1.1
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/README.md +22 -3
- data/lib/watson/conversation.rb +9 -4
- data/lib/watson/conversation_enhanced.rb +26 -0
- data/lib/watson/retrieve_and_rank.rb +7 -2
- data/lib/watson.rb +1 -0
- metadata +4 -3
- data/lib/watson/cluster.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 708f63fa2b0fc8d8401632cba3851fcea62ec86e
|
4
|
+
data.tar.gz: c939cdec985dbb758214bdd07c9db71c5c3cb9f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17d81c47cd0818d1f5a122ca2977be8f5cbad8bb9302e217bbca69b3901d0506d11021cc1a5b7ffcebbdb2b62215ef935cccf98fdf2d596d21aff0af36d381e4
|
7
|
+
data.tar.gz: 6dedc5fe97f496b03616d8c149b2458f8b1a670c9dc4281c994a8fd08c4c64d899f7b11497c8457d624c4b89fd55db96775be7e1d223309bc69881663c0da7b5
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Watson::Conversation.configure(
|
|
18
18
|
**Example:**
|
19
19
|
A simple response from your dialog model
|
20
20
|
```ruby
|
21
|
-
require 'watson
|
21
|
+
require 'watson'
|
22
22
|
|
23
23
|
client = Watson::Conversation.new
|
24
24
|
client.send_message('message one')
|
@@ -29,7 +29,7 @@ client.send_message('message two')
|
|
29
29
|
|
30
30
|
Try something different
|
31
31
|
```ruby
|
32
|
-
require 'watson
|
32
|
+
require 'watson'
|
33
33
|
|
34
34
|
puts 'Say Hi!'
|
35
35
|
user_input = nil
|
@@ -37,7 +37,8 @@ until user_input == 'q' || user_input == 'exit'
|
|
37
37
|
print '> '
|
38
38
|
user_input = gets.chomp
|
39
39
|
return if user_input == 'q' || user_input == 'exit'
|
40
|
-
client.send_message(user_input)
|
40
|
+
r = client.send_message(user_input)
|
41
|
+
puts r
|
41
42
|
sleep 0.5
|
42
43
|
end
|
43
44
|
```
|
@@ -59,3 +60,21 @@ responses = Watson::RetrieveAndRank.send_message('message')
|
|
59
60
|
```
|
60
61
|
|
61
62
|
The response is returned as a JSON array.
|
63
|
+
|
64
|
+
### Conversation Enhanced
|
65
|
+
Combination of Conversation API and Retrieve & Rank API. In order to get this class working you need to set both both configurations variables.
|
66
|
+
If the `Conversation` class detects an unknown message, we call `RetrieveAndRank` with the intent name of that unknown message, so we need to set that intent name in the constructor of `ConversationEnhanced` class.
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
client = Watson::ConversationEnhanced.new('INTENT_NAME')
|
70
|
+
user_input = nil
|
71
|
+
until user_input == 'q' || user_input == 'exit'
|
72
|
+
print '> '
|
73
|
+
user_input = gets.chomp
|
74
|
+
return if user_input == 'q' || user_input == 'exit'
|
75
|
+
r = client.send_message(user_input)
|
76
|
+
puts r
|
77
|
+
sleep 0.5
|
78
|
+
end
|
79
|
+
|
80
|
+
```
|
data/lib/watson/conversation.rb
CHANGED
@@ -12,9 +12,10 @@ module Watson
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def send_message(message = '')
|
15
|
-
|
15
|
+
return if message.empty?
|
16
|
+
@message = message
|
17
|
+
params = { input: { text: @message }, alternate_intents: true }
|
16
18
|
params.merge!(@context) unless @context.nil?
|
17
|
-
|
18
19
|
response = Excon.post(url,
|
19
20
|
body: params.to_json,
|
20
21
|
headers: {
|
@@ -24,9 +25,13 @@ module Watson
|
|
24
25
|
user: @@username,
|
25
26
|
password: @@password)
|
26
27
|
result = JSON.parse(response.body)
|
27
|
-
|
28
28
|
@context = { context: result['context'] }
|
29
|
-
|
29
|
+
build_response(result)
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_response(result)
|
33
|
+
{ source: 'conversation', intent: result['intents'][0]['intent'],
|
34
|
+
message: @message, tittle: @message, body: result['output']['text'] }
|
30
35
|
end
|
31
36
|
|
32
37
|
def url
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Watson
|
2
|
+
class ConversationEnhanced < Conversation
|
3
|
+
|
4
|
+
def initialize(intent = '')
|
5
|
+
@intent = intent
|
6
|
+
end
|
7
|
+
|
8
|
+
def send_message(message = '')
|
9
|
+
return if message.empty?
|
10
|
+
response = super
|
11
|
+
if must_retrieve?(response[:intent])
|
12
|
+
retrieve_and_rank(message)
|
13
|
+
else
|
14
|
+
response
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def must_retrieve?(result)
|
19
|
+
result == @intent
|
20
|
+
end
|
21
|
+
|
22
|
+
def retrieve_and_rank(message)
|
23
|
+
RetrieveAndRank.send_message(message)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -9,7 +9,9 @@ module Watson
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.send_message(message = '')
|
12
|
-
|
12
|
+
return if message.empty?
|
13
|
+
@message = message
|
14
|
+
query = URI.encode(@message)
|
13
15
|
response = Excon.post(url(query),
|
14
16
|
headers: {
|
15
17
|
'Content-Type' => 'application/json',
|
@@ -22,7 +24,10 @@ module Watson
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def self.answers(data)
|
25
|
-
data.
|
27
|
+
data.collect do |d|
|
28
|
+
{ source: 'retrieveandrank', intent: '',
|
29
|
+
message: @message, tittle: d['title'], body: d['body'] }
|
30
|
+
end
|
26
31
|
end
|
27
32
|
|
28
33
|
def self.url(query)
|
data/lib/watson.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watson-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Andres Torres Cruz
|
@@ -24,7 +24,8 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
description:
|
27
|
+
description: REST API client for IBM Watson™ services, Conversation, Retrieve & Rank,
|
28
|
+
Conversation enhanced services are available
|
28
29
|
email: carlosandrestorres28@gmail.com
|
29
30
|
executables: []
|
30
31
|
extensions: []
|
@@ -32,8 +33,8 @@ extra_rdoc_files: []
|
|
32
33
|
files:
|
33
34
|
- README.md
|
34
35
|
- lib/watson.rb
|
35
|
-
- lib/watson/cluster.rb
|
36
36
|
- lib/watson/conversation.rb
|
37
|
+
- lib/watson/conversation_enhanced.rb
|
37
38
|
- lib/watson/retrieve_and_rank.rb
|
38
39
|
homepage: https://github.com/katorres02/w-ruby
|
39
40
|
licenses:
|
data/lib/watson/cluster.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Watson
|
2
|
-
class Cluster
|
3
|
-
attr_reader :solr_cluster_id, :cluster_name, :cluster_size,
|
4
|
-
:solr_cluster_status
|
5
|
-
|
6
|
-
def initialize(options = {})
|
7
|
-
@solr_cluster_id = options['solr_cluster_id']
|
8
|
-
@cluster_name = options['cluster_name']
|
9
|
-
@cluster_size = options['cluster_size']
|
10
|
-
@solr_cluster_status = options['solr_cluster_status']
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|