wit-ruby
wit-ruby
is the Ruby SDK for Wit.ai.
Install
From RubyGems:
gem install wit
From source:
git clone https://github.com/wit-ai/wit-ruby
gem build wit.gemspec
gem install wit-*.gem
Quickstart
Run in your terminal:
ruby examples/basic.rb <your_token>
See the examples
folder for more examples.
API
Overview
wit-ruby
provides a Wit class with the following methods:
-
message
- the Wit message API -
interactive
- starts an interactive conversation with your bot
Wit class
The Wit constructor takes a Hash
with the following symbol keys:
-
:access_token
- the access token of your Wit instance
A minimal example looks like this:
require 'wit'
client = Wit.new(access_token: access_token)
client.message('set an alarm tomorrow at 7am')
Create new App Using the Access Token
Creates new app using the server token. See POST /apps.
new_app_payload = {name: "new-app-1", lang: "en", private: true}
# set_new_app_token will make the client use the new app's token.
# that flag is set to false by default.
client.create_new_app(new_app_payload, set_new_app_token = true)
Train the app programatically using '/utterances'
Trains and annotates an utterance or more. See POST /utterances.
# you have to create the intent and entity before using any of them.
utterance_payload = {
text: "I want to fly to china",
intent: "flight_request",
entities: [
{
"entity": "wit$location:to",
"start": 17,
"end": 22,
"body": "china",
"entities": []
}
],
traits: []
}
# utterance payload can be a list of utterances or a single one
client.post_utterances(utterance_payload)
.message()
The Wit message API.
Takes the following parameters:
-
msg
- the text you want Wit.ai to extract the information from
Example:
rsp = client.message('what is the weather in London?')
puts("Yay, got Wit.ai response: #{rsp}")
.interactive()
Starts an interactive conversation with your bot.
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.
.get_intent(intent)
Returns all available information about an intent. See GET /intents/:intent.
.post_intents(payload)
Creates a new intent. See POST /intents.
.delete_intents(intent)
Permanently deletes the intent. See DELETE /intents/:intent.
CRUD operations for entities
payload
in the parameters is a hash containing API arguments.
.get_entities()
Returns a list of available entities for the app.
See GET /entities
.post_entities(payload)
Creates a new entity with the given attributes.
See POST /entities
.get_entity(entity)
Returns all the information available for an entity.
See GET /entities/:entity
.put_entities(entity, payload)
Updates an entity with the given attributes.
See PUT /entities/:entity
.delete_entities(entity)
Permanently removes the entity.
See DELETE /entities/:entity
.post_entities_keywords(entity, payload)
Adds a possible value into the list of keywords for the keywords entity. See POST /entities/:entity/keywords
.delete_entities_keywords(entity, keyword)
Deletes a keyword from the entity.
See DELETE /entities/:entity/keywords/:keyword
.post_entities_keywords_synonyms(entity, keyword, payload)
Creates a new synonym for the keyword of the entity.
See POST /entities/:entity/keywords/:keyword/synonyms
delete_entities_keywords_synonyms(entity, keyword, synonym)
Deletes a synonym of the keyword of the entity.
See DELETE /entities/:entity/keywords/:keyword/synonyms/:synonym
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.
.get_trait(trait)
Returns all available information about a trait. See GET /traits/:trait.
.post_traits(payload)
Creates a new trait. See POST /traits.
.post_traits_values(trait, payload)
Adds a new value to an existing trait. See POST /traits/:trait/values.
.delete_traits_values(trait, value)
Permanently deletes a value of an existing trait. See POST /traits/:trait/values.
.delete_traits(trait)
Permanently deletes the trait. See DELETE /traits/:trait.
See the docs for more information.
Logging
Default logging is to STDOUT
with INFO
level.
You can setup your logging level as follows:
Wit.logger.level = Logger::WARN
See the Logger class docs for more information.
Thanks
Thanks to Justin Workman for releasing a first version in October 2013. We really appreciate!
License
The license for wit-ruby can be found in LICENSE file in the root directory of this source tree.
Terms of Use
Our terms of use can be found at https://opensource.facebook.com/legal/terms.
Privacy Policy
Our privacy policy can be found at https://opensource.facebook.com/legal/privacy.