Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
272447526c |
@@ -84,6 +84,7 @@ dialogflow:
|
||||
{
|
||||
'project_id': { 'type': 'string' },
|
||||
'credentials': { 'type': 'object' },
|
||||
'language_code': { 'type': 'string' },
|
||||
},
|
||||
'required': ['project_id', 'credentials'],
|
||||
'additionalProperties': false,
|
||||
@@ -106,8 +107,101 @@ dialogflow:
|
||||
'validation-messages':
|
||||
{ 'JSON': 'Invalid JSON', 'required': 'Credentials is required' },
|
||||
},
|
||||
{
|
||||
'label': 'Dialogflow Language Code',
|
||||
'type': 'select',
|
||||
'name': 'language_code',
|
||||
'options': [
|
||||
{ 'label': 'en-US', 'value': 'en-US' },
|
||||
{ 'label': 'de', 'value': 'de' },
|
||||
{ 'label': 'de-at', 'value': 'de-at' },
|
||||
{ 'label': 'de-be', 'value': 'de-be' },
|
||||
{ 'label': 'de-ch', 'value': 'de-ch' },
|
||||
{ 'label': 'de-li', 'value': 'de-li' },
|
||||
{ 'label': 'en-au', 'value': 'en-au' },
|
||||
{ 'label': 'en-nz', 'value': 'en-nz' },
|
||||
{ 'label': 'en-pg', 'value': 'en-pg' },
|
||||
{ 'label': 'en-gb', 'value': 'en-gb' },
|
||||
{ 'label': 'en-bw', 'value': 'en-bw' },
|
||||
{ 'label': 'en-eg', 'value': 'en-eg' },
|
||||
{ 'label': 'en-gh', 'value': 'en-gh' },
|
||||
{ 'label': 'en-hk', 'value': 'en-hk' },
|
||||
{ 'label': 'en-ie', 'value': 'en-ie' },
|
||||
{ 'label': 'en-ke', 'value': 'en-ke' },
|
||||
{ 'label': 'en-mt', 'value': 'en-mt' },
|
||||
{ 'label': 'en-na', 'value': 'en-na' },
|
||||
{ 'label': 'en-ng', 'value': 'en-ng' },
|
||||
{ 'label': 'en-sg', 'value': 'en-sg' },
|
||||
{ 'label': 'en-tz', 'value': 'en-tz' },
|
||||
{ 'label': 'en-ug', 'value': 'en-ug' },
|
||||
{ 'label': 'en-za', 'value': 'en-za' },
|
||||
{ 'label': 'en-zm', 'value': 'en-zm' },
|
||||
{ 'label': 'en-zw', 'value': 'en-zw' },
|
||||
{ 'label': 'en-in', 'value': 'en-in' },
|
||||
{ 'label': 'en-mu', 'value': 'en-mu' },
|
||||
{ 'label': 'en', 'value': 'en' },
|
||||
{ 'label': 'en-ae', 'value': 'en-ae' },
|
||||
{ 'label': 'en-de', 'value': 'en-de' },
|
||||
{ 'label': 'en-id', 'value': 'en-id' },
|
||||
{ 'label': 'en-mm', 'value': 'en-mm' },
|
||||
{ 'label': 'en-my', 'value': 'en-my' },
|
||||
{ 'label': 'en-nl', 'value': 'en-nl' },
|
||||
{ 'label': 'en-ph', 'value': 'en-ph' },
|
||||
{ 'label': 'en-sa', 'value': 'en-sa' },
|
||||
{ 'label': 'en-se', 'value': 'en-se' },
|
||||
{ 'label': 'en-th', 'value': 'en-th' },
|
||||
{ 'label': 'es-419', 'value': 'es-419' },
|
||||
{ 'label': 'es-ar', 'value': 'es-ar' },
|
||||
{ 'label': 'es-bo', 'value': 'es-bo' },
|
||||
{ 'label': 'es-cl', 'value': 'es-cl' },
|
||||
{ 'label': 'es-co', 'value': 'es-co' },
|
||||
{ 'label': 'es-cr', 'value': 'es-cr' },
|
||||
{ 'label': 'es-do', 'value': 'es-do' },
|
||||
{ 'label': 'es-ec', 'value': 'es-ec' },
|
||||
{ 'label': 'es-gt', 'value': 'es-gt' },
|
||||
{ 'label': 'es-hn', 'value': 'es-hn' },
|
||||
{ 'label': 'es-mx', 'value': 'es-mx' },
|
||||
{ 'label': 'es-ni', 'value': 'es-ni' },
|
||||
{ 'label': 'es-pa', 'value': 'es-pa' },
|
||||
{ 'label': 'es-pe', 'value': 'es-pe' },
|
||||
{ 'label': 'es-ph', 'value': 'es-ph' },
|
||||
{ 'label': 'es-pr', 'value': 'es-pr' },
|
||||
{ 'label': 'es-py', 'value': 'es-py' },
|
||||
{ 'label': 'es-sv', 'value': 'es-sv' },
|
||||
{ 'label': 'es-us', 'value': 'es-us' },
|
||||
{ 'label': 'es-uy', 'value': 'es-uy' },
|
||||
{ 'label': 'es-ve', 'value': 'es-ve' },
|
||||
{ 'label': 'fil', 'value': 'fil' },
|
||||
{ 'label': 'tl', 'value': 'tl' },
|
||||
{ 'label': 'fil-ph', 'value': 'fil-ph' },
|
||||
{ 'label': 'tl-ph', 'value': 'tl-ph' },
|
||||
{ 'label': 'fr', 'value': 'fr' },
|
||||
{ 'label': 'fr-be', 'value': 'fr-be' },
|
||||
{ 'label': 'fr-cd', 'value': 'fr-cd' },
|
||||
{ 'label': 'fr-ch', 'value': 'fr-ch' },
|
||||
{ 'label': 'fr-ci', 'value': 'fr-ci' },
|
||||
{ 'label': 'fr-cm', 'value': 'fr-cm' },
|
||||
{ 'label': 'fr-dz', 'value': 'fr-dz' },
|
||||
{ 'label': 'fr-es', 'value': 'fr-es' },
|
||||
{ 'label': 'fr-gb', 'value': 'fr-gb' },
|
||||
{ 'label': 'fr-gp', 'value': 'fr-gp' },
|
||||
{ 'label': 'fr-ma', 'value': 'fr-ma' },
|
||||
{ 'label': 'fr-mc', 'value': 'fr-mc' },
|
||||
{ 'label': 'fr-mu', 'value': 'fr-mu' },
|
||||
{ 'label': 'fr-re', 'value': 'fr-re' },
|
||||
{ 'label': 'fr-sn', 'value': 'fr-sn' },
|
||||
{ 'label': 'fr-tn', 'value': 'fr-tn' },
|
||||
{ 'label': 'fr-us', 'value': 'fr-us' },
|
||||
{ 'label': 'it', 'value': 'it' },
|
||||
{ 'label': 'it-it', 'value': 'it-it' },
|
||||
{ 'label': 'it-ch', 'value': 'it-ch' },
|
||||
{ 'label': 'nl', 'value': 'nl' },
|
||||
{ 'label': 'nl-be', 'value': 'nl-be' },
|
||||
],
|
||||
'value': 'en-US',
|
||||
},
|
||||
]
|
||||
visible_properties: ['project_id']
|
||||
visible_properties: ['project_id', 'language_code']
|
||||
google_translate:
|
||||
id: google_translate
|
||||
logo: google-translate.png
|
||||
|
||||
@@ -71,7 +71,8 @@ class Integrations::Dialogflow::ProcessorService < Integrations::BotProcessorSer
|
||||
def detect_intent(session_id, message)
|
||||
client = ::Google::Cloud::Dialogflow::V2::Sessions::Client.new
|
||||
session = "projects/#{hook.settings['project_id']}/agent/sessions/#{session_id}"
|
||||
query_input = { text: { text: message, language_code: 'en-US' } }
|
||||
language_code = hook.settings['language_code'] || 'en-US'
|
||||
query_input = { text: { text: message, language_code: language_code } }
|
||||
client.detect_intent session: session, query_input: query_input
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,7 +9,7 @@ FactoryBot.define do
|
||||
|
||||
trait :dialogflow do
|
||||
app_id { 'dialogflow' }
|
||||
settings { { project_id: 'test', credentials: {} } }
|
||||
settings { { project_id: 'test', credentials: {}, language_code: 'en-US' } }
|
||||
end
|
||||
|
||||
trait :dyte do
|
||||
|
||||
@@ -153,11 +153,12 @@ describe Integrations::Dialogflow::ProcessorService do
|
||||
let(:google_dialogflow) { Google::Cloud::Dialogflow::V2::Sessions::Client }
|
||||
let(:session_client) { double }
|
||||
let(:session) { double }
|
||||
let(:query_input) { { text: { text: message, language_code: 'en-US' } } }
|
||||
let(:language_code) { 'es-419' }
|
||||
let(:query_input) { { text: { text: message, language_code: language_code } } }
|
||||
let(:processor) { described_class.new(event_name: event_name, hook: hook, event_data: event_data) }
|
||||
|
||||
before do
|
||||
hook.update(settings: { 'project_id' => 'test', 'credentials' => 'creds' })
|
||||
hook.update(settings: { 'project_id' => 'test', 'credentials' => 'creds', 'language_code' => language_code })
|
||||
allow(google_dialogflow).to receive(:new).and_return(session_client)
|
||||
allow(session_client).to receive(:detect_intent).and_return({ session: session, query_input: query_input })
|
||||
end
|
||||
@@ -165,7 +166,7 @@ describe Integrations::Dialogflow::ProcessorService do
|
||||
it 'returns intended response' do
|
||||
response = processor.send(:get_response, conversation.contact_inbox.source_id, message.content)
|
||||
expect(response[:query_input][:text][:text]).to eq(message)
|
||||
expect(response[:query_input][:text][:language_code]).to eq('en-US')
|
||||
expect(response[:query_input][:text][:language_code]).to eq(language_code)
|
||||
end
|
||||
|
||||
it 'disables the hook if permission errors are thrown' do
|
||||
|
||||
Reference in New Issue
Block a user