From f967d8f9e85b6f845bc5f74546f0a00ac0754b99 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Tue, 17 Nov 2020 10:11:32 -0300 Subject: [PATCH] fix(core.gbapp): Language and translator improvements. --- .../services/GBConversationalService.ts | 47 ++++++++++--------- packages/core.gbapp/services/GBMinService.ts | 10 +++- packages/kb.gbapp/services/KBService.ts | 2 +- packages/security.gbapp/models/index.ts | 2 +- .../security.gbapp/services/SecService.ts | 8 +--- 5 files changed, 36 insertions(+), 33 deletions(-) diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index cc032499..b90ecda7 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -538,8 +538,7 @@ export class GBConversationalService { public async getLanguage(min: GBMinInstance, text: string): Promise { return await AzureText.getLocale( min.instance.textAnalyticsKey ? min.instance.textAnalyticsKey : min.instance.textAnalyticsKey, - min.instance.textAnalyticsEndpoint ? min.instance.textAnalyticsEndpoint : - min.instance.textAnalyticsEndpoint, + min.instance.textAnalyticsEndpoint ? min.instance.textAnalyticsEndpoint : min.instance.textAnalyticsEndpoint, text ); } @@ -612,14 +611,16 @@ export class GBConversationalService { } public async prompt(min: GBMinInstance, step: GBDialogStep, text: string) { - let sec = new SecService(); - const member = step.context.activity.from; - const user = await sec.ensureUser(min.instance.instanceId, member.id, member.name, '', 'web', member.name); + const user = await min.userProfile.get(step.context, {}); + const systemUser = user.systemUser; + if (text !== null) { text = await min.conversationalService.translate( min, text, - user.locale ? user.locale : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) + systemUser.locale + ? systemUser.locale + : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) ); GBLog.info(`Translated text(prompt): ${text}.`); } @@ -628,27 +629,27 @@ export class GBConversationalService { } public async sendText(min: GBMinInstance, step, text) { - let sec = new SecService(); const member = step.context.activity.from; - const user = await sec.ensureUser(min.instance.instanceId, member.id, member.name, '', 'web', member.name); + const user = await min.userProfile.get(step.context, {}); + const systemUser = user.systemUser; - if (user) { - text = await min.conversationalService.translate( - min, - text, - user.locale ? user.locale : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) - ); - GBLog.info(`Translated text(sendText): ${text}.`); + text = await min.conversationalService.translate( + min, + text, + systemUser.locale + ? systemUser.locale + : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) + ); + GBLog.info(`Translated text(sendText): ${text}.`); - const analytics = new AnalyticsService(); - const userProfile = await min.userProfile.get(step.context, {}); - analytics.createMessage(min.instance.instanceId, userProfile.conversation, null, text); + const analytics = new AnalyticsService(); + + analytics.createMessage(min.instance.instanceId, user.conversation, null, text); - if (!isNaN(member.id)) { - await min.whatsAppDirectLine.sendToDevice(member.id, text); - } else { - await step.context.sendActivity(text); - } + if (!isNaN(member.id)) { + await min.whatsAppDirectLine.sendToDevice(member.id, text); + } else { + await step.context.sendActivity(text); } } diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index eeede9dd..53f4325e 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -787,14 +787,20 @@ export class GBMinService { const systemUser = user.systemUser; if (systemUser.locale != locale) { let sec = new SecService(); - await sec.updateUserLocale(systemUser.userSystemId, locale); + await sec.updateUserLocale(systemUser.userId, locale); } } // Translates the input text if is turned on instance params. const originalText = context.text; - text = await min.conversationalService.translate(min, text, locale); + let contentLocale = min.core.getParam( + min.instance, + 'Default Content Language', + GBConfigService.get('DEFAULT_CONTENT_LANGUAGE') + ); + + text = await min.conversationalService.translate(min, text, contentLocale); GBLog.info(`Translated text (processMessageActivity): ${text}.`); context.activity.text = text; context.activity.originalText = originalText; diff --git a/packages/kb.gbapp/services/KBService.ts b/packages/kb.gbapp/services/KBService.ts index 0af1c9c5..de12005c 100644 --- a/packages/kb.gbapp/services/KBService.ts +++ b/packages/kb.gbapp/services/KBService.ts @@ -439,7 +439,7 @@ export class KBService implements IGBKBService { min, answer.content, user.systemUser.locale - ? user.locale + ? user.systemUser.locale : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) ); GBLog.info(`Translated text(playMarkdown): ${text}.`); diff --git a/packages/security.gbapp/models/index.ts b/packages/security.gbapp/models/index.ts index f60ec88d..83413c1a 100644 --- a/packages/security.gbapp/models/index.ts +++ b/packages/security.gbapp/models/index.ts @@ -69,7 +69,7 @@ export class GuaribasUser extends Model { @Column public email: string; @Column(DataType.STRING(5)) - @Column public locale: string; + public locale: string; @ForeignKey(() => GuaribasInstance) @Column diff --git a/packages/security.gbapp/services/SecService.ts b/packages/security.gbapp/services/SecService.ts index 3b08d222..a657b5e3 100644 --- a/packages/security.gbapp/services/SecService.ts +++ b/packages/security.gbapp/services/SecService.ts @@ -10,7 +10,6 @@ import { CollectionUtil } from 'pragmatismo-io-framework'; * Security service layer. */ export class SecService extends GBService { - public async importSecurityFile(localPath: string, instance: IGBInstance) { const security = JSON.parse(Fs.readFileSync(urlJoin(localPath, 'security.json'), 'utf8')); await CollectionUtil.asyncForEach(security.groups, async group => { @@ -82,14 +81,13 @@ export class SecService extends GBService { await user.save(); } - public async updateUserLocale(userSystemId: number, locale: any) : Promise { + public async updateUserLocale(userId: number, locale: any): Promise { let user = await GuaribasUser.findOne({ where: { - userSystemId: userSystemId + userId: userId } }); user.locale = locale; - return await user.save(); } @@ -183,8 +181,6 @@ export class SecService extends GBService { return agentSystemId; } - - public async getUserFromSystemId(systemId: string): Promise { return await GuaribasUser.findOne({ where: {