Skip to content

Commit

Permalink
traits + intents CRUD, 7.0.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
patapizza committed May 27, 2020
1 parent 12e6350 commit a28310a
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 25 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## v7.0.0
- Updated API version to latest: `20200513`. Browse the latest HTTP API documentation [here](https://wit.ai/docs/http/20200513#get__message_link).
- Added intents and traits CRUD methods.
- More consistent, transparent naming of entities methods.

## v6.0.0
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).

Expand Down
63 changes: 55 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,27 @@ Example:
client.interactive
```

### CRUD operations for intents
`payload` in the parameters is a hash containing API arguments.

#### .get_intents()
Returns a list of available intents for the app.
See [GET /intents](https://wit.ai/docs/http/20200513#get__intents_link).

#### .get_intent(intent)
Returns all available information about an intent.
See [GET /intents/:intent](https://wit.ai/docs/http/20200513#get__intents__intent_link).

#### .post_intents(payload)
Creates a new intent.
See [POST /intents](https://wit.ai/docs/http/20200513#post__intents_link).

#### .delete_intents(intent)
Permanently deletes the intent.
See [DELETE /intents/:intent](https://wit.ai/docs/http/20200513#delete__intents__intent_link).

### CRUD operations for entities
payload in the parameters is a hash containing API arguments
`payload` in the parameters is a hash containing API arguments.

#### .get_entities()
Returns a list of available entities for the app.
Expand All @@ -80,34 +99,62 @@ See [GET /entities](https://wit.ai/docs/http/20200513#get--entities-link)
Creates a new entity with the given attributes.
See [POST /entities](https://wit.ai/docs/http/20200513#post--entities-link)

#### .get_entity(entity_id)
#### .get_entity(entity)
Returns all the information available for an entity.
See [GET /entities/:entity](https://wit.ai/docs/http/20200513#get--entities-:entity-link)

#### .put_entities(entity_id, payload)
#### .put_entities(entity, payload)
Updates an entity with the given attributes.
See [PUT /entities/:entity](https://wit.ai/docs/http/20200513#put--entities-:entity-link)

#### .delete_entities(entity_id)
#### .delete_entities(entity)
Permanently removes the entity.
See [DELETE /entities/:entity](https://wit.ai/docs/http/20200513#delete--entities-:entity-link)

#### .post_keywords(entity_id, payload)
#### .post_entities_keywords(entity, payload)
Adds a possible value into the list of keywords for the keywords entity.
See [POST /entities/:entity/keywords](https://wit.ai/docs/http/20160526#post--entities-:entity-id-values-link)

#### .delete_keywords(entity_id, keyword)
#### .delete_entities_keywords(entity, keyword)
Deletes a keyword from the entity.
See [DELETE /entities/:entity/keywords/:keyword](https://wit.ai/docs/http/20200513#delete--entities-:entity-keywords-link)

#### .post_synonyms(entity_id, keyword, payload)
#### .post_entities_keywords_synonyms(entity, keyword, payload)
Creates a new synonym for the keyword of the entity.
See [POST /entities/:entity/keywords/:keyword/synonyms](https://wit.ai/docs/http/20200513#post--entities-:entity-keywords-:keyword-synonyms-link)

#### delete_synonyms(entity_id, keyword, synonym)
#### delete_entities_keywords_synonyms(entity, keyword, synonym)
Deletes a synonym of the keyword of the entity.
See [DELETE /entities/:entity/keywords/:keyword/synonyms/:synonym](https://wit.ai/docs/http/20200513#delete--entities-:entity-keywords-:keyword-synonyms-link)

### CRUD operations for traits
`payload` in the parameters is a hash containing API arguments.

#### .get_traits()
Returns a list of available traits for the app.
See [GET /traits](https://wit.ai/docs/http/20200513#get__traits_link).

#### .get_trait(trait)
Returns all available information about a trait.
See [GET /traits/:trait](https://wit.ai/docs/http/20200513#get__traits__trait_link).

#### .post_traits(payload)
Creates a new trait.
See [POST /traits](https://wit.ai/docs/http/20200513#post__traits_link).

#### .post_traits_values(trait, payload)
Adds a new value to an existing trait.
See [POST /traits/:trait/values](https://wit.ai/docs/http/20200513#post__traits__trait_values_link).

#### .delete_traits_values(trait, value)
Permanently deletes a value of an existing trait.
See [POST /traits/:trait/values](https://wit.ai/docs/http/20200513#delete__traits__trait_values_link).

#### .delete_traits(trait)
Permanently deletes the trait.
See [DELETE /traits/:trait](https://wit.ai/docs/http/20200513#delete__traits__trait_link).


See the [docs](https://wit.ai/docs) for more information.

### Logging
Expand Down
2 changes: 1 addition & 1 deletion examples/celebrities.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def first_trait_value(traits, trait)

def handle_message(response)
greetings = first_trait_value(response['traits'], 'wit$greetings')
celebrity = first_entity_resolved_value(responsee['entities'], 'wit$notable_person')
celebrity = first_entity_resolved_value(response['entities'], 'wit$notable_person:notable_person')

case
when celebrity
Expand Down
68 changes: 54 additions & 14 deletions lib/wit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,22 @@ def interactive(handle_message=nil, context={})
puts
end

def get_intents
req(logger, @access_token, Net::HTTP::Get, "/intents")
end

def get_intent(intent)
req(logger, @access_token, Net::HTTP::Get, "/intents/#{URI.encode(intent)}")
end

def post_intents(payload)
req(logger, @access_token, Net::HTTP::Post, "/intents", {}, payload)
end

def delete_intents(intent)
req(logger, @access_token, Net::HTTP::Delete, "/intents/#{URI.encode(intent)}")
end

def get_entities
req(logger, @access_token, Net::HTTP::Get, "/entities")
end
Expand All @@ -69,38 +85,62 @@ def post_entities(payload)
req(logger, @access_token, Net::HTTP::Post, "/entities", {}, payload)
end

def get_entity(entity_id)
req(logger, @access_token, Net::HTTP::Get, "/entities/#{URI.encode(entity_id)}")
def get_entity(entity)
req(logger, @access_token, Net::HTTP::Get, "/entities/#{URI.encode(entity)}")
end

def put_entities(entity_id, payload)
def put_entities(entity, payload)
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:name, :roles, :lookups, :keywords].include?(k) }
validate_payload payload
req(logger, @access_token, Net::HTTP::Put, "/entities/#{URI.encode(entity_id)}", {}, payload)
req(logger, @access_token, Net::HTTP::Put, "/entities/#{URI.encode(entity)}", {}, payload)
end

def delete_entities(entity_id)
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity_id)}")
def delete_entities(entity)
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}")
end

def post_keywords(entity_id, payload)
def post_entities_keywords(entity, payload)
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:keyword, :synonyms].include?(k) }
validate_payload payload
req(logger, @access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity_id)}/keywords", {}, payload)
req(logger, @access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity)}/keywords", {}, payload)
end

def delete_keywords(entity_id, keyword)
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity_id)}/keywords/#{URI.encode(keyword)}")
def delete_entities_keywords(entity, keyword)
req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}")
end

def post_synonyms(entity_id, keyword, payload)
def post_entities_keywords_synonyms(entity, keyword, payload)
payload = payload.map {|k, v| [(k.to_sym rescue k), v]}.to_h.reject{ |k| ![:synonym].include?(k) }
validate_payload payload
req(logger,@access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity_id)}/keywords/#{URI.encode(keyword)}/synonyms", {}, payload)
req(logger,@access_token, Net::HTTP::Post, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}/synonyms", {}, payload)
end

def delete_entities_keywords_synonyms(entity, keyword, synonym)
req(logger,@access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}/synonyms/#{URI.encode(synonym)}")
end

def get_traits
req(logger, @access_token, Net::HTTP::Get, "/traits")
end

def get_trait(trait)
req(logger, @access_token, Net::HTTP::Get, "/traits/#{URI.encode(trait)}")
end

def post_traits(payload)
req(logger, @access_token, Net::HTTP::Post, "/traits", {}, payload)
end

def post_traits_values(trait, payload)
req(logger, @access_token, Net::HTTP::Post, "/traits/#{URI.encode(trait)}/values", {}, payload)
end

def delete_traits_values(trait, value)
req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}/values/#{URI.encode(value)}")
end

def delete_synonyms(entity_id, keyword, synonym)
req(logger,@access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity_id)}/keywords/#{URI.encode(keyword)}/synonyms/#{URI.encode(synonym)}")
def delete_traits(trait)
req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}")
end

private
Expand Down
3 changes: 1 addition & 2 deletions wit.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

Gem::Specification.new do |s|
s.name = 'wit'
s.version = '6.0.0'
s.date = Date.today.to_s
s.version = '7.0.0'
s.summary = 'Ruby SDK for Wit.ai'
s.description = 'Ruby SDK for Wit.ai'
s.authors = ['The Wit Team']
Expand Down

0 comments on commit a28310a

Please sign in to comment.