From 06f155ba941ca422340dc2b016c6773817f7cde3 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Thu, 29 Jul 2021 09:50:38 -0300 Subject: [PATCH] new(all): Additional interfaces for text processing in .gbapp. --- packages/core.gbapp/services/GBMinService.ts | 16 +++---- packages/core.gbapp/strings.ts | 6 +-- packages/kb.gbapp/services/KBService.ts | 48 +++++++++++--------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 0fec2476..c2ee1be5 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -1002,18 +1002,18 @@ export class GBMinService { // Removes Bot Id from MS Teams. - context.activity.text = context.activity.text.trim(); context.activity.text = context.activity.text.replace(/\.*\<\/at\>\s/gi, ''); - // Syn. temporary replacement (to be migrated to Synonyms.xlsx) + let data = { query: context.activity.text }; + await CollectionUtil.asyncForEach(min.appPackages, async (e: IGBPackage) => { + await e.onExchangeData(min, 'handleRawInput', data); + // TODO: Handle priority over .gbapp, today most common case is just one item per server. + }); + context.activity.text = data.query; - context.activity.text = context.activity.text.replace(/\busuario\b/gi, 'usuário'); - context.activity.text = context.activity.text.replace(/\busuaria\b/gi, 'usuária'); - context.activity.text = context.activity.text.replace(/\busuarios\b/gi, 'usuários'); - context.activity.text = context.activity.text.replace(/\busuarias\b/gi, 'usuárias'); - context.activity.text = context.activity.text.replace(/\bfuncionario\b/gi, 'funcionário'); - context.activity.text = context.activity.text.replace(/\bfuncionarios\b/gi, 'funcionários'); + // Additional clean up. + context.activity.text = context.activity.text.trim(); const user = await min.userProfile.get(context, {}); let message: GuaribasConversationMessage; diff --git a/packages/core.gbapp/strings.ts b/packages/core.gbapp/strings.ts index 35dd7b17..40f179d3 100644 --- a/packages/core.gbapp/strings.ts +++ b/packages/core.gbapp/strings.ts @@ -1,6 +1,6 @@ export const Messages = { - global_quit: /^(sair|sai|chega|exit|quit|finish|end|ausfahrt|verlassen)/i, + global_quit: /^(\bsair\b|\bsai\b|\bchega\b|\bexit\b|\bquit\b|\bfinish\b|\bend\b|\bausfahrt\b|\bverlassen\b)/i, 'en-US': { show_video: 'I will show you a video, please wait...', good_morning: 'good morning', @@ -13,7 +13,7 @@ export const Messages = { 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 + affirmative_sentences: /^(\bsim\b|\bs\b|\bpositivo\b|\bafirmativo\b|\bclaro\b|\bevidente\b|\bsem dúvida\b|\bconfirmo\b|\bconfirmar\b|\bconfirmado\b|\buhum\b|\bsi\b|\by\b|\byes\b|\bsure\b)/i }, 'pt-BR': { @@ -28,7 +28,7 @@ export const Messages = { 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 + affirmative_sentences: /^(\bsim\b|\bs\b|\bpositivo\b|\bafirmativo\b|\bclaro\b|\bevidente\b|\bsem dúvida\b|\bconfirmo\b|\bconfirmar\b|\bconfirmado\b|\buhum\b|\bsi\b|\by\b|\byes\b|\bsure\b)/i } }; diff --git a/packages/kb.gbapp/services/KBService.ts b/packages/kb.gbapp/services/KBService.ts index f0ea6f3f..59b29090 100644 --- a/packages/kb.gbapp/services/KBService.ts +++ b/packages/kb.gbapp/services/KBService.ts @@ -612,31 +612,35 @@ export class KBService implements IGBKBService { */ public async importDocs(min: GBMinInstance, localPath: string, instance: IGBInstance, packageId: number): Promise { const files = await walkPromise(urlJoin(localPath, 'docs')); - - await CollectionUtil.asyncForEach(files, async file => { - let content = null; - let filePath = Path.join(file.root, file.name); - if (file !== null) { - if (file.name.endsWith('.docx')) { - content = await this.getTextFromFile(filePath); - } else if (file.name.endsWith('.pdf')) { - const read = await pdf(Fs.readFileSync(filePath)); - content = read.text; + if (!files[0]) { + GBLog.info(`[GBDeployer] docs folder not created yet in .gbkb. To use Reading Comprehension, create this folder at root and put a document to get read by the.`); + } + else { + await CollectionUtil.asyncForEach(files, async file => { + let content = null; + let filePath = Path.join(file.root, file.name); + if (file !== null) { + if (file.name.endsWith('.docx')) { + content = await this.getTextFromFile(filePath); + } else if (file.name.endsWith('.pdf')) { + const read = await pdf(Fs.readFileSync(filePath)); + content = read.text; + } } - } - if (content) { - content = await min.conversationalService.translate(min, content, 'en'); - await GuaribasAnswer.create({ - instanceId: instance.instanceId, - content: content, - format: '.docx', - media: file.name, - packageId: packageId - }); - } + if (content) { + content = await min.conversationalService.translate(min, content, 'en'); + await GuaribasAnswer.create({ + instanceId: instance.instanceId, + content: content, + format: '.docx', + media: file.name, + packageId: packageId + }); + } - }); + }); + } } public async importKbTabularDirectory(localPath: string, instance: IGBInstance, packageId: number): Promise {