Class: NluAdapter::Adapters::Dialogflow
- Inherits:
-
Object
- Object
- NluAdapter::Adapters::Dialogflow
- Includes:
- ParseHelper
- Defined in:
- lib/nlu_adapter/dialogflow.rb
Overview
Dialogflow wrapper class
Defined Under Namespace
Classes: Intent, IntentCollection
Instance Method Summary collapse
-
#create_intent(intent) ⇒ Intent
Given an Intent object, create/update it in Dialogflow.
-
#create_intent_collection(collection) ⇒ Object
Not implemented.
-
#get_intent(name) ⇒ Intent
Get an instance of Intent, if it exists else nil.
-
#get_intent_collection(name) ⇒ Object
Not implemented.
-
#initialize(options = {}) ⇒ Dialogflow
constructor
Constructor.
-
#new_intent(name, utterences = []) ⇒ Intent
Get a new instance of Intent.
-
#new_intent_collection(name, intents) ⇒ Object
Not implemented.
-
#parse(text) ⇒ Json
Understand a given text.
Methods included from ParseHelper
#bulk_parse, #parse_test, #parse_test_report
Constructor Details
#initialize(options = {}) ⇒ Dialogflow
Constructor
11 12 13 14 |
# File 'lib/nlu_adapter/dialogflow.rb', line 11 def initialize( = {}) @project_id = [:project_id] @session_id = [:session_id] end |
Instance Method Details
#create_intent(intent) ⇒ Intent
TODO:
convert response -> Intent
Given an Intent object, create/update it in Dialogflow
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/nlu_adapter/dialogflow.rb', line 77 def create_intent(intent) intents_client = Google::Cloud::Dialogflow::Intents.new(version: :v2) formatted_parent = Google::Cloud::Dialogflow::V2::IntentsClient.project_agent_path(@project_id) #check: to create / update if !intent.id i = intent.to_h response = intents_client.create_intent(formatted_parent, i) else i = intent.to_h language_code = 'en' response = intents_client.update_intent(i, language_code) end end |
#create_intent_collection(collection) ⇒ Object
TODO:
check back
Not implemented
107 108 |
# File 'lib/nlu_adapter/dialogflow.rb', line 107 def create_intent_collection(collection) end |
#get_intent(name) ⇒ Intent
Get an instance of Intent, if it exists else nil
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/nlu_adapter/dialogflow.rb', line 41 def get_intent(name) intents_client = Google::Cloud::Dialogflow::Intents.new(version: :v2) formatted_parent = Google::Cloud::Dialogflow::V2::IntentsClient.project_agent_path(@project_id) #Iterate over all results. #todo: should be cached for better performance intents_client.list_intents(formatted_parent).each do |intent| if intent.display_name == name return Intent.new({id: intent.name, display_name: intent.display_name}) end end return nil end |
#get_intent_collection(name) ⇒ Object
TODO:
check back
Not implemented
95 96 |
# File 'lib/nlu_adapter/dialogflow.rb', line 95 def get_intent_collection(name) end |
#new_intent(name, utterences = []) ⇒ Intent
Get a new instance of Intent
61 62 63 64 65 66 67 68 |
# File 'lib/nlu_adapter/dialogflow.rb', line 61 def new_intent(name, utterences = []) i = get_intent(name) i = Intent.new if !i i.name = name i.utterences = utterences return i end |
#new_intent_collection(name, intents) ⇒ Object
TODO:
check back
Not implemented
101 102 |
# File 'lib/nlu_adapter/dialogflow.rb', line 101 def new_intent_collection(name, intents) end |
#parse(text) ⇒ Json
Understand a given text
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/nlu_adapter/dialogflow.rb', line 21 def parse(text) sessions_client = Google::Cloud::Dialogflow::Sessions.new(version: :v2) formatted_session = Google::Cloud::Dialogflow::V2::SessionsClient.session_path(@project_id, @session_id) language_code = 'en' intent_name = :NO_INTENT_FOUND query_input = Google::Cloud::Dialogflow::V2::QueryInput.new({text: {language_code: language_code, text: text}}) response = sessions_client.detect_intent(formatted_session, query_input) unless response.nil? || response.query_result.nil? || response.query_result.intent.nil? || response.query_result.intent.display_name.empty? intent_name = response.query_result.intent.display_name end return { intent_name: intent_name } end |