Home

Awesome

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:

Wit class

The Wit constructor takes a Hash with the following symbol keys:

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:

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.