From c70200a17624e15d9408d00c8b67783057c1ae06 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Mon, 11 Feb 2019 11:25:00 -0200 Subject: [PATCH 1/3] fix(kb.gbapp): FAQ now showing again. fix(kb.gbapp): When menu is clicked it will show associated FAQ again. --- packages/kb.gbapp/services/KBService.ts | 180 +++++++++--------------- 1 file changed, 70 insertions(+), 110 deletions(-) diff --git a/packages/kb.gbapp/services/KBService.ts b/packages/kb.gbapp/services/KBService.ts index 614d1876..231dd7f8 100644 --- a/packages/kb.gbapp/services/KBService.ts +++ b/packages/kb.gbapp/services/KBService.ts @@ -60,7 +60,6 @@ export class KBServiceSearchResults { } export class KBService { - public sequelize: Sequelize; constructor(sequelize: Sequelize) { @@ -68,7 +67,9 @@ export class KBService { } public static getFormattedSubjectItems(subjects: GuaribasSubject[]) { - if (!subjects) { return ''; } + if (!subjects) { + return ''; + } const out = []; subjects.forEach(subject => { out.push(subject.title); @@ -86,10 +87,7 @@ export class KBService { return out.join(' '); } - public async getQuestionById( - instanceId: number, - questionId: number - ): Promise { + public async getQuestionById(instanceId: number, questionId: number): Promise { return GuaribasQuestion.findOne({ where: { instanceId: instanceId, @@ -98,10 +96,7 @@ export class KBService { }); } - public async getAnswerById( - instanceId: number, - answerId: number - ): Promise { + public async getAnswerById(instanceId: number, answerId: number): Promise { return GuaribasAnswer.findOne({ where: { instanceId: instanceId, @@ -110,11 +105,7 @@ export class KBService { }); } - public async getAnswerByText( - instanceId: number, - text: string - ): Promise { - + public async getAnswerByText(instanceId: number, text: string): Promise { const Op = Sequelize.Op; const question = await GuaribasQuestion.findOne({ @@ -139,14 +130,15 @@ export class KBService { } public async addAnswer(obj: GuaribasAnswer): Promise { - return new Promise( - (resolve, reject) => { - GuaribasAnswer.create(obj).then(item => { + return new Promise((resolve, reject) => { + GuaribasAnswer.create(obj) + .then(item => { resolve(item); - }).error((reason) => { + }) + .error(reason => { reject(reason); }); - }); + }); } public async ask( @@ -155,7 +147,6 @@ export class KBService { searchScore: number, subjects: GuaribasSubject[] ): Promise { - // Builds search query. query = query.toLowerCase(); @@ -181,11 +172,8 @@ export class KBService { instance.searchIndexer ); const results = await service.search(query); - if (results && results.length > 0 && - results[0]['@search.score'] >= searchScore) { - const value = await this.getAnswerById( - instance.instanceId, - results[0].answerId); + if (results && results.length > 0 && results[0]['@search.score'] >= searchScore) { + const value = await this.getAnswerById(instance.instanceId, results[0].answerId); if (value) { return Promise.resolve({ answer: value, questionId: results[0].questionId }); } else { @@ -195,8 +183,7 @@ export class KBService { } else { const data = await this.getAnswerByText(instance.instanceId, query); if (data) { - return Promise.resolve( - { answer: data.answer, questionId: data.question.questionId }); + return Promise.resolve({ answer: data.answer, questionId: data.question.questionId }); } else { return Promise.resolve({ answer: null, questionId: 0 }); } @@ -206,10 +193,7 @@ export class KBService { } } - public async getSubjectItems( - instanceId: number, - parentId: number - ): Promise { + public async getSubjectItems(instanceId: number, parentId: number): Promise { const where = { parentSubjectId: parentId, instanceId: instanceId }; return GuaribasSubject.findAll({ @@ -218,11 +202,16 @@ export class KBService { } public async getFaqBySubjectArray(from: string, subjects: any): Promise { - const where = { - from: from, subject1: null, subject2: null, subject3: null, subject4: null - }; if (subjects) { + const where = { + from: from, + subject1: null, + subject2: null, + subject3: null, + subject4: null + }; + if (subjects[0]) { where.subject1 = subjects[0].internalId; } @@ -238,11 +227,15 @@ export class KBService { if (subjects[3]) { where.subject4 = subjects[3].internalId; } - } - return await GuaribasQuestion.findAll({ - where: where - }); + return await GuaribasQuestion.findAll({ + where: where + }); + } else { + return await GuaribasQuestion.findAll({ + where: { from: from } + }); + } } public async importKbTabularFile( @@ -250,19 +243,17 @@ export class KBService { instanceId: number, packageId: number ): Promise { - const file = Fs.readFileSync(filePath, 'UCS-2'); const opts = { delimiter: '\t' }; - let lastQuestion: GuaribasQuestion; + let lastQuestionId: number; let lastAnswer: GuaribasAnswer; const data = await parse(file, opts); return asyncPromise.eachSeries(data, async line => { - // Extracts values from columns in the current line. const subjectsText = line[0]; @@ -318,7 +309,7 @@ export class KBService { content: answer, format: format, packageId: packageId, - prevId: lastQuestion ? lastQuestion.questionId : 0 + prevId: lastQuestionId ? lastQuestionId : 0 }); const question1 = await GuaribasQuestion.create({ @@ -334,16 +325,14 @@ export class KBService { packageId: packageId }); - if (lastAnswer && lastQuestion) { - await lastAnswer.updateAttributes({ nextId: lastQuestion.questionId }); + if (lastAnswer && lastQuestionId) { + await lastAnswer.updateAttributes({ nextId: lastQuestionId }); } lastAnswer = answer1; - lastQuestion = question1; - - return Promise.resolve(lastQuestion); + lastQuestionId = question1.questionId; + return Promise.resolve(question1.questionId); } else { - // Skips the header. return Promise.resolve(null); @@ -351,16 +340,13 @@ export class KBService { }); } - public async sendAnswer(conversationalService: IGBConversationalService, - step: any, answer: GuaribasAnswer) { - + public async sendAnswer(conversationalService: IGBConversationalService, step: any, answer: GuaribasAnswer) { if (answer.content.endsWith('.mp4')) { await conversationalService.sendEvent(step, 'play', { playerType: 'video', data: answer.content }); - } else if (answer.content.length > 140 && - step.context._activity.channelId === 'webchat') { + } else if (answer.content.length > 140 && step.context._activity.channelId === 'webchat') { const locale = step.context.activity.locale; await step.context.sendActivity(Messages[locale].will_answer_projector); // TODO: Handle rnd. @@ -380,13 +366,15 @@ export class KBService { }); html = marked(answer.content); } - await conversationalService.sendEvent(step, 'play', - { - playerType: 'markdown', data: { - content: html, answer: answer, - prevId: answer.prevId, nextId: answer.nextId - } - }); + await conversationalService.sendEvent(step, 'play', { + playerType: 'markdown', + data: { + content: html, + answer: answer, + prevId: answer.prevId, + nextId: answer.nextId + } + }); } else { await step.context.sendActivity(answer.content); await conversationalService.sendEvent(step, 'stop', null); @@ -398,47 +386,28 @@ export class KBService { packageStorage: GuaribasPackage, instance: IGBInstance ): Promise { - // Imports subjects tree into database and return it. - await this.importSubjectFile( - packageStorage.packageId, - UrlJoin(localPath, 'subjects.json'), - instance); + await this.importSubjectFile(packageStorage.packageId, UrlJoin(localPath, 'subjects.json'), instance); // Import all .tsv files in the tabular directory. - return this.importKbTabularDirectory( - localPath, - instance, - packageStorage.packageId + return this.importKbTabularDirectory(localPath, instance, packageStorage.packageId); + } + + public async importKbTabularDirectory(localPath: string, instance: IGBInstance, packageId: number): Promise { + const files = await walkPromise(UrlJoin(localPath, 'tabular')); + + return Promise.all( + files.map(async file => { + if (file.name.endsWith('.tsv')) { + return this.importKbTabularFile(UrlJoin(file.root, file.name), instance.instanceId, packageId); + } + }) ); } - public async importKbTabularDirectory( - localPath: string, - instance: IGBInstance, - packageId: number - ): Promise { - - const files = await walkPromise(UrlJoin(localPath, 'tabular')); - - return Promise.all(files.map(async file => { - if (file.name.endsWith('.tsv')) { - return this.importKbTabularFile( - UrlJoin(file.root, file.name), - instance.instanceId, - packageId); - } - })); - - } - - public async importSubjectFile( - packageId: number, - filename: string, - instance: IGBInstance - ): Promise { + public async importSubjectFile(packageId: number, filename: string, instance: IGBInstance): Promise { const subjects = JSON.parse(Fs.readFileSync(filename, 'utf8')); const doIt = async (subjects: GuaribasSubject[], parentSubjectId: number) => { @@ -466,12 +435,7 @@ export class KBService { return doIt(subjects.children, null); } - public async undeployKbFromStorage( - instance: IGBInstance, - deployer: GBDeployer, - packageId: number - ) { - + public async undeployKbFromStorage(instance: IGBInstance, deployer: GBDeployer, packageId: number) { await GuaribasQuestion.destroy({ where: { instanceId: instance.instanceId, packageId: packageId } }); @@ -489,23 +453,19 @@ export class KBService { } /** - * Deploys a knowledge base to the storage using the .gbkb format. - * - * @param localPath Path to the .gbkb folder. - */ + * Deploys a knowledge base to the storage using the .gbkb format. + * + * @param localPath Path to the .gbkb folder. + */ public async deployKb(core: IGBCoreService, deployer: GBDeployer, localPath: string) { const packageType = Path.extname(localPath); const packageName = Path.basename(localPath); logger.info(`[GBDeployer] Opening package: ${localPath}`); - const packageObject = JSON.parse( - Fs.readFileSync(UrlJoin(localPath, 'package.json'), 'utf8') - ); + const packageObject = JSON.parse(Fs.readFileSync(UrlJoin(localPath, 'package.json'), 'utf8')); const instance = await core.loadInstance(packageObject.botId); logger.info(`[GBDeployer] Importing: ${localPath}`); - const p = await deployer.deployPackageToStorage( - instance.instanceId, - packageName); + const p = await deployer.deployPackageToStorage(instance.instanceId, packageName); await this.importKbPackage(localPath, p, instance); deployer.rebuildIndex(instance); From f67f04a4ba703ad5571ad75102962f76492ed94b Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Mon, 11 Feb 2019 13:21:44 -0200 Subject: [PATCH 2/3] fix(design): 404 on bot logo on default.gbtheme: https://github.com/GeneralBots/BotServer/issues/80. --- packages/default.gbtheme/css/SidebarMenu.css | 2 +- packages/default.gbtheme/images/bot-logo.png | Bin 20693 -> 25302 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/default.gbtheme/css/SidebarMenu.css b/packages/default.gbtheme/css/SidebarMenu.css index 65f9612b..b898ac9a 100644 --- a/packages/default.gbtheme/css/SidebarMenu.css +++ b/packages/default.gbtheme/css/SidebarMenu.css @@ -81,7 +81,7 @@ html[dir="ltr"] .ms-Nav-compositeLink.is-selected a:after { position: absolute; top: 0; left: 0; - background-image: url(../images/logo_General_BotS.png); + background-image: url(../images/bot-logo.png); background-position: 2px 2px; background-repeat: no-repeat; background-size: contain; diff --git a/packages/default.gbtheme/images/bot-logo.png b/packages/default.gbtheme/images/bot-logo.png index ff451eeebbbbc1dfbae882ef52c47c0f9fc26b58..68f43a6c2847bc355fcb4f48895932c957233e45 100644 GIT binary patch delta 9913 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 ap7-Cb(sT2Kf*3CEs2S;*=~nAF$NnFi>o1W2 delta 5267 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 From b7abf5f90ab4c87e687df12f4e920f5655657cd1 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sun, 17 Feb 2019 03:46:48 -0300 Subject: [PATCH 3/3] fix(gbot): gbot.cmd now installs packages and compiles the server before running. --- gbot.cmd | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gbot.cmd b/gbot.cmd index 59fb891b..243b11c5 100644 --- a/gbot.cmd +++ b/gbot.cmd @@ -1,2 +1,15 @@ -@echo off +@ECHO off + +ECHO General Bots Command Line + +IF EXIST node_modules goto COMPILE +ECHO Installing Packages for the first time use... +CALL npm install --silent + +:COMPILE +IF EXIST dist goto ALLSET +ECHO Compiling... +CALL tsc + +:ALLSET node dist/src/app.js