Class: Wit
- Inherits:
-
Object
- Object
- Wit
- Defined in:
- lib/wit.rb
Defined Under Namespace
Classes: Error
Constant Summary collapse
- WIT_API_HOST =
ENV['WIT_URL'] || 'https://api.wit.ai'
- WIT_API_VERSION =
ENV['WIT_API_VERSION'] || '20200513'
- LEARN_MORE =
'Learn more at https://wit.ai/docs/quickstart'
Instance Method Summary collapse
- #create_new_app(payload, set_new_app_token = false) ⇒ Object
- #delete_entities(entity) ⇒ Object
- #delete_entities_keywords(entity, keyword) ⇒ Object
- #delete_entities_keywords_synonyms(entity, keyword, synonym) ⇒ Object
- #delete_intents(intent) ⇒ Object
- #delete_traits(trait) ⇒ Object
- #delete_traits_values(trait, value) ⇒ Object
- #get_entities ⇒ Object
- #get_entity(entity) ⇒ Object
- #get_intent(intent) ⇒ Object
- #get_intents ⇒ Object
- #get_trait(trait) ⇒ Object
- #get_traits ⇒ Object
-
#initialize(opts = {}) ⇒ Wit
constructor
A new instance of Wit.
- #interactive(handle_message = nil, context = {}) ⇒ Object
- #logger ⇒ Object
- #message(msg, n = nil, verbose = nil) ⇒ Object
- #post_entities(payload) ⇒ Object
- #post_entities_keywords(entity, payload) ⇒ Object
- #post_entities_keywords_synonyms(entity, keyword, payload) ⇒ Object
- #post_intents(payload) ⇒ Object
- #post_traits(payload) ⇒ Object
- #post_traits_values(trait, payload) ⇒ Object
- #post_utterances(payload) ⇒ Object
- #put_entities(entity, payload) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Wit
Returns a new instance of Wit.
15 16 17 18 19 20 21 |
# File 'lib/wit.rb', line 15 def initialize(opts = {}) @access_token = opts[:access_token] if opts[:logger] @logger = opts[:logger] end end |
Instance Method Details
#create_new_app(payload, set_new_app_token = false) ⇒ Object
62 63 64 65 66 |
# File 'lib/wit.rb', line 62 def create_new_app(payload, set_new_app_token = false) response = req(logger, @access_token, Net::HTTP::Post, "/apps", {}, payload) @access_token = response['access_token'] if set_new_app_token return response end |
#delete_entities(entity) ⇒ Object
116 117 118 |
# File 'lib/wit.rb', line 116 def delete_entities(entity) req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}") end |
#delete_entities_keywords(entity, keyword) ⇒ Object
126 127 128 |
# File 'lib/wit.rb', line 126 def delete_entities_keywords(entity, keyword) req(logger, @access_token, Net::HTTP::Delete, "/entities/#{URI.encode(entity)}/keywords/#{URI.encode(keyword)}") end |
#delete_entities_keywords_synonyms(entity, keyword, synonym) ⇒ Object
136 137 138 |
# File 'lib/wit.rb', line 136 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 |
#delete_intents(intent) ⇒ Object
92 93 94 |
# File 'lib/wit.rb', line 92 def delete_intents(intent) req(logger, @access_token, Net::HTTP::Delete, "/intents/#{URI.encode(intent)}") end |
#delete_traits(trait) ⇒ Object
160 161 162 |
# File 'lib/wit.rb', line 160 def delete_traits(trait) req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}") end |
#delete_traits_values(trait, value) ⇒ Object
156 157 158 |
# File 'lib/wit.rb', line 156 def delete_traits_values(trait, value) req(logger, @access_token, Net::HTTP::Delete, "/traits/#{URI.encode(trait)}/values/#{URI.encode(value)}") end |
#get_entities ⇒ Object
96 97 98 |
# File 'lib/wit.rb', line 96 def get_entities req(logger, @access_token, Net::HTTP::Get, "/entities") end |
#get_entity(entity) ⇒ Object
106 107 108 |
# File 'lib/wit.rb', line 106 def get_entity(entity) req(logger, @access_token, Net::HTTP::Get, "/entities/#{URI.encode(entity)}") end |
#get_intent(intent) ⇒ Object
84 85 86 |
# File 'lib/wit.rb', line 84 def get_intent(intent) req(logger, @access_token, Net::HTTP::Get, "/intents/#{URI.encode(intent)}") end |
#get_intents ⇒ Object
80 81 82 |
# File 'lib/wit.rb', line 80 def get_intents req(logger, @access_token, Net::HTTP::Get, "/intents") end |
#get_trait(trait) ⇒ Object
144 145 146 |
# File 'lib/wit.rb', line 144 def get_trait(trait) req(logger, @access_token, Net::HTTP::Get, "/traits/#{URI.encode(trait)}") end |
#get_traits ⇒ Object
140 141 142 |
# File 'lib/wit.rb', line 140 def get_traits req(logger, @access_token, Net::HTTP::Get, "/traits") end |
#interactive(handle_message = nil, context = {}) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/wit.rb', line 40 def interactive(=nil, context={}) while true print '> ' msg = STDIN.gets.strip if msg == '' next end begin if .nil? puts((msg)) else puts(.call((msg))) end rescue Error => exp logger.error("error: #{exp.}") end end rescue Interrupt => _exp puts end |
#logger ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/wit.rb', line 23 def logger @logger ||= begin x = Logger.new(STDOUT) x.level = Logger::INFO x end end |
#message(msg, n = nil, verbose = nil) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/wit.rb', line 31 def (msg, n=nil, verbose=nil) params = {} params[:q] = msg unless msg.nil? params[:n] = n unless n.nil? params[:verbose] = verbose unless verbose.nil? res = req(logger, @access_token, Net::HTTP::Get, '/message', params) return res end |
#post_entities(payload) ⇒ Object
100 101 102 103 104 |
# File 'lib/wit.rb', line 100 def post_entities(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::Post, "/entities", {}, payload) end |
#post_entities_keywords(entity, payload) ⇒ Object
120 121 122 123 124 |
# File 'lib/wit.rb', line 120 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)}/keywords", {}, payload) end |
#post_entities_keywords_synonyms(entity, keyword, payload) ⇒ Object
130 131 132 133 134 |
# File 'lib/wit.rb', line 130 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)}/keywords/#{URI.encode(keyword)}/synonyms", {}, payload) end |
#post_intents(payload) ⇒ Object
88 89 90 |
# File 'lib/wit.rb', line 88 def post_intents(payload) req(logger, @access_token, Net::HTTP::Post, "/intents", {}, payload) end |
#post_traits(payload) ⇒ Object
148 149 150 |
# File 'lib/wit.rb', line 148 def post_traits(payload) req(logger, @access_token, Net::HTTP::Post, "/traits", {}, payload) end |
#post_traits_values(trait, payload) ⇒ Object
152 153 154 |
# File 'lib/wit.rb', line 152 def post_traits_values(trait, payload) req(logger, @access_token, Net::HTTP::Post, "/traits/#{URI.encode(trait)}/values", {}, payload) end |
#post_utterances(payload) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/wit.rb', line 68 def post_utterances(payload) payload = [payload] if payload.is_a? Hash payload.each do |utterance| unless utterance[:entities].empty? utterance[:entities] = validate_entities utterance[:entities] end validate_payload utterance end req(logger, @access_token, Net::HTTP::Post, "/utterances", {}, payload) end |
#put_entities(entity, payload) ⇒ Object
110 111 112 113 114 |
# File 'lib/wit.rb', line 110 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)}", {}, payload) end |