From 3171911c78c14bf07c5f6e387b12d127519c3048 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Wed, 26 Feb 2020 15:20:47 -0300 Subject: [PATCH] new(core.gbapp): GB Apps can now publish bots and replace root dialog. --- packages/core.gbapp/dialogs/WelcomeDialog.ts | 3 +-- packages/core.gbapp/services/GBDeployer.ts | 13 ++++++------- packages/core.gbapp/services/GBMinService.ts | 8 +++++--- packages/default.gbui/package.json | 4 ++-- packages/default.gbui/src/GBUIApp.js | 5 +++++ .../whatsapp.gblib/services/WhatsappDirectLine.ts | 6 ++++-- src/app.ts | 1 + 7 files changed, 24 insertions(+), 16 deletions(-) diff --git a/packages/core.gbapp/dialogs/WelcomeDialog.ts b/packages/core.gbapp/dialogs/WelcomeDialog.ts index a247871c..6fcbe67c 100644 --- a/packages/core.gbapp/dialogs/WelcomeDialog.ts +++ b/packages/core.gbapp/dialogs/WelcomeDialog.ts @@ -57,9 +57,8 @@ export class WelcomeDialog extends IGBDialog { min.dialogs.add(new WaterfallDialog('/', [ async step => { - if (GBServer.globals.entryPointDialog !== undefined) + if (GBServer.globals.entryPointDialog !== null) { - return step.replaceDialog(GBServer.globals.entryPointDialog); } diff --git a/packages/core.gbapp/services/GBDeployer.ts b/packages/core.gbapp/services/GBDeployer.ts index 5c31507a..24d7a199 100644 --- a/packages/core.gbapp/services/GBDeployer.ts +++ b/packages/core.gbapp/services/GBDeployer.ts @@ -92,7 +92,7 @@ export class GBDeployer { const _this = this; return new Promise( - async (resolve: any, reject: any)=> { + async (resolve: any, reject: any) => { GBLog.info(`PWD ${process.env.PWD}...`); let totalPackages = 0; let paths = [urlJoin(process.env.PWD, GBDeployer.deployFolder), urlJoin(process.env.PWD, GBDeployer.workFolder)]; @@ -163,9 +163,9 @@ export class GBDeployer { ); } - public async deployBlankBot(botId: string){ + public async deployBlankBot(botId: string) { let instance = await this.importer.createBotInstance(botId); - + const username = GBConfigService.get('CLOUD_USERNAME'); const password = GBConfigService.get('CLOUD_PASSWORD'); const accessToken = await GBAdminService.getADALTokenFromUsername(username, password); @@ -243,7 +243,7 @@ export class GBDeployer { await GBServer.globals.minService.mountBot(instance); } await this.core.saveInstance(instance); - + } /** @@ -514,13 +514,12 @@ export class GBDeployer { } folder = Path.join(e, 'dist'); - if (!Fs.existsSync()) { + if (!Fs.existsSync()) { GBLog.info(`Compiling ${e}...`); try { child_process.execSync(Path.join(process.env.PWD, 'node_modules/.bin/tsc'), { cwd: e }); - GBLog.info(`Importando o pacote '${e}' on dir ${process.env.PWD}`); - const m = await import(Path.join(process.env.PWD, e)); + const m = await import(e); const p = new m.Package(); p.loadPackage(core, core.sequelize); appPackages.push(p); diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index f9ec4aae..f83fdd34 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -110,10 +110,11 @@ export class GBMinService { ) { // Serves default UI on root address '/' if web enabled. if (process.env.DISABLE_WEB !== 'true') { - let url = urlJoin(GBDeployer.deployFolder, GBMinService.uiPackage, 'build'); + let url = GBServer.globals.wwwroot ? + GBServer.globals.wwwroot : + urlJoin(GBDeployer.deployFolder, GBMinService.uiPackage, 'build'); - GBServer.globals.server.use('/', express.static(GBServer.globals.wwwroot ? - GBServer.globals.wwwroot : url)); + GBServer.globals.server.use('/', express.static(url)); } // Serves the bot information object via HTTP so clients can get // instance information stored on server. @@ -483,6 +484,7 @@ export class GBMinService { appPackages.forEach(e => { e.onNewSession(min, step); }); + await step.beginDialog('/'); } else { GBLog.info(`Member added to conversation: ${member.name}`); } diff --git a/packages/default.gbui/package.json b/packages/default.gbui/package.json index 8d3f67b2..5c67911f 100644 --- a/packages/default.gbui/package.json +++ b/packages/default.gbui/package.json @@ -1,8 +1,8 @@ { "name": "default.gbui", - "version": "0.0.13", + "version": "1.0.0", "private": false, - "repository": "https://github.com/pragmatismo-io/BotServer", + "repository": "https://github.com/GeneralBots/BotServer", "description": "Default web interface for General Bots open-core", "license": "AGPL-3.0", "homepage": ".", diff --git a/packages/default.gbui/src/GBUIApp.js b/packages/default.gbui/src/GBUIApp.js index ad1f2669..8652993f 100644 --- a/packages/default.gbui/src/GBUIApp.js +++ b/packages/default.gbui/src/GBUIApp.js @@ -138,6 +138,11 @@ class GBUIApp extends React.Component { } authenticate() { + + if (this.state.instanceClient.authenticatorClientId === null) { + return; + } + let _this_ = this; let authority = 'https://login.microsoftonline.com/' + this.state.instanceClient.authenticatorTenant; diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index 43eb63cc..eb865719 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -251,7 +251,7 @@ export class WhatsappDirectLine extends GBService { const result = await request.post(options); GBLog.info(result); } catch (error) { - GBLog.error(`Error sending message to Whatsapp provider ${error.message}`); + GBLog.error(`Error sending file to Whatsapp provider ${error.message}`); } } @@ -274,7 +274,7 @@ export class WhatsappDirectLine extends GBService { const result = await request.post(options); GBLog.info(result); } catch (error) { - GBLog.error(`Error sending message to Whatsapp provider ${error.message}`); + GBLog.error(`Error sending audio message to Whatsapp provider ${error.message}`); } } @@ -298,6 +298,8 @@ export class WhatsappDirectLine extends GBService { GBLog.info(result); } catch (error) { GBLog.error(`Error sending message to Whatsapp provider ${error.message}`); + + // TODO: Handle Error: socket hang up and retry. } } } diff --git a/src/app.ts b/src/app.ts index 91512c19..8c9856f4 100644 --- a/src/app.ts +++ b/src/app.ts @@ -90,6 +90,7 @@ export class GBServer { GBServer.globals.sysPackages = []; GBServer.globals.minInstances = []; GBServer.globals.wwwroot = null; + GBServer.globals.entryPointDialog = null; server.use(bodyParser.json()); server.use(bodyParser.urlencoded({ extended: true }));