From ad1bea141d5a8a11bb05a7a548f2079448ece800 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Thu, 4 Jun 2020 20:14:02 -0300 Subject: [PATCH] fix(core.gbapp): Translator now can be switched off by using Excel. --- package.json | 2 +- .../services/GBConversationalService.ts | 16 ++++++++++++---- packages/core.gbapp/services/GBMinService.ts | 12 ++++++++++-- packages/kb.gbapp/dialogs/AskDialog.ts | 14 ++++++++++---- packages/kb.gbapp/services/KBService.ts | 4 ++-- .../services/WhatsappDirectLine.ts | 4 ++-- 6 files changed, 37 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 7527ed894..6e010b7d5 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "botbuilder-ai": "4.7.0", "botbuilder-dialogs": "4.7.0", "botframework-connector": "4.7.0", - "botlib": "1.5.5", + "botlib": "1.5.6", "cli-spinner": "0.2.10", "dotenv-extended": "2.7.1", "exceljs": "3.5.0", diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index 520c13e08..b61e5f0d5 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -527,14 +527,22 @@ export class GBConversationalService { } - async translate( + async translate(min: GBMinInstance, key: string, endPoint: string, text: string, language: string ): Promise { - if (endPoint === null || process.env.TRANSLATOR_DISABLED === "true") { + const translatorEnabled = () => { + if (min.instance.params) { + const params = JSON.parse(min.instance.params); + return params['Enable Worldwide Translator'] === "TRUE"; + } + return false; + } // TODO: Encapsulate. + + if (endPoint === null || (!translatorEnabled() || process.env.TRANSLATOR_DISABLED === "true")) { return text; } @@ -582,7 +590,7 @@ export class GBConversationalService { const user = await sec.ensureUser(min.instance.instanceId, member.id, member.name, "", "web", member.name); if (text !== null) { - text = await min.conversationalService.translate( + text = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, text, @@ -598,7 +606,7 @@ export class GBConversationalService { const user = await min.userProfile.get(step.context, {}); if (user) { const minBoot = GBServer.globals.minBoot as any; - text = await min.conversationalService.translate( + text = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, text, diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 76438fb73..0868ec2d3 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -691,8 +691,16 @@ export class GBMinService { let query = context.activity.text; + const translatorEnabled = () => { + if (min.instance.params) { + const params = JSON.parse(min.instance.params); + return params['Enable Worldwide Translator'] === "TRUE"; + } + return false; + } // TODO: Encapsulate. + let locale = 'pt'; - if (process.env.TRANSLATOR_DISABLED !== "true") { + if (process.env.TRANSLATOR_DISABLED !== "true" || translatorEnabled()) { const minBoot = GBServer.globals.minBoot as any; // TODO: Switch keys automatically to master/per bot. locale = await AzureText.getLocale(minBoot.instance.textAnalyticsKey ? minBoot.instance.textAnalyticsKey : minBoot.instance.textAnalyticsKey, @@ -708,7 +716,7 @@ export class GBMinService { user.locale = locale; await user.save(); const minBoot = GBServer.globals.minBoot as any; - query = await min.conversationalService.translate( + query = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, query, diff --git a/packages/kb.gbapp/dialogs/AskDialog.ts b/packages/kb.gbapp/dialogs/AskDialog.ts index 5064f06f9..3e0cc0257 100644 --- a/packages/kb.gbapp/dialogs/AskDialog.ts +++ b/packages/kb.gbapp/dialogs/AskDialog.ts @@ -100,13 +100,19 @@ export class AskDialog extends IGBDialog { }, async step => { if (step.result) { + const translatorEnabled = () => { + if (min.instance.params) { + const params = JSON.parse(min.instance.params); + return params['Enable Worldwide Translator'] === "TRUE"; + } + return false; + } // TODO: Encapsulate. let query = step.result; let locale = 'pt'; const minBoot = GBServer.globals.minBoot as any; - if (process.env.TRANSLATOR_DISABLED !== "true") { - + if (process.env.TRANSLATOR_DISABLED !== "true" && translatorEnabled()) { locale = await AzureText.getLocale(minBoot.instance.textAnalyticsKey ? minBoot.instance.textAnalyticsKey : minBoot.instance.textAnalyticsKey, minBoot.instance.textAnalyticsEndpoint ? @@ -121,7 +127,7 @@ export class AskDialog extends IGBDialog { user.locale = locale; await user.save(); - query = await min.conversationalService.translate( + query = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, query, @@ -146,7 +152,7 @@ export class AskDialog extends IGBDialog { const userDb = await sec.ensureUser(min.instance.instanceId, member.id, member.name, "", "web", member.name); const minBoot = GBServer.globals.minBoot as any; - text = await min.conversationalService.translate( + text = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, text, diff --git a/packages/kb.gbapp/services/KBService.ts b/packages/kb.gbapp/services/KBService.ts index 50b158eff..43ecdf5cb 100644 --- a/packages/kb.gbapp/services/KBService.ts +++ b/packages/kb.gbapp/services/KBService.ts @@ -409,7 +409,7 @@ export class KBService implements IGBKBService { // Calls language translator. - let text = await min.conversationalService.translate( + let text = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, answer.content, @@ -457,7 +457,7 @@ export class KBService implements IGBKBService { const user = await sec.ensureUser(min.instance.instanceId, member.id, member.name, "", "web", member.name); const minBoot = GBServer.globals.minBoot as any; - html = await min.conversationalService.translate( + html = await min.conversationalService.translate(min, min.instance.translatorKey ? min.instance.translatorKey : minBoot.instance.translatorKey, min.instance.translatorEndpoint ? min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, html, diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index 4d04f42d2..3bb9506c5 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -418,7 +418,7 @@ export class WhatsappDirectLine extends GBService { public async sendToDeviceEx(to, msg, locale) { const minBoot = GBServer.globals.minBoot as any; - const text = await this.min.conversationalService.translate( + const text = await this.min.conversationalService.translate(this.min, this.min.instance.translatorKey ? this.min.instance.translatorKey : minBoot.instance.translatorKey, this.min.instance.translatorEndpoint ? this.min.instance.translatorEndpoint : minBoot.instance.translatorEndpoint, msg, @@ -430,7 +430,7 @@ export class WhatsappDirectLine extends GBService { public async sendToDevice(to, msg) { const cmd = '/audio '; - if (msg.startsWith(cmd) && process.env.AUDIO_DISABLED !== 'true') { + if (msg.startsWith(cmd)) { msg = msg.substr(cmd.length); return await this.sendTextAsAudioToDevice(to, msg); }