From d7ddb99fb0771dfa08c876b82b42c0d19bffdc2c Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Fri, 4 Oct 2024 19:08:23 -0300 Subject: [PATCH] fix: Fixed bot fallback not working on integrations --- CHANGELOG.md | 1 + .../dify/controllers/dify.controller.ts | 22 +++++++++++++++++-- .../controllers/evolutionBot.controller.ts | 22 +++++++++++++++++-- .../flowise/controllers/flowise.controller.ts | 22 +++++++++++++++++-- .../openai/controllers/openai.controller.ts | 22 +++++++++++++++++-- .../typebot/controllers/typebot.controller.ts | 22 +++++++++++++++++-- src/utils/findBotByTrigger.ts | 16 -------------- 7 files changed, 101 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36462bdd..296673ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ * Fixed getBase64FromMediaMessage with convertToMp4 * Fixed bug when send message when don't have mentionsEveryOne on payload * Does not search message without chatwoot Message Id for reply +* Fixed bot fallback not working on integrations # 2.1.1 (2024-09-22 10:31) diff --git a/src/api/integrations/chatbot/dify/controllers/dify.controller.ts b/src/api/integrations/chatbot/dify/controllers/dify.controller.ts index f98ff470..17961024 100644 --- a/src/api/integrations/chatbot/dify/controllers/dify.controller.ts +++ b/src/api/integrations/chatbot/dify/controllers/dify.controller.ts @@ -726,7 +726,7 @@ export class DifyController extends ChatbotController implements ChatbotControll const content = getConversationMessage(msg); - const findBot = (await this.findBotTrigger( + let findBot = (await this.findBotTrigger( this.botRepository, this.settingsRepository, content, @@ -734,7 +734,25 @@ export class DifyController extends ChatbotController implements ChatbotControll session, )) as DifyModel; - if (!findBot) return; + if (!findBot) { + const fallback = await this.settingsRepository.findFirst({ + where: { + instanceId: instance.instanceId, + }, + }); + + if (fallback?.difyIdFallback) { + const findFallback = await this.botRepository.findFirst({ + where: { + id: fallback.difyIdFallback, + }, + }); + + findBot = findFallback; + } else { + return; + } + } let expire = findBot?.expire; let keywordFinish = findBot?.keywordFinish; diff --git a/src/api/integrations/chatbot/evolutionBot/controllers/evolutionBot.controller.ts b/src/api/integrations/chatbot/evolutionBot/controllers/evolutionBot.controller.ts index a2af0c5b..96f89092 100644 --- a/src/api/integrations/chatbot/evolutionBot/controllers/evolutionBot.controller.ts +++ b/src/api/integrations/chatbot/evolutionBot/controllers/evolutionBot.controller.ts @@ -698,7 +698,7 @@ export class EvolutionBotController extends ChatbotController implements Chatbot const content = getConversationMessage(msg); - const findBot = (await this.findBotTrigger( + let findBot = (await this.findBotTrigger( this.botRepository, this.settingsRepository, content, @@ -706,7 +706,25 @@ export class EvolutionBotController extends ChatbotController implements Chatbot session, )) as EvolutionBot; - if (!findBot) return; + if (!findBot) { + const fallback = await this.settingsRepository.findFirst({ + where: { + instanceId: instance.instanceId, + }, + }); + + if (fallback?.botIdFallback) { + const findFallback = await this.botRepository.findFirst({ + where: { + id: fallback.botIdFallback, + }, + }); + + findBot = findFallback; + } else { + return; + } + } let expire = findBot?.expire; let keywordFinish = findBot?.keywordFinish; diff --git a/src/api/integrations/chatbot/flowise/controllers/flowise.controller.ts b/src/api/integrations/chatbot/flowise/controllers/flowise.controller.ts index 3ba2d1cc..227bbcb5 100644 --- a/src/api/integrations/chatbot/flowise/controllers/flowise.controller.ts +++ b/src/api/integrations/chatbot/flowise/controllers/flowise.controller.ts @@ -698,7 +698,7 @@ export class FlowiseController extends ChatbotController implements ChatbotContr const content = getConversationMessage(msg); - const findBot = (await this.findBotTrigger( + let findBot = (await this.findBotTrigger( this.botRepository, this.settingsRepository, content, @@ -706,7 +706,25 @@ export class FlowiseController extends ChatbotController implements ChatbotContr session, )) as Flowise; - if (!findBot) return; + if (!findBot) { + const fallback = await this.settingsRepository.findFirst({ + where: { + instanceId: instance.instanceId, + }, + }); + + if (fallback?.flowiseIdFallback) { + const findFallback = await this.botRepository.findFirst({ + where: { + id: fallback.flowiseIdFallback, + }, + }); + + findBot = findFallback; + } else { + return; + } + } let expire = findBot?.expire; let keywordFinish = findBot?.keywordFinish; diff --git a/src/api/integrations/chatbot/openai/controllers/openai.controller.ts b/src/api/integrations/chatbot/openai/controllers/openai.controller.ts index f0fb6276..50e40685 100644 --- a/src/api/integrations/chatbot/openai/controllers/openai.controller.ts +++ b/src/api/integrations/chatbot/openai/controllers/openai.controller.ts @@ -935,7 +935,7 @@ export class OpenaiController extends ChatbotController implements ChatbotContro const content = getConversationMessage(msg); - const findBot = (await this.findBotTrigger( + let findBot = (await this.findBotTrigger( this.botRepository, this.settingsRepository, content, @@ -943,7 +943,25 @@ export class OpenaiController extends ChatbotController implements ChatbotContro session, )) as OpenaiBot; - if (!findBot) return; + if (!findBot) { + const fallback = await this.settingsRepository.findFirst({ + where: { + instanceId: instance.instanceId, + }, + }); + + if (fallback?.openaiIdFallback) { + const findFallback = await this.botRepository.findFirst({ + where: { + id: fallback.openaiIdFallback, + }, + }); + + findBot = findFallback; + } else { + return; + } + } let expire = findBot?.expire; let keywordFinish = findBot?.keywordFinish; diff --git a/src/api/integrations/chatbot/typebot/controllers/typebot.controller.ts b/src/api/integrations/chatbot/typebot/controllers/typebot.controller.ts index 82bbe9f3..1f03197f 100644 --- a/src/api/integrations/chatbot/typebot/controllers/typebot.controller.ts +++ b/src/api/integrations/chatbot/typebot/controllers/typebot.controller.ts @@ -985,7 +985,7 @@ export class TypebotController extends ChatbotController implements ChatbotContr const content = getConversationMessage(msg); - const findBot = (await this.findBotTrigger( + let findBot = (await this.findBotTrigger( this.botRepository, this.settingsRepository, content, @@ -993,7 +993,25 @@ export class TypebotController extends ChatbotController implements ChatbotContr session, )) as TypebotModel; - if (!findBot) return; + if (!findBot) { + const fallback = await this.settingsRepository.findFirst({ + where: { + instanceId: instance.instanceId, + }, + }); + + if (fallback?.typebotIdFallback) { + const findFallback = await this.botRepository.findFirst({ + where: { + id: fallback.typebotIdFallback, + }, + }); + + findBot = findFallback; + } else { + return; + } + } const settings = await this.prismaRepository.typebotSetting.findFirst({ where: { diff --git a/src/utils/findBotByTrigger.ts b/src/utils/findBotByTrigger.ts index dc199254..1b8fcf3f 100644 --- a/src/utils/findBotByTrigger.ts +++ b/src/utils/findBotByTrigger.ts @@ -129,21 +129,5 @@ export const findBotByTrigger = async ( if (findTriggerContains) return findTriggerContains; - const fallback = await settingsRepository.findFirst({ - where: { - instanceId: instanceId, - }, - }); - - if (fallback?.openaiIdFallback) { - const findFallback = await botRepository.findFirst({ - where: { - id: fallback.openaiIdFallback, - }, - }); - - if (findFallback) return findFallback; - } - return null; };