diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index ae504c39..346f2714 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -1,3 +1,35 @@ +/*****************************************************************************\ +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' _ `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | +| | +| General Bots Copyright (c) Pragmatismo.io. All rights reserved. | +| Licensed under the AGPL-3.0. | +| | +| According to our dual licensing model, this program can be used either | +| under the terms of the GNU Affero General Public License, version 3, | +| or under a proprietary license. | +| | +| The texts of the GNU Affero General Public License with an additional | +| permission and of our proprietary license can be found at and | +| in the LICENSE file you have received along with this program. | +| | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | +| GNU Affero General Public License for more details. | +| | +| "General Bots" is a registered trademark of Pragmatismo.io. | +| The licensing of the program under the AGPLv3 does not imply a | +| trademark license. Therefore any rights, title and interest in | +| our trademarks remain entirely with us. | +| | +\*****************************************************************************/ + import urlJoin = require('url-join'); const Swagger = require('swagger-client'); @@ -10,7 +42,7 @@ import { GBServer } from '../../../src/app'; * Support for Whatsapp. */ export class WhatsappDirectLine extends GBService { - public pollInterval = 1000; + public pollInterval = 5000; public directLineClientName = 'DirectLineClient'; public directLineClient: any; @@ -81,7 +113,7 @@ export class WhatsappDirectLine extends GBService { return; // Exit here. } - GBLog.info(`GBWhatsapp: Hook called. from: ${from}(${fromName}), text: ${text})`); + GBLog.info(`GBWhatsapp: RCV ${from}(${fromName}): ${text})`); const conversationId = this.conversationIds[from]; @@ -136,7 +168,9 @@ export class WhatsappDirectLine extends GBService { GBLog.info(`GBWhatsapp: Starting polling message for conversationId: ${conversationId}.`); - setInterval(() => { + let task: NodeJS.Timer; + const worker = () => { + clearInterval(task); client.Conversations.Conversations_GetActivities({ conversationId: conversationId, watermark: this.watermark @@ -155,8 +189,10 @@ export class WhatsappDirectLine extends GBService { .catch(err => { GBLog.error(`Error calling printMessages on Whatsapp channel ${err.data}`); }); + task = setInterval(worker, this.pollInterval); + }; - }, this.pollInterval); + task = setInterval(worker, this.pollInterval); } public printMessages(activities, conversationId, from, fromName) { @@ -179,7 +215,7 @@ export class WhatsappDirectLine extends GBService { let output = ''; if (activity.text) { - GBLog.info(`GBWhatsapp: MSG: ${activity.text}`); + GBLog.info(`GBWhatsapp: SND ${from}(fromName): ${activity.text}`); output = activity.text; }