From c173fa8a8e140f2b04b7401249fd68b75e9228d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Wed, 25 Apr 2018 00:58:34 -0300 Subject: [PATCH] Azure Search call fix for managing KB indexes. --- deploy/admin.gbapp/dialogs/AdminDialog.ts | 20 +++++++++------ deploy/core.gbapp/services/GBMinService.ts | 13 +++++++--- deploy/kb.gbapp/services/KBService.ts | 29 +++------------------- package.json | 2 +- src/app.ts | 26 ++++++++----------- 5 files changed, 36 insertions(+), 54 deletions(-) diff --git a/deploy/admin.gbapp/dialogs/AdminDialog.ts b/deploy/admin.gbapp/dialogs/AdminDialog.ts index 33127ada..5756f6f2 100644 --- a/deploy/admin.gbapp/dialogs/AdminDialog.ts +++ b/deploy/admin.gbapp/dialogs/AdminDialog.ts @@ -1,3 +1,4 @@ +import { KBService } from './../../kb.gbapp/services/KBService'; /*****************************************************************************\ | ( )_ _ | | _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | @@ -45,7 +46,7 @@ const UrlJoin = require("url-join"); export class AdminDialog extends IGBDialog { static setup(bot: UniversalBot, min: GBMinInstance) { - + let importer = new GBImporter(min.core); let deployer = new GBDeployer(min.core, importer); @@ -66,18 +67,18 @@ export class AdminDialog extends IGBDialog { session.send( "Welcome to Pragmatismo.io GeneralBots Administration." ); - Prompts.text(session, "Which task do you wanna run now?"); + Prompts.text(session, "Which task do you wanna run now?"); } else { session.endDialog(); } }, - function(session: Session, results) { + function (session: Session, results) { var text = results.response; if (text === "quit") { session.privateConversationData.authenticated = false; session.replaceDialog("/"); } else if (text === "sync") { - min.core.syncDatabaseStructure(() => {}); + min.core.syncDatabaseStructure(() => { }); session.send("Sync started..."); session.replaceDialog("/admin", { firstRun: false @@ -95,7 +96,7 @@ export class AdminDialog extends IGBDialog { }) ); } else if (text.split(" ")[0] === "redeployPackage") { - AdminDialog.undeployPackageCommand(text, min,session, () => { + AdminDialog.undeployPackageCommand(text, min, session, () => { AdminDialog.deployPackageCommand(text, session, deployer, min, () => { session.send("Redeploy done."); session.replaceDialog("/admin", { @@ -158,7 +159,7 @@ export class AdminDialog extends IGBDialog { UrlJoin(additionalPath, packageName), (data, err) => { session.send(`Package ${packageName} deployed... Please run rebuildIndex command.`); - + } ); } @@ -171,8 +172,11 @@ export class AdminDialog extends IGBDialog { min.instance.searchIndexer ); session.send("Rebuilding index..."); - search.rebuildIndex((data, err) => { - session.send("Index rebuilt."); + search.deleteIndex((data, err) => { + let kbService = new KBService(); + search.createIndex(kbService.getSearchSchema(min.instance.searchIndex), "gb", (data, err) => { + session.send("Index rebuilt."); + }); }); } } diff --git a/deploy/core.gbapp/services/GBMinService.ts b/deploy/core.gbapp/services/GBMinService.ts index e053c33b..9a54bfa2 100644 --- a/deploy/core.gbapp/services/GBMinService.ts +++ b/deploy/core.gbapp/services/GBMinService.ts @@ -184,6 +184,7 @@ export class GBMinService { // Prepares bot service. let inMemoryStorage = new MemoryBotStorage(); + min.bot = new gBuilder.UniversalBot(connector, { storage: inMemoryStorage }); @@ -197,6 +198,8 @@ export class GBMinService { min.bot.use({ botbuilder: (session, next) => { + + if (!session.privateConversationData.loaded) { setTimeout( () => { @@ -206,14 +209,16 @@ export class GBMinService { min.instance // TODO: Send a new thiner object. ) }, - 1500 + 500 ); session.privateConversationData.loaded = true; - appPackages.forEach(e => { - e.onNewSession(min, session) - }); session.userData.subjects = []; } + + appPackages.forEach(e => { + e.onNewSession(min, session) + }); + next(); }, receive: function (event: any, next) { diff --git a/deploy/kb.gbapp/services/KBService.ts b/deploy/kb.gbapp/services/KBService.ts index 5627ecc6..ba3ff9d4 100644 --- a/deploy/kb.gbapp/services/KBService.ts +++ b/deploy/kb.gbapp/services/KBService.ts @@ -159,10 +159,9 @@ export class KBService { } } - createGuaribasKbIndex(cb, name) { - let _this = this; - let schema = { - name: name, + getSearchSchema(indexName) { + return { + name: indexName, fields: [ { name: "questionId", @@ -259,28 +258,6 @@ export class KBService { defaultScoringProfile: null, corsOptions: null }; - - // TODO: Migrate to Azure Search. - // this.client.createIndex(schema, function(err, schemaReturned) { - - // let schemaIndexer = { - // name: _this.searchIndexer, - // description: 'gb', - // dataSourceName: 'gb', // TODO: Create it too dynamically from .env. - // targetIndexName: _this.searchIndex, - // parameters: { - // 'maxFailedItems' : 10, - // 'maxFailedItemsPerBatch' : 5, - // 'base64EncodeKeys': false, - // 'batchSize': 500 - // }}; - - // // create/update an indexer - // _this.client.createIndexer(schemaIndexer, function(err, schemaIndexerReturned){ - // cb(schemaIndexerReturned, err); - // }); - - // }); } static getFormattedSubjectItems(subjects: GuaribasSubject[]) { diff --git a/package.json b/package.json index d052a942..c8f4da09 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "express": "^4.16.2", "fs-walk": "0.0.1", "marked": "^0.3.12", - "pragmatismo-io-framework": "^1.0.4", + "pragmatismo-io-framework": "^1.0.6", "reflect-metadata": "^0.1.12", "request-promise-native": "^1.0.5", "sequelize": "^4.37.6", diff --git a/src/app.ts b/src/app.ts index 9559b284..0c53ce4f 100644 --- a/src/app.ts +++ b/src/app.ts @@ -99,22 +99,18 @@ export class GBServer { sysPackages.push(p); }); - core.syncDatabaseStructure((err) => { + (async () => { + try { + let appPackages = new Array(); + await minService.deployPackages(core, server, appPackages, sysPackages); + minService.buildMin(instance => { + logger.info(`Instance loaded: ${instance.botId}...`); + }, server, appPackages); - (async () => { - try { - let appPackages = new Array(); - await minService.deployPackages(core, server, appPackages, sysPackages); - minService.buildMin(instance => { - logger.info(`Instance loaded: ${instance.botId}...`); - }, server, appPackages); - - } catch (err) { - logger.log(err) - } - })() - - }); + } catch (err) { + logger.log(err) + } + })() });