From dab35ac77f53cecd7a5e4885bd8e2f704e64c683 Mon Sep 17 00:00:00 2001 From: rodrigorodriguez Date: Sun, 2 Oct 2022 15:12:52 -0300 Subject: [PATCH] new(all): Custom Domain support per bot. --- .../services/WhatsappDirectLine.ts | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index 751706b8..56cb9b10 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -140,38 +140,47 @@ export class WhatsappDirectLine extends GBService { const browser = await createBrowser(localName); - const createClient = (browserWSEndpoint)=>{ + const createClient = (browserWSEndpoint) => { + let puppeteer: any = { + headless: false, args: ['--disable-features=site-per-process', + `--user-data-dir=${localName}`] + }; + if (browserWSEndpoint) { + puppeteer = { browserWSEndpoint: browserWSEndpoint }; + } + const client = this.customClient = new Client({ authStrategy: new LocalAuth({ clientId: this.min.botId, dataPath: localName }), - puppeteer: {browserWSEndpoint:browserWSEndpoint } + puppeteer: puppeteer }); - - + + client.initialize(); + this.browserWSEndpoint = client.browser.wsEndpoint(); client.on('message', (async message => { await this.WhatsAppCallback(message, null); }).bind(this)); - + client.on('qr', (async (qr) => { - + const adminNumber = this.min.core.getParam(this.min.instance, 'Bot Admin Number', null); const adminEmail = this.min.core.getParam(this.min.instance, 'Bot Admin E-mail', null); - + // Sends QR Code to boot bot admin. - + const msg = `Please, scan QR Code with for bot ${this.botId}.`; GBLog.info(msg); qrcode.generate(qr, { small: true, scale: 0.5 }); - - + + // While handling other bots uses boot instance of this class to send QR Codes. - + if (this.botId !== GBServer.globals.minBoot.botId) { - + const s = new DialogKeywords(null, null, null, null); const qrBuf = await s.getQRCode(qr); const gbaiName = `${this.min.botId}.gbai`; @@ -186,22 +195,20 @@ export class WhatsappDirectLine extends GBService { GBServer.globals.minBoot.whatsAppDirectLine.sendFileToDevice(adminNumber, url, Path.basename(localName), msg); s.sendEmail(adminEmail, `Check your WhatsApp for bot ${this.botId}`, msg); } - + }).bind(this)); - + client.on('authenticated', () => { GBLog.info(`WhatsApp QR Code authenticated for ${this.botId}.`); }); - + }; - this.browserWSEndpoint = browser.wsEndpoint(); // store for later - (createClient.bind(this))(this.browserWSEndpoint); - + browser.on('disconnected', (async () => { - (createClient.bind(this))(this.browserWSEndpoint); + (createClient.bind(this))(this.browserWSEndpoint); }).bind(this)); setUrl = false;