Class: NluAdapter::Adapters::WatsonAssistant
- Inherits:
-
Object
- Object
- NluAdapter::Adapters::WatsonAssistant
- Includes:
- IBMWatson, ParseHelper
- Defined in:
- lib/nlu_adapter/watson_assistant.rb
Overview
IBM Watson Assistant wrapper class
Defined Under Namespace
Classes: Intent
Instance Method Summary collapse
-
#create_intent(intent) ⇒ Intent
Given an Intent object, create/update it in Dialogflow.
-
#get_intent(name) ⇒ Intent
Get an instance of Intent, if it exists else nil.
-
#initialize(options = {}) ⇒ WatsonAssistant
constructor
Constructor.
-
#new_intent(name, description, utterences = []) ⇒ Intent
Get a new instance of Intent.
-
#parse(text) ⇒ Json
Understand a given text.
Methods included from ParseHelper
#bulk_parse, #parse_test, #parse_test_report
Constructor Details
#initialize(options = {}) ⇒ WatsonAssistant
Constructor
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/nlu_adapter/watson_assistant.rb', line 14 def initialize( = {}) @url = [:url] || "https://gateway-lon.watsonplatform.net/assistant/api" @version = [:version] || "2018-09-20" @workspace_id = ENV["WATSON_WORKSPACE_ID"] begin @assistant = AssistantV1.new( iam_apikey: ENV["WATSON_API_KEY"], version: @version, url: @url ) rescue WatsonApiException => ex puts "Error: #{ex.inspect}" end end |
Instance Method Details
#create_intent(intent) ⇒ Intent
TODO:
convert response -> Intent
Given an Intent object, create/update it in Dialogflow
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/nlu_adapter/watson_assistant.rb', line 101 def create_intent(intent) #check: to create / update i = intent.to_h if !intent.id response = @assistant.create_intent( workspace_id: @workspace_id, intent: i[:name], description: i[:description], examples: i[:examples] ) else response = @assistant.update_intent( workspace_id: @workspace_id, intent: intent.id, new_examples: i[:examples], new_description: i[:description], new_intent: i[:name] ) end end |
#get_intent(name) ⇒ Intent
Get an instance of Intent, if it exists else nil
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/nlu_adapter/watson_assistant.rb', line 58 def get_intent(name) begin response = @assistant.get_intent( workspace_id: @workspace_id, intent: name, export: true ) return Intent.new({id: response.result['intent'], #for is update check name: response.result['intent'], description: response.result['description'], utterences: response.result['examples'].map { |e| e['text']} }) rescue WatsonApiException => ex puts "Error: #{ex.inspect}" end return nil end |
#new_intent(name, description, utterences = []) ⇒ Intent
Get a new instance of Intent
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/nlu_adapter/watson_assistant.rb', line 83 def new_intent(name, description, utterences = []) i = get_intent(name) i = Intent.new if !i i.name = name i.description = description i.utterences = utterences return i end |
#parse(text) ⇒ Json
Understand a given text
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/nlu_adapter/watson_assistant.rb', line 34 def parse(text) intent_name = :NO_INTENT_FOUND begin response = @assistant.( workspace_id: @workspace_id, input: { text: text } ) unless response.nil? || response.result.nil? || response.result["intents"].nil? || response.result["intents"][0].nil? intent_name = response.result["intents"][0]["intent"] end rescue WatsonApiException => ex puts "Error: #{ex.inspect}" end return { intent_name: intent_name} end |