From 2a5ecd487f78743dd0faaa5d70d0baa24f659a9e Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sun, 3 Jan 2021 18:29:41 -0300 Subject: [PATCH] fix(core.gbapp): Fix in NLP handling of acents. --- packages/basic.gblib/strings.ts | 25 ------------ .../services/GBConversationalService.ts | 16 ++++---- packages/core.gbapp/services/GBCoreService.ts | 2 +- packages/core.gbapp/services/GBDeployer.ts | 1 + packages/core.gbapp/services/GBMinService.ts | 38 +++++++++++++----- packages/core.gbapp/strings.ts | 24 +++++++++++ packages/default.gbtest/first-test.xlsx | Bin 0 -> 8419 bytes packages/kb.gbapp/dialogs/AskDialog.ts | 16 ++++---- 8 files changed, 70 insertions(+), 52 deletions(-) create mode 100644 packages/default.gbtest/first-test.xlsx diff --git a/packages/basic.gblib/strings.ts b/packages/basic.gblib/strings.ts index 379df8b8..ee15dde8 100644 --- a/packages/basic.gblib/strings.ts +++ b/packages/basic.gblib/strings.ts @@ -1,34 +1,9 @@ export const Messages = { - global_quit: /^(sair|sai|chega|exit|quit|finish|end|ausfahrt|verlassen)/i, 'en-US': { - show_video: 'I will show you a video, please wait...', - good_morning: 'good morning', - good_evening: 'good evening', - good_night: 'good night', - hi: (msg) => `Hello, ${msg}.`, - very_sorry_about_error: `I'm sorry to inform that there was an error which was recorded to be solved.`, - canceled: 'Canceled. If I can be useful, let me know how', - whats_email: 'What\'s your E-mail address?', - which_language: 'Please, type the language name you would like to talk through.', - validation_enter_valid_email: 'Please enter a valid e-mail.' , - language_chosen: 'Very good, so let\'s go...' , - affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i }, 'pt-BR': { - show_video: 'Vou te mostrar um vídeo. Por favor, aguarde...', - good_morning: 'bom dia', - good_evening: 'boa tarde', - good_night: 'boa noite', - hi: (msg) => `Oi, ${msg}.`, - very_sorry_about_error: `Lamento, ocorreu um erro que já foi registrado para ser tratado.`, - canceled: 'Cancelado, avise como posso ser útil novamente.', - whats_email: 'Qual seu e-mail?', - which_language: 'Por favor, digite o idioma que você gostaria de usar para conversarmos.', - validation_enter_valid_email: 'Por favor digite um email válido.', - language_chosen: 'Muito bem, então vamos lá...' , - affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i } }; diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index d88402a4..d9a41ead 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -46,10 +46,10 @@ import { SecService } from '../../security.gbapp/services/SecService'; import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService'; import { MicrosoftAppCredentials } from 'botframework-connector'; import { GBConfigService } from './GBConfigService'; +import { CollectionUtil, AzureText } from 'pragmatismo-io-framework'; const urlJoin = require('url-join'); const PasswordGenerator = require('strict-password-generator').default; const Nexmo = require('nexmo'); -import { CollectionUtil, AzureText } from 'pragmatismo-io-framework'; const { join } = require('path'); const shell = require('any-shell-escape'); const { exec } = require('child_process'); @@ -60,23 +60,25 @@ const fs = require('fs'); const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1'); const { IamAuthenticator } = require('ibm-watson/auth'); -export interface LanguagePickerSettings { - defaultLocale?: string; - supportedLocales?: string[]; -} - /** * Provides basic services for handling messages and dispatching to back-end * services like NLP or Search. */ export class GBConversationalService { + + /** + * Reference to the core service. + */ public coreService: IGBCoreService; + /** + * + * @param coreService + */ constructor(coreService: IGBCoreService) { this.coreService = coreService; } - static defaultDiacriticsRemovalMap = [ { 'base': 'A', 'letters': '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F' }, { 'base': 'AA', 'letters': '\uA732' }, diff --git a/packages/core.gbapp/services/GBCoreService.ts b/packages/core.gbapp/services/GBCoreService.ts index 65d4e72e..954919ab 100644 --- a/packages/core.gbapp/services/GBCoreService.ts +++ b/packages/core.gbapp/services/GBCoreService.ts @@ -100,7 +100,7 @@ export class GBCoreService implements IGBCoreService { private dialect: string; /** - * Constructor retrieves default values. + * */ constructor() { this.adminService = new GBAdminService(this); diff --git a/packages/core.gbapp/services/GBDeployer.ts b/packages/core.gbapp/services/GBDeployer.ts index 102b245b..ade81234 100644 --- a/packages/core.gbapp/services/GBDeployer.ts +++ b/packages/core.gbapp/services/GBDeployer.ts @@ -800,6 +800,7 @@ export class GBDeployer implements IGBDeployer { 'whatsapp.gblib', 'sharepoint.gblib', 'core.gbapp', + 'basic.gblib', 'admin.gbapp', 'azuredeployer.gbapp', 'customer-satisfaction.gbapp', diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 71c9bdb9..55c4c0e9 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -62,7 +62,7 @@ import { IGBInstance, IGBPackage } from 'botlib'; -import { AzureText, CollectionUtil } from 'pragmatismo-io-framework'; +import { CollectionUtil } from 'pragmatismo-io-framework'; import { MicrosoftAppCredentials } from 'botframework-connector'; import fs = require('fs'); @@ -112,8 +112,6 @@ export class GBMinService { /** * Static initialization of minimal instance. - * - * @param core Basic database services to identify instance, for example. */ constructor( core: IGBCoreService, @@ -582,7 +580,7 @@ export class GBMinService { const userState = new UserState(storage); adapter.use(new AutoSaveStateMiddleware(conversationState, userState)); MicrosoftAppCredentials.trustServiceUrl('https://directline.botframework.com', - new Date(new Date().setFullYear(new Date().getFullYear() + 10)) + new Date(new Date().setFullYear(new Date().getFullYear() + 10)) ); // The minimal bot is built here. @@ -612,7 +610,7 @@ export class GBMinService { await CollectionUtil.asyncForEach(min.appPackages, async (e: IGBPackage) => { let services: ConcatArray; if ((services = await e.onExchangeData(min, 'getServices', null))) { - min.gbappServices = {...min.gbappServices, ...services}; + min.gbappServices = { ...min.gbappServices, ...services }; } }); @@ -958,7 +956,7 @@ export class GBMinService { process.env.GBKB_ENABLE_AUTO_PUBLISH === 'true' ) { await min.conversationalService.sendText(min, step, - `Oi, ainda não possuo pacotes de conhecimento publicados. Por favor, aguarde alguns segundos enquanto eu auto-publico alguns pacotes.` + `Oi, ainda não possuo pacotes de conhecimento publicados. Por favor, aguarde alguns segundos enquanto eu auto-publico alguns pacotes.` ); await step.beginDialog('/publish', { confirm: true, firstTime: true }); } else { @@ -984,18 +982,36 @@ export class GBMinService { keepTextList = keepTextList.concat(result); } }); - let textProcessed = GBConversationalService.removeDiacritics(text); + + const getNormalizedRegExp = (value) => { + var chars = [ + { letter: 'a', reg: '[aáàãäâ]' }, + { letter: 'e', reg: '[eéèëê]' }, + { letter: 'i', reg: '[iíìïî]' }, + { letter: 'o', reg: '[oóòõöô]' }, + { letter: 'u', reg: '[uúùüû]' }, + { letter: 'c', reg: '[cç]' } + ]; + + for (var i in chars) { + value = value.replace(new RegExp(chars[i].letter, 'gi'), chars[i].reg); + }; + return value; + }; + + let textProcessed = text; if (keepTextList) { keepTextList = keepTextList.filter(p => p.trim() !== ''); let i = 0; await CollectionUtil.asyncForEach(keepTextList, item => { const it = GBConversationalService.removeDiacritics(item); + const noAccentText = GBConversationalService.removeDiacritics(textProcessed); - if (textProcessed.toLowerCase().indexOf(it.toLowerCase()) != -1) { + if (noAccentText.toLowerCase().indexOf(it.toLowerCase()) != -1) { const replacementToken = 'X' + GBAdminService.getNumberIdentifier().substr(0, 4); replacements[i] = { text: item, replacementToken: replacementToken }; i++; - textProcessed = textProcessed.replace(new RegExp(`\\b${it.trim()}\\b`, 'gi'), `${replacementToken}`); + textProcessed = textProcessed.replace(new RegExp(`\\b${getNormalizedRegExp(it.trim())}\\b`, 'gi'), `${replacementToken}`); } }); } @@ -1008,10 +1024,10 @@ export class GBMinService { // Detects user typed language and updates their locale profile if applies. let locale = min.core.getParam(min.instance, 'Default User Language', - GBConfigService.get('DEFAULT_USER_LANGUAGE') + GBConfigService.get('DEFAULT_USER_LANGUAGE') ); const detectLanguage = min.core.getParam(min.instance, 'Language Detector', - GBConfigService.getBoolean('LANGUAGE_DETECTOR') + GBConfigService.getBoolean('LANGUAGE_DETECTOR') ) === 'true'; const systemUser = user.systemUser; locale = systemUser.locale; diff --git a/packages/core.gbapp/strings.ts b/packages/core.gbapp/strings.ts index cfb69444..35dd7b17 100644 --- a/packages/core.gbapp/strings.ts +++ b/packages/core.gbapp/strings.ts @@ -2,9 +2,33 @@ export const Messages = { global_quit: /^(sair|sai|chega|exit|quit|finish|end|ausfahrt|verlassen)/i, 'en-US': { + show_video: 'I will show you a video, please wait...', + good_morning: 'good morning', + good_evening: 'good evening', + good_night: 'good night', + hi: (msg) => `Hello, ${msg}.`, + very_sorry_about_error: `I'm sorry to inform that there was an error which was recorded to be solved.`, + canceled: 'Canceled. If I can be useful, let me know how', + whats_email: 'What\'s your E-mail address?', + which_language: 'Please, type the language name you would like to talk through.', + validation_enter_valid_email: 'Please enter a valid e-mail.', + language_chosen: 'Very good, so let\'s go...', + affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i }, 'pt-BR': { + show_video: 'Vou te mostrar um vídeo. Por favor, aguarde...', + good_morning: 'bom dia', + good_evening: 'boa tarde', + good_night: 'boa noite', + hi: (msg) => `Oi, ${msg}.`, + very_sorry_about_error: `Lamento, ocorreu um erro que já foi registrado para ser tratado.`, + canceled: 'Cancelado, avise como posso ser útil novamente.', + whats_email: 'Qual seu e-mail?', + which_language: 'Por favor, digite o idioma que você gostaria de usar para conversarmos.', + validation_enter_valid_email: 'Por favor digite um email válido.', + language_chosen: 'Muito bem, então vamos lá...', + affirmative_sentences: /^(sim|s|positivo|afirmativo|claro|evidente|sem dúvida|confirmo|confirmar|confirmado|uhum|si|y|yes|sure)/i } }; diff --git a/packages/default.gbtest/first-test.xlsx b/packages/default.gbtest/first-test.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..237d0f2068f8db3a0cb70a8473f0bb696c08b50e GIT binary patch literal 8419 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 literal 0 HcmV?d00001 diff --git a/packages/kb.gbapp/dialogs/AskDialog.ts b/packages/kb.gbapp/dialogs/AskDialog.ts index c091a7d2..7f9ee5e1 100644 --- a/packages/kb.gbapp/dialogs/AskDialog.ts +++ b/packages/kb.gbapp/dialogs/AskDialog.ts @@ -116,9 +116,11 @@ export class AskDialog extends IGBDialog { const user = await sec.ensureUser(min.instance.instanceId, member.id, member.name, '', 'web', member.name); let handled = false; + let nextDialog = null; + await CollectionUtil.asyncForEach(min.appPackages, async (e: IGBPackage) => { if ( - await e.onExchangeData(min, 'handleAnswer', { + nextDialog = await e.onExchangeData(min, 'handleAnswer', { query: text, step: step, message: text, @@ -129,13 +131,11 @@ export class AskDialog extends IGBDialog { } }); - if (!handled) { - return await step.beginDialog('/answer', { - query: text - }); - } else { - return await step.next(); - } + await step.beginDialog(nextDialog ? nextDialog : '/answer', { + query: text, + user: user ? user['dataValues'] : null, + message: text + }); } else { return await step.next(); }