wit 6.0.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/ISSUE_TEMPLATE.md +9 -0
- data/CHANGES.md +5 -0
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +34 -0
- data/README.md +87 -25
- data/examples/basic.rb +2 -0
- data/examples/celebrities.rb +14 -6
- data/examples/joke.rb +12 -9
- data/examples/wit-example-celebrities.zip +0 -0
- data/examples/wit-example-joke-bot.zip +0 -0
- data/lib/wit.rb +64 -26
- data/wit.gemspec +3 -2
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1a15b6f521d5b67b3c2d512e1ea9262ef4b1e39109e22eb9822a10aabe8e7b34
|
4
|
+
data.tar.gz: 6fd43d27a1edc8ccba793c45ca0fac4e90f9c27d265b3a105135e1bfb85b707e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eed12472514c8efdcbf6716b637aed58820dd98c437703566c027a10b57dca54877011d02dbc173e326aad8f7fa6a7d6c28ca499161070a73b913e73d840b650
|
7
|
+
data.tar.gz: 6d6f64a64117a9fd39ba9eb6074e3b7dc17bad80e48382930ea21f4584b2a1c96b5289df4ffdc6623ab8691d10c4af515f112551fd8e787184dec83e8fa01091
|
@@ -0,0 +1,9 @@
|
|
1
|
+
**Do you want to request a *feature*, report a *bug*, or ask a *question* about wit-ruby?**
|
2
|
+
|
3
|
+
**What is the current behavior?**
|
4
|
+
|
5
|
+
**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem.**
|
6
|
+
|
7
|
+
**What is the expected behavior?**
|
8
|
+
|
9
|
+
**If applicable, what is the App ID where you are experiencing this issue? If you do not provide this, we cannot help.**
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## v7.0.0
|
2
|
+
- Updated API version to latest: `20200513`. Browse the latest HTTP API documentation [here](https://wit.ai/docs/http/20200513#get__message_link).
|
3
|
+
- Added intents and traits CRUD methods.
|
4
|
+
- More consistent, transparent naming of entities methods.
|
5
|
+
|
1
6
|
## v6.0.0
|
2
7
|
The most important change is the removal of `.converse()` and `.run_actions()`. Follow the migration tutorial [here](https://github.com/wit-ai/wit-stories-migration-tutorial), or [read more here](https://wit.ai/blog/2017/07/27/sunsetting-stories).
|
3
8
|
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to make participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
9
|
+
level of experience, education, socio-economic status, nationality, personal
|
10
|
+
appearance, race, religion, or sexual identity and orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies within all project spaces, and it also applies when
|
49
|
+
an individual is representing the project or its community in public spaces.
|
50
|
+
Examples of representing a project or community include using an official
|
51
|
+
project e-mail address, posting via an official social media account, or acting
|
52
|
+
as an appointed representative at an online or offline event. Representation of
|
53
|
+
a project may be further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at <opensource-conduct@fb.com>. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
72
|
+
|
73
|
+
[homepage]: https://www.contributor-covenant.org
|
74
|
+
|
75
|
+
For answers to common questions about this code of conduct, see
|
76
|
+
https://www.contributor-covenant.org/faq
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Contributing to wit-ruby
|
2
|
+
|
3
|
+
We want to make contributing to this project as easy and transparent as
|
4
|
+
possible.
|
5
|
+
|
6
|
+
## Pull Requests
|
7
|
+
We actively welcome your pull requests.
|
8
|
+
|
9
|
+
1. Fork the repo and create your branch from `master`.
|
10
|
+
2. If you've added code that should be tested, add tests.
|
11
|
+
3. If you've changed APIs, update the documentation.
|
12
|
+
4. Ensure the test suite passes.
|
13
|
+
5. If you haven't already, complete the Contributor License Agreement ("CLA").
|
14
|
+
|
15
|
+
## Contributor License Agreement ("CLA")
|
16
|
+
|
17
|
+
In order to accept your pull request, we need you to submit a CLA. You only need
|
18
|
+
to do this once to work on any of Facebook's open source projects.
|
19
|
+
|
20
|
+
Complete your CLA here: <https://code.facebook.com/cla>
|
21
|
+
|
22
|
+
## Issues
|
23
|
+
|
24
|
+
We use GitHub issues to track public bugs. Please ensure your description is
|
25
|
+
clear and has sufficient instructions to be able to reproduce the issue.
|
26
|
+
|
27
|
+
Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe
|
28
|
+
disclosure of security bugs. In those cases, please go through the process
|
29
|
+
outlined on that page and do not file a public issue.
|
30
|
+
|
31
|
+
## License
|
32
|
+
|
33
|
+
By contributing to wit-ruby, you agree that your contributions will be licensed
|
34
|
+
under the LICENSE file in the root directory of this source tree.
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ See the `examples` folder for more examples.
|
|
31
31
|
### Overview
|
32
32
|
|
33
33
|
`wit-ruby` provides a Wit class with the following methods:
|
34
|
-
* `message` - the Wit [message API](https://wit.ai/docs/http/
|
34
|
+
* `message` - the Wit [message API](https://wit.ai/docs/http/20200513#get-intent-via-text-link)
|
35
35
|
* `interactive` - starts an interactive conversation with your bot
|
36
36
|
|
37
37
|
### Wit class
|
@@ -49,7 +49,7 @@ client.message('set an alarm tomorrow at 7am')
|
|
49
49
|
|
50
50
|
### .message()
|
51
51
|
|
52
|
-
The Wit [message API](https://wit.ai/docs/http/
|
52
|
+
The Wit [message API](https://wit.ai/docs/http/20200513#get-intent-via-text-link).
|
53
53
|
|
54
54
|
Takes the following parameters:
|
55
55
|
* `msg` - the text you want Wit.ai to extract the information from
|
@@ -69,44 +69,91 @@ Example:
|
|
69
69
|
client.interactive
|
70
70
|
```
|
71
71
|
|
72
|
+
### CRUD operations for intents
|
73
|
+
`payload` in the parameters is a hash containing API arguments.
|
74
|
+
|
75
|
+
#### .get_intents()
|
76
|
+
Returns a list of available intents for the app.
|
77
|
+
See [GET /intents](https://wit.ai/docs/http/20200513#get__intents_link).
|
78
|
+
|
79
|
+
#### .get_intent(intent)
|
80
|
+
Returns all available information about an intent.
|
81
|
+
See [GET /intents/:intent](https://wit.ai/docs/http/20200513#get__intents__intent_link).
|
82
|
+
|
83
|
+
#### .post_intents(payload)
|
84
|
+
Creates a new intent.
|
85
|
+
See [POST /intents](https://wit.ai/docs/http/20200513#post__intents_link).
|
86
|
+
|
87
|
+
#### .delete_intents(intent)
|
88
|
+
Permanently deletes the intent.
|
89
|
+
See [DELETE /intents/:intent](https://wit.ai/docs/http/20200513#delete__intents__intent_link).
|
90
|
+
|
72
91
|
### CRUD operations for entities
|
73
|
-
payload in the parameters is a hash containing API arguments
|
92
|
+
`payload` in the parameters is a hash containing API arguments.
|
74
93
|
|
75
94
|
#### .get_entities()
|
76
95
|
Returns a list of available entities for the app.
|
77
|
-
See [GET /entities](https://wit.ai/docs/http/
|
96
|
+
See [GET /entities](https://wit.ai/docs/http/20200513#get--entities-link)
|
78
97
|
|
79
98
|
#### .post_entities(payload)
|
80
99
|
Creates a new entity with the given attributes.
|
81
|
-
See [POST /entities](https://wit.ai/docs/http/
|
100
|
+
See [POST /entities](https://wit.ai/docs/http/20200513#post--entities-link)
|
82
101
|
|
83
|
-
#### .get_entity(
|
84
|
-
Returns all the
|
85
|
-
See [GET /entities/:entity
|
102
|
+
#### .get_entity(entity)
|
103
|
+
Returns all the information available for an entity.
|
104
|
+
See [GET /entities/:entity](https://wit.ai/docs/http/20200513#get--entities-:entity-link)
|
86
105
|
|
87
|
-
#### .put_entities(
|
106
|
+
#### .put_entities(entity, payload)
|
88
107
|
Updates an entity with the given attributes.
|
89
|
-
See [PUT /entities/:entity
|
108
|
+
See [PUT /entities/:entity](https://wit.ai/docs/http/20200513#put--entities-:entity-link)
|
109
|
+
|
110
|
+
#### .delete_entities(entity)
|
111
|
+
Permanently removes the entity.
|
112
|
+
See [DELETE /entities/:entity](https://wit.ai/docs/http/20200513#delete--entities-:entity-link)
|
113
|
+
|
114
|
+
#### .post_entities_keywords(entity, payload)
|
115
|
+
Adds a possible value into the list of keywords for the keywords entity.
|
116
|
+
See [POST /entities/:entity/keywords](https://wit.ai/docs/http/20160526#post--entities-:entity-id-values-link)
|
117
|
+
|
118
|
+
#### .delete_entities_keywords(entity, keyword)
|
119
|
+
Deletes a keyword from the entity.
|
120
|
+
See [DELETE /entities/:entity/keywords/:keyword](https://wit.ai/docs/http/20200513#delete--entities-:entity-keywords-link)
|
121
|
+
|
122
|
+
#### .post_entities_keywords_synonyms(entity, keyword, payload)
|
123
|
+
Creates a new synonym for the keyword of the entity.
|
124
|
+
See [POST /entities/:entity/keywords/:keyword/synonyms](https://wit.ai/docs/http/20200513#post--entities-:entity-keywords-:keyword-synonyms-link)
|
125
|
+
|
126
|
+
#### delete_entities_keywords_synonyms(entity, keyword, synonym)
|
127
|
+
Deletes a synonym of the keyword of the entity.
|
128
|
+
See [DELETE /entities/:entity/keywords/:keyword/synonyms/:synonym](https://wit.ai/docs/http/20200513#delete--entities-:entity-keywords-:keyword-synonyms-link)
|
129
|
+
|
130
|
+
### CRUD operations for traits
|
131
|
+
`payload` in the parameters is a hash containing API arguments.
|
90
132
|
|
91
|
-
#### .
|
92
|
-
|
93
|
-
See [
|
133
|
+
#### .get_traits()
|
134
|
+
Returns a list of available traits for the app.
|
135
|
+
See [GET /traits](https://wit.ai/docs/http/20200513#get__traits_link).
|
94
136
|
|
95
|
-
#### .
|
96
|
-
|
97
|
-
See [
|
137
|
+
#### .get_trait(trait)
|
138
|
+
Returns all available information about a trait.
|
139
|
+
See [GET /traits/:trait](https://wit.ai/docs/http/20200513#get__traits__trait_link).
|
98
140
|
|
99
|
-
#### .
|
100
|
-
|
101
|
-
See [
|
141
|
+
#### .post_traits(payload)
|
142
|
+
Creates a new trait.
|
143
|
+
See [POST /traits](https://wit.ai/docs/http/20200513#post__traits_link).
|
102
144
|
|
103
|
-
####
|
104
|
-
|
105
|
-
See [POST /
|
145
|
+
#### .post_traits_values(trait, payload)
|
146
|
+
Adds a new value to an existing trait.
|
147
|
+
See [POST /traits/:trait/values](https://wit.ai/docs/http/20200513#post__traits__trait_values_link).
|
148
|
+
|
149
|
+
#### .delete_traits_values(trait, value)
|
150
|
+
Permanently deletes a value of an existing trait.
|
151
|
+
See [POST /traits/:trait/values](https://wit.ai/docs/http/20200513#delete__traits__trait_values_link).
|
152
|
+
|
153
|
+
#### .delete_traits(trait)
|
154
|
+
Permanently deletes the trait.
|
155
|
+
See [DELETE /traits/:trait](https://wit.ai/docs/http/20200513#delete__traits__trait_link).
|
106
156
|
|
107
|
-
#### delete_expressions(entity_id, value, expression)
|
108
|
-
Delete an expression of the canonical value of the entity.
|
109
|
-
See [DELETE /entities/:entity-id/values/:value/expressions/:expression](https://wit.ai/docs/http/20160526#delete--entities-:entity-id-values-:value-id-expressions-link)
|
110
157
|
|
111
158
|
See the [docs](https://wit.ai/docs) for more information.
|
112
159
|
|
@@ -123,3 +170,18 @@ See the [Logger class](http://ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logge
|
|
123
170
|
## Thanks
|
124
171
|
|
125
172
|
Thanks to [Justin Workman](http://github.com/xtagon) for releasing a first version in October 2013. We really appreciate!
|
173
|
+
|
174
|
+
|
175
|
+
## License
|
176
|
+
|
177
|
+
The license for wit-ruby can be found in LICENSE file in the root directory of this source tree.
|
178
|
+
|
179
|
+
|
180
|
+
## Terms of Use
|
181
|
+
|
182
|
+
Our terms of use can be found at https://opensource.facebook.com/legal/terms.
|
183
|
+
|
184
|
+
|
185
|
+
## Privacy Policy
|
186
|
+
|
187
|
+
Our privacy policy can be found at https://opensource.facebook.com/legal/privacy.
|
data/examples/basic.rb
CHANGED
data/examples/celebrities.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
2
|
+
|
1
3
|
require 'wit'
|
2
4
|
|
3
5
|
if ARGV.length == 0
|
@@ -9,19 +11,25 @@ access_token = ARGV[0]
|
|
9
11
|
ARGV.shift
|
10
12
|
|
11
13
|
# Celebrities example
|
12
|
-
# See https://wit.ai/
|
14
|
+
# See https://wit.ai/aleka/wit-example-celebrities/
|
13
15
|
|
14
|
-
def
|
16
|
+
def first_entity_resolved_value(entities, entity)
|
15
17
|
return nil unless entities.has_key? entity
|
16
|
-
val = entities[entity][0]['
|
18
|
+
val = entities[entity][0]['resolved']['values'][0]
|
19
|
+
return nil if val.nil?
|
20
|
+
return val
|
21
|
+
end
|
22
|
+
|
23
|
+
def first_trait_value(traits, trait)
|
24
|
+
return nil unless traits.has_key? trait
|
25
|
+
val = traits[trait][0]['value']
|
17
26
|
return nil if val.nil?
|
18
27
|
return val
|
19
28
|
end
|
20
29
|
|
21
30
|
def handle_message(response)
|
22
|
-
|
23
|
-
|
24
|
-
celebrity = first_entity_value(entities, 'notable_person')
|
31
|
+
greetings = first_trait_value(response['traits'], 'wit$greetings')
|
32
|
+
celebrity = first_entity_resolved_value(response['entities'], 'wit$notable_person:notable_person')
|
25
33
|
|
26
34
|
case
|
27
35
|
when celebrity
|
data/examples/joke.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
2
|
+
|
1
3
|
require 'wit'
|
2
4
|
|
3
5
|
if ARGV.length == 0
|
@@ -9,13 +11,13 @@ access_token = ARGV[0]
|
|
9
11
|
ARGV.shift
|
10
12
|
|
11
13
|
# Joke example
|
12
|
-
# See https://wit.ai/
|
14
|
+
# See https://wit.ai/aleka/wit-example-joke-bot/
|
13
15
|
|
14
|
-
def
|
15
|
-
return nil unless
|
16
|
-
val =
|
16
|
+
def first_value(obj, key)
|
17
|
+
return nil unless obj.has_key? key
|
18
|
+
val = obj[key][0]['value']
|
17
19
|
return nil if val.nil?
|
18
|
-
return val
|
20
|
+
return val
|
19
21
|
end
|
20
22
|
|
21
23
|
$all_jokes = {
|
@@ -34,10 +36,11 @@ $all_jokes = {
|
|
34
36
|
|
35
37
|
def handle_message(response)
|
36
38
|
entities = response['entities']
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
traits = response['traits']
|
40
|
+
get_joke = first_value(traits, 'getJoke')
|
41
|
+
greetings = first_value(traits, 'wit$greetings')
|
42
|
+
category = first_value(entities, 'category:category')
|
43
|
+
sentiment = first_value(traits, 'wit$sentiment')
|
41
44
|
|
42
45
|
case
|
43
46
|
when get_joke
|
Binary file
|
Binary file
|
data/lib/wit.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
require 'logger'
|
3
5
|
require 'net/http'
|
@@ -7,8 +9,7 @@ class Wit
|
|
7
9
|
class Error < StandardError; end
|
8
10
|
|
9
11
|
WIT_API_HOST = ENV['WIT_URL'] || 'https://api.wit.ai'
|
10
|
-
WIT_API_VERSION = ENV['WIT_API_VERSION'] || '
|
11
|
-
DEFAULT_MAX_STEPS = 5
|
12
|
+
WIT_API_VERSION = ENV['WIT_API_VERSION'] || '20200513'
|
12
13
|
LEARN_MORE = 'Learn more at https://wit.ai/docs/quickstart'
|
13
14
|
|
14
15
|
def initialize(opts = {})
|
@@ -58,48 +59,88 @@ class Wit
|
|
58
59
|
puts
|
59
60
|
end
|
60
61
|
|
62
|
+
def get_intents
|
63
|
+
req(logger, @access_token, Net::HTTP::Get, "/intents")
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_intent(intent)
|
67
|
+
req(logger, @access_token, Net::HTTP::Get, "/intents/#{URI.encode(intent)}")
|
68
|
+
end
|
69
|
+
|
70
|
+
def post_intents(payload)
|
71
|
+
req(logger, @access_token, Net::HTTP::Post, "/intents", {}, payload)
|
72
|
+
end
|
73
|
+
|
74
|
+
def delete_intents(intent)
|
75
|
+
req(logger, @access_token, Net::HTTP::Delete, "/intents/#{URI.encode(intent)}")
|
76
|
+
end
|
77
|
+
|
61
78
|
def get_entities
|
62
79
|
req(logger, @access_token, Net::HTTP::Get, "/entities")
|
63
80
|
end
|
64
81
|
|
65
82
|
def post_entities(payload)
|
66
|
-
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:
|
83
|
+
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:name, :roles, :lookups, :keywords].include?(k) }
|
67
84
|
validate_payload payload
|
68
85
|
req(logger, @access_token, Net::HTTP::Post, "/entities", {}, payload)
|
69
86
|
end
|
70
87
|
|
71
|
-
def get_entity(
|
72
|
-
req(logger, @access_token, Net::HTTP::Get, "/entities/#{URI.encode(
|
88
|
+
def get_entity(entity)
|
89
|
+
req(logger, @access_token, Net::HTTP::Get, "/entities/#{URI.encode(entity)}")
|
73
90
|
end
|
74
91
|
|
75
|
-
def put_entities(
|
76
|
-
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:
|
92
|
+
def put_entities(entity, payload)
|
93
|
+
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:name, :roles, :lookups, :keywords].include?(k) }
|
77
94
|
validate_payload payload
|
78
|
-
req(logger, @access_token, Net::HTTP::Put, "/entities/#{URI.encode(
|
95
|
+
req(logger, @access_token, Net::HTTP::Put, "/entities/#{URI.encode(entity)}", {}, payload)
|
79
96
|
end
|
80
97
|
|
81
|
-
def delete_entities(
|
82
|
-
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(
|
98
|
+
def delete_entities(entity)
|
99
|
+
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}")
|
83
100
|
end
|
84
101
|
|
85
|
-
def
|
86
|
-
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:
|
102
|
+
def post_entities_keywords(entity, payload)
|
103
|
+
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:keyword, :synonyms].include?(k) }
|
87
104
|
validate_payload payload
|
88
|
-
req(logger, @access_token, Net::HTTP::Post, "/entities/#{URI.encode(
|
105
|
+
req(logger, @access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity)}/keywords", {}, payload)
|
89
106
|
end
|
90
107
|
|
91
|
-
def
|
92
|
-
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(
|
108
|
+
def delete_entities_keywords(entity, keyword)
|
109
|
+
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}")
|
93
110
|
end
|
94
111
|
|
95
|
-
def
|
96
|
-
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:
|
112
|
+
def post_entities_keywords_synonyms(entity, keyword, payload)
|
113
|
+
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:synonym].include?(k) }
|
97
114
|
validate_payload payload
|
98
|
-
req(logger,@access_token, Net::HTTP::Post, "/entities/#{URI.encode(
|
115
|
+
req(logger,@access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}/synonyms", {}, payload)
|
116
|
+
end
|
117
|
+
|
118
|
+
def delete_entities_keywords_synonyms(entity, keyword, synonym)
|
119
|
+
req(logger,@access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}/synonyms/#{URI.encode(synonym)}")
|
120
|
+
end
|
121
|
+
|
122
|
+
def get_traits
|
123
|
+
req(logger, @access_token, Net::HTTP::Get, "/traits")
|
124
|
+
end
|
125
|
+
|
126
|
+
def get_trait(trait)
|
127
|
+
req(logger, @access_token, Net::HTTP::Get, "/traits/#{URI.encode(trait)}")
|
128
|
+
end
|
129
|
+
|
130
|
+
def post_traits(payload)
|
131
|
+
req(logger, @access_token, Net::HTTP::Post, "/traits", {}, payload)
|
132
|
+
end
|
133
|
+
|
134
|
+
def post_traits_values(trait, payload)
|
135
|
+
req(logger, @access_token, Net::HTTP::Post, "/traits/#{URI.encode(trait)}/values", {}, payload)
|
136
|
+
end
|
137
|
+
|
138
|
+
def delete_traits_values(trait, value)
|
139
|
+
req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}/values/#{URI.encode(value)}")
|
99
140
|
end
|
100
141
|
|
101
|
-
def
|
102
|
-
req(logger
|
142
|
+
def delete_traits(trait)
|
143
|
+
req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}")
|
103
144
|
end
|
104
145
|
|
105
146
|
private
|
@@ -107,13 +148,10 @@ class Wit
|
|
107
148
|
def validate_payload(payload)
|
108
149
|
key_types = {
|
109
150
|
id: String,
|
110
|
-
|
111
|
-
|
112
|
-
values: Array,
|
151
|
+
name: String,
|
152
|
+
roles: Array,
|
113
153
|
lookups: Array,
|
114
|
-
|
115
|
-
expressions: Array,
|
116
|
-
metadata: String,
|
154
|
+
keywords: Array,
|
117
155
|
}
|
118
156
|
payload.each do |k, v|
|
119
157
|
raise Error.new("#{k.to_s} in request body must be #{key_types[k].to_s} type") unless key_types[k] == v.class
|
data/wit.gemspec
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = 'wit'
|
3
|
-
s.version = '
|
4
|
-
s.date = Date.today.to_s
|
5
|
+
s.version = '7.0.0'
|
5
6
|
s.summary = 'Ruby SDK for Wit.ai'
|
6
7
|
s.description = 'Ruby SDK for Wit.ai'
|
7
8
|
s.authors = ['The Wit Team']
|
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
|
+
version: 7.0.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:
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby SDK for Wit.ai
|
14
14
|
email: help@wit.ai
|
@@ -16,8 +16,11 @@ executables: []
|
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
|
+
- ".github/ISSUE_TEMPLATE.md"
|
19
20
|
- ".gitignore"
|
20
21
|
- CHANGES.md
|
22
|
+
- CODE_OF_CONDUCT.md
|
23
|
+
- CONTRIBUTING.md
|
21
24
|
- Gemfile
|
22
25
|
- LICENSE
|
23
26
|
- README.md
|
@@ -47,8 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
50
|
- !ruby/object:Gem::Version
|
48
51
|
version: '0'
|
49
52
|
requirements: []
|
50
|
-
|
51
|
-
rubygems_version: 2.5.2
|
53
|
+
rubygems_version: 3.1.3
|
52
54
|
signing_key:
|
53
55
|
specification_version: 4
|
54
56
|
summary: Ruby SDK for Wit.ai
|