From cb13d84abfd1390d5fb9dd25d56d08abc7a56e22 Mon Sep 17 00:00:00 2001 From: Rodrigo Rodriguez Date: Thu, 30 Apr 2020 09:14:32 -0300 Subject: [PATCH] new(all): TTS/STT on Whatsapp channel. --- .../core.gbapp/services/GBConversationalService.ts | 2 +- packages/core.gbapp/services/GBCoreService.ts | 10 +++++++++- packages/core.gbapp/services/GBMinService.ts | 12 ++++++++---- .../whatsapp.gblib/services/WhatsappDirectLine.ts | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index 3ff08358..2c9fbc7d 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -147,7 +147,7 @@ export class GBConversationalService { try { speechConfig.speechSynthesisLanguage = locale; - speechConfig.speechSynthesisVoiceName = "pt-BR-Daniel-Apollo" // pt-BR-HeloisaRUS; + speechConfig.speechSynthesisVoiceName = "pt-BR-HeloisaRUS"; synthesizer.speakTextAsync(text, (result) => { diff --git a/packages/core.gbapp/services/GBCoreService.ts b/packages/core.gbapp/services/GBCoreService.ts index 4371468d..cb9ffbdc 100644 --- a/packages/core.gbapp/services/GBCoreService.ts +++ b/packages/core.gbapp/services/GBCoreService.ts @@ -210,7 +210,15 @@ export class GBCoreService implements IGBCoreService { * Loads all items to start several listeners. */ public async loadInstances(): Promise { - return GuaribasInstance.findAll({}); + if (process.env.LOAD_ONLY !== undefined) + { + const options = { where: { botId: process.env.LOAD_ONLY } }; + return GuaribasInstance.findAll(options); + } + else + { + return GuaribasInstance.findAll({}); + } } /** diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index a97a03c2..d5bbeb8f 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -163,6 +163,10 @@ export class GBMinService { } else { activeMin = GBServer.globals.minInstances.filter(p => p.botId === user.currentBotId)[0];; + if (activeMin === undefined) { + activeMin = GBServer.globals.minBoot; + await (activeMin as any).whatsAppDirectLine.sendToDevice(id, `O outro Bot que você estava falando(${user.currentBotId}), não está mais disponível. Agora você está falando comigo, ${activeMin.instance.title}...`); + } await (activeMin as any).whatsAppDirectLine.received(req, res); } } @@ -416,7 +420,7 @@ export class GBMinService { min.instance.whatsappServiceNumber, min.instance.whatsappServiceUrl ); - await min.whatsAppDirectLine.setup(true); + await min.whatsAppDirectLine.setup(true); } else { const minBoot = GBServer.globals.minBoot as any; @@ -424,14 +428,14 @@ export class GBMinService { new WhatsappDirectLine( min, min.botId, - min.instance.webchatKey, + min.instance.webchatKey, minBoot.instance.whatsappServiceKey, minBoot.instance.whatsappServiceNumber, minBoot.instance.whatsappServiceUrl ); - await min.whatsAppDirectLine.setup(false); + await min.whatsAppDirectLine.setup(false); } - + min.userProfile = conversationState.createProperty('userProfile'); const dialogState = conversationState.createProperty('dialogState'); diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index 37487ec7..652a04cc 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -320,7 +320,7 @@ export class WhatsappDirectLine extends GBService { let url = await GBConversationalService.getAudioBufferFromText( this.min.instance.speechKey, this.min.instance.cloudLocation, - msg, 'pt-br' + msg, 'pt-BR' ); await this.sendFileToDevice(to, url, 'Audio', msg);