From 4dcb581897e704ec7e31a9c6ec7feb405362250c Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Sun, 9 Jan 2022 19:17:03 -0300 Subject: [PATCH] new(whatsapp.gblib): Multiple service definition allowed per tenant. --- packages/core.gbapp/models/GBModel.ts | 2 +- packages/core.gbapp/services/GBMinService.ts | 15 +++++++++++++-- .../whatsapp.gblib/services/WhatsappDirectLine.ts | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/core.gbapp/models/GBModel.ts b/packages/core.gbapp/models/GBModel.ts index 93cc9864..8773e592 100644 --- a/packages/core.gbapp/models/GBModel.ts +++ b/packages/core.gbapp/models/GBModel.ts @@ -333,7 +333,7 @@ export class GuaribasChannel extends Model { export class GuaribasException extends Model { @PrimaryKey @AutoIncrement - @Column(DataType.STRING(255)) + @Column(DataType.INTEGER) public exceptionId: number; @Column(DataType.STRING(255)) diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 835ab820..c637fff8 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -167,7 +167,7 @@ export class GBMinService { // Servers the WhatsApp callback. - GBServer.globals.server.post('/webhooks/whatsapp', this.WhatsAppCallback.bind(this)); + GBServer.globals.server.post('/webhooks/whatsapp/:botId', this.WhatsAppCallback.bind(this)); // Calls mountBot event to all bots. @@ -332,6 +332,13 @@ export class GBMinService { } let activeMin; + let botId = req.params.botId; + if (botId === '[default]' || botId === undefined) { + botId = GBConfigService.get('BOT_ID'); + } + + GBLog.info(`Client requested instance for: ${botId}.`); + // Processes group behaviour. @@ -442,10 +449,14 @@ export class GBMinService { } } } else { + let minInstance = GBServer.globals.minInstances.filter( + p => p.instance.botId.toLowerCase() === botId + )[0]; + // Just pass the message to the receiver. - await (GBServer.globals.minBoot as any).whatsAppDirectLine.received(req, res); + await minInstance.whatsAppDirectLine.received(req, res); } } catch (error) { GBLog.error(`Error on Whatsapp callback: ${error.data ? error.data : error}`); diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index e79b6dca..ecbdde69 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -110,7 +110,7 @@ export class WhatsappDirectLine extends GBService { timeout: 10000, qs: { token: this.whatsappServiceKey, - webhookUrl: `${GBServer.globals.publicAddress}/webhooks/whatsapp`, + webhookUrl: `${GBServer.globals.publicAddress}/webhooks/whatsapp/${this.botId}`, set: true }, headers: {