Azure Search call fix for managing KB indexes.

This commit is contained in:
Rodrigo Rodriguez 2018-04-25 00:58:34 -03:00
parent 1f1d63c2ff
commit c173fa8a8e
5 changed files with 36 additions and 54 deletions

View file

@ -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 { export class AdminDialog extends IGBDialog {
static setup(bot: UniversalBot, min: GBMinInstance) { static setup(bot: UniversalBot, min: GBMinInstance) {
let importer = new GBImporter(min.core); let importer = new GBImporter(min.core);
let deployer = new GBDeployer(min.core, importer); let deployer = new GBDeployer(min.core, importer);
@ -66,18 +67,18 @@ export class AdminDialog extends IGBDialog {
session.send( session.send(
"Welcome to Pragmatismo.io GeneralBots Administration." "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 { } else {
session.endDialog(); session.endDialog();
} }
}, },
function(session: Session, results) { function (session: Session, results) {
var text = results.response; var text = results.response;
if (text === "quit") { if (text === "quit") {
session.privateConversationData.authenticated = false; session.privateConversationData.authenticated = false;
session.replaceDialog("/"); session.replaceDialog("/");
} else if (text === "sync") { } else if (text === "sync") {
min.core.syncDatabaseStructure(() => {}); min.core.syncDatabaseStructure(() => { });
session.send("Sync started..."); session.send("Sync started...");
session.replaceDialog("/admin", { session.replaceDialog("/admin", {
firstRun: false firstRun: false
@ -95,7 +96,7 @@ export class AdminDialog extends IGBDialog {
}) })
); );
} else if (text.split(" ")[0] === "redeployPackage") { } else if (text.split(" ")[0] === "redeployPackage") {
AdminDialog.undeployPackageCommand(text, min,session, () => { AdminDialog.undeployPackageCommand(text, min, session, () => {
AdminDialog.deployPackageCommand(text, session, deployer, min, () => { AdminDialog.deployPackageCommand(text, session, deployer, min, () => {
session.send("Redeploy done."); session.send("Redeploy done.");
session.replaceDialog("/admin", { session.replaceDialog("/admin", {
@ -158,7 +159,7 @@ export class AdminDialog extends IGBDialog {
UrlJoin(additionalPath, packageName), UrlJoin(additionalPath, packageName),
(data, err) => { (data, err) => {
session.send(`Package ${packageName} deployed... Please run rebuildIndex command.`); session.send(`Package ${packageName} deployed... Please run rebuildIndex command.`);
} }
); );
} }
@ -171,8 +172,11 @@ export class AdminDialog extends IGBDialog {
min.instance.searchIndexer min.instance.searchIndexer
); );
session.send("Rebuilding index..."); session.send("Rebuilding index...");
search.rebuildIndex((data, err) => { search.deleteIndex((data, err) => {
session.send("Index rebuilt."); let kbService = new KBService();
search.createIndex(kbService.getSearchSchema(min.instance.searchIndex), "gb", (data, err) => {
session.send("Index rebuilt.");
});
}); });
} }
} }

View file

@ -184,6 +184,7 @@ export class GBMinService {
// Prepares bot service. // Prepares bot service.
let inMemoryStorage = new MemoryBotStorage(); let inMemoryStorage = new MemoryBotStorage();
min.bot = new gBuilder.UniversalBot(connector, { min.bot = new gBuilder.UniversalBot(connector, {
storage: inMemoryStorage storage: inMemoryStorage
}); });
@ -197,6 +198,8 @@ export class GBMinService {
min.bot.use({ min.bot.use({
botbuilder: (session, next) => { botbuilder: (session, next) => {
if (!session.privateConversationData.loaded) { if (!session.privateConversationData.loaded) {
setTimeout( setTimeout(
() => { () => {
@ -206,14 +209,16 @@ export class GBMinService {
min.instance // TODO: Send a new thiner object. min.instance // TODO: Send a new thiner object.
) )
}, },
1500 500
); );
session.privateConversationData.loaded = true; session.privateConversationData.loaded = true;
appPackages.forEach(e => {
e.onNewSession(min, session)
});
session.userData.subjects = []; session.userData.subjects = [];
} }
appPackages.forEach(e => {
e.onNewSession(min, session)
});
next(); next();
}, },
receive: function (event: any, next) { receive: function (event: any, next) {

View file

@ -159,10 +159,9 @@ export class KBService {
} }
} }
createGuaribasKbIndex(cb, name) { getSearchSchema(indexName) {
let _this = this; return {
let schema = { name: indexName,
name: name,
fields: [ fields: [
{ {
name: "questionId", name: "questionId",
@ -259,28 +258,6 @@ export class KBService {
defaultScoringProfile: null, defaultScoringProfile: null,
corsOptions: 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[]) { static getFormattedSubjectItems(subjects: GuaribasSubject[]) {

View file

@ -28,7 +28,7 @@
"express": "^4.16.2", "express": "^4.16.2",
"fs-walk": "0.0.1", "fs-walk": "0.0.1",
"marked": "^0.3.12", "marked": "^0.3.12",
"pragmatismo-io-framework": "^1.0.4", "pragmatismo-io-framework": "^1.0.6",
"reflect-metadata": "^0.1.12", "reflect-metadata": "^0.1.12",
"request-promise-native": "^1.0.5", "request-promise-native": "^1.0.5",
"sequelize": "^4.37.6", "sequelize": "^4.37.6",

View file

@ -99,22 +99,18 @@ export class GBServer {
sysPackages.push(p); sysPackages.push(p);
}); });
core.syncDatabaseStructure((err) => { (async () => {
try {
let appPackages = new Array<IGBPackage>();
await minService.deployPackages(core, server, appPackages, sysPackages);
minService.buildMin(instance => {
logger.info(`Instance loaded: ${instance.botId}...`);
}, server, appPackages);
(async () => { } catch (err) {
try { logger.log(err)
let appPackages = new Array<IGBPackage>(); }
await minService.deployPackages(core, server, appPackages, sysPackages); })()
minService.buildMin(instance => {
logger.info(`Instance loaded: ${instance.botId}...`);
}, server, appPackages);
} catch (err) {
logger.log(err)
}
})()
});
}); });