From 18200e8ea1fa99f905d0c85aaf5c0f8be6e59050 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Wed, 12 Sep 2018 05:18:37 -0300 Subject: [PATCH] Now context is correctly reset when coming from menu. --- deploy/core.gbapp/services/GBMinService.ts | 9 ++++++++- deploy/kb.gbapp/dialogs/MenuDialog.ts | 11 ++++++----- deploy/kb.gbapp/services/KBService.ts | 4 +++- src/app.ts | 7 +++++-- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/deploy/core.gbapp/services/GBMinService.ts b/deploy/core.gbapp/services/GBMinService.ts index f2581451..ee1a7153 100644 --- a/deploy/core.gbapp/services/GBMinService.ts +++ b/deploy/core.gbapp/services/GBMinService.ts @@ -226,7 +226,9 @@ export class GBMinService { private invokeLoadBot(appPackages: any[], min: any, server: any) { appPackages.forEach(e => { - e.sysPackages = new Array() + e.sysPackages = new Array(); + + // NOTE: A semicolon is necessary before this line. [ GBAdminPackage, @@ -310,6 +312,11 @@ export class GBMinService { await dc.continue() } } else if (context.activity.type === "event") { + + // Empties dialog stack before going to the target. + + await dc.endAll() + if (context.activity.name === "whoAmI") { await dc.begin("/whoAmI") } else if (context.activity.name === "showSubjects") { diff --git a/deploy/kb.gbapp/dialogs/MenuDialog.ts b/deploy/kb.gbapp/dialogs/MenuDialog.ts index ad3e7e0c..c5beee6b 100644 --- a/deploy/kb.gbapp/dialogs/MenuDialog.ts +++ b/deploy/kb.gbapp/dialogs/MenuDialog.ts @@ -57,11 +57,6 @@ export class MenuDialog extends IGBDialog { async (dc, args) => { var rootSubjectId = null - // var msg = dc.message TODO: message from Where in V4? - // if (msg.attachments && msg.attachments.length > 0) { - // var attachment = msg.attachments[0] - // } - if (args && args.data) { var subject = args.data @@ -73,10 +68,15 @@ export class MenuDialog extends IGBDialog { await dc.end() return } + + // Adds to bot a perception of a new subject. + const user = min.userState.get(dc.context) user.subjects.push(subject) rootSubjectId = subject.subjectId + // Whenever a subject is selected, shows a faq about it. + if (user.subjects.length > 0) { let data = await service.getFaqBySubjectArray("menu", user.subjects) await min.conversationalService.sendEvent(dc, "play", { @@ -135,6 +135,7 @@ export class MenuDialog extends IGBDialog { if (attachments.length == 0) { const user = min.userState.get(dc.context) + if (user.subjects && user.subjects.length > 0) { await dc.context.sendActivity( `Vamos pesquisar sobre ${KBService.getFormattedSubjectItems( diff --git a/deploy/kb.gbapp/services/KBService.ts b/deploy/kb.gbapp/services/KBService.ts index ccf2b042..294c55a8 100644 --- a/deploy/kb.gbapp/services/KBService.ts +++ b/deploy/kb.gbapp/services/KBService.ts @@ -601,15 +601,17 @@ export class KBService { async deployKb(core: IGBCoreService, deployer: GBDeployer, localPath: string) { let packageType = Path.extname(localPath) let packageName = Path.basename(localPath) - logger.info("[GBDeployer] Opening package: ", localPath) + logger.info(`[GBDeployer] Opening package: ${localPath}`) let packageObject = JSON.parse( Fs.readFileSync(UrlJoin(localPath, "package.json"), "utf8") ) let instance = await core.loadInstance(packageObject.botId) + logger.info(`[GBDeployer] Beginning importing: ${localPath}`) let p = await deployer.deployPackageToStorage( instance.instanceId, packageName) await this.importKbPackage(localPath, p, instance) + logger.info(`[GBDeployer] Finished importing ${localPath}`) } } diff --git a/src/app.ts b/src/app.ts index 6f003f9b..b8eea841 100644 --- a/src/app.ts +++ b/src/app.ts @@ -96,9 +96,12 @@ export class GBServer { let deployer = new GBDeployer(core, new GBImporter(core)) // Build a minimal bot instance for each .gbot deployment. - + let conversationalService = new GBConversationalService(core) - let minService = new GBMinService(core, conversationalService, deployer) + let minService = new GBMinService(core, conversationalService, deployer); + + // NOTE: the semicolon is necessary before this line. + // Loads all system packages. [GBAdminPackage, GBAnalyticsPackage, GBCorePackage, GBSecurityPackage, GBKBPackage, GBCustomerSatisfactionPackage, GBWhatsappPackage].forEach(e => {