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.
16 17 18 19 20 21 22 |
# File 'lib/wit.rb', line 16 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
63 64 65 66 67 |
# File 'lib/wit.rb', line 63 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
117 118 119 |
# File 'lib/wit.rb', line 117 def delete_entities(entity) req(logger, @access_token, Net::HTTP::Delete, "/entities/#{CGI::escape(entity)}") end |
#delete_entities_keywords(entity, keyword) ⇒ Object
127 128 129 |
# File 'lib/wit.rb', line 127 def delete_entities_keywords(entity, keyword) req(logger, @access_token, Net::HTTP::Delete, "/entities/#{CGI::escape(entity)}/keywords/#{CGI::escape(keyword)}") end |
#delete_entities_keywords_synonyms(entity, keyword, synonym) ⇒ Object
137 138 139 |
# File 'lib/wit.rb', line 137 def delete_entities_keywords_synonyms(entity, keyword, synonym) req(logger,@access_token, Net::HTTP::Delete, "/entities/#{CGI::escape(entity)}/keywords/#{CGI::escape(keyword)}/synonyms/#{CGI::escape(synonym)}") end |
#delete_intents(intent) ⇒ Object
93 94 95 |
# File 'lib/wit.rb', line 93 def delete_intents(intent) req(logger, @access_token, Net::HTTP::Delete, "/intents/#{CGI::escape(intent)}") end |
#delete_traits(trait) ⇒ Object
161 162 163 |
# File 'lib/wit.rb', line 161 def delete_traits(trait) req(logger, @access_token, Net::HTTP::Delete, "/traits/#{CGI::escape(trait)}") end |
#delete_traits_values(trait, value) ⇒ Object
157 158 159 |
# File 'lib/wit.rb', line 157 def delete_traits_values(trait, value) req(logger, @access_token, Net::HTTP::Delete, "/traits/#{CGI::escape(trait)}/values/#{CGI::escape(value)}") end |
#get_entities ⇒ Object
97 98 99 |
# File 'lib/wit.rb', line 97 def get_entities req(logger, @access_token, Net::HTTP::Get, "/entities") end |
#get_entity(entity) ⇒ Object
107 108 109 |
# File 'lib/wit.rb', line 107 def get_entity(entity) req(logger, @access_token, Net::HTTP::Get, "/entities/#{CGI::escape(entity)}") end |
#get_intent(intent) ⇒ Object
85 86 87 |
# File 'lib/wit.rb', line 85 def get_intent(intent) req(logger, @access_token, Net::HTTP::Get, "/intents/#{CGI::escape(intent)}") end |
#get_intents ⇒ Object
81 82 83 |
# File 'lib/wit.rb', line 81 def get_intents req(logger, @access_token, Net::HTTP::Get, "/intents") end |
#get_trait(trait) ⇒ Object
145 146 147 |
# File 'lib/wit.rb', line 145 def get_trait(trait) req(logger, @access_token, Net::HTTP::Get, "/traits/#{CGI::escape(trait)}") end |
#get_traits ⇒ Object
141 142 143 |
# File 'lib/wit.rb', line 141 def get_traits req(logger, @access_token, Net::HTTP::Get, "/traits") end |
#interactive(handle_message = nil, context = {}) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/wit.rb', line 41 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
24 25 26 27 28 29 30 |
# File 'lib/wit.rb', line 24 def logger @logger ||= begin x = Logger.new(STDOUT) x.level = Logger::INFO x end end |
#message(msg, n = nil, verbose = nil) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/wit.rb', line 32 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
101 102 103 104 105 |
# File 'lib/wit.rb', line 101 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
121 122 123 124 125 |
# File 'lib/wit.rb', line 121 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/#{CGI::escape(entity)}/keywords", {}, payload) end |
#post_entities_keywords_synonyms(entity, keyword, payload) ⇒ Object
131 132 133 134 135 |
# File 'lib/wit.rb', line 131 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/#{CGI::escape(entity)}/keywords/#{CGI::escape(keyword)}/synonyms", {}, payload) end |
#post_intents(payload) ⇒ Object
89 90 91 |
# File 'lib/wit.rb', line 89 def post_intents(payload) req(logger, @access_token, Net::HTTP::Post, "/intents", {}, payload) end |
#post_traits(payload) ⇒ Object
149 150 151 |
# File 'lib/wit.rb', line 149 def post_traits(payload) req(logger, @access_token, Net::HTTP::Post, "/traits", {}, payload) end |
#post_traits_values(trait, payload) ⇒ Object
153 154 155 |
# File 'lib/wit.rb', line 153 def post_traits_values(trait, payload) req(logger, @access_token, Net::HTTP::Post, "/traits/#{CGI::escape(trait)}/values", {}, payload) end |
#post_utterances(payload) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/wit.rb', line 69 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
111 112 113 114 115 |
# File 'lib/wit.rb', line 111 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/#{CGI::escape(entity)}", {}, payload) end |