From 31258a9b85e173f44671f6ba396d7e4b12b0f03a Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 11 Jun 2024 10:09:04 -0300 Subject: [PATCH] feat: Organization configuration and logo in chatwoot bot contact --- CHANGELOG.md | 1 + .../migration.sql | 3 +++ prisma/mysql-schema.prisma | 2 ++ prisma/postgresql-schema.prisma | 2 ++ src/api/controllers/instance.controller.ts | 4 ++++ src/api/dto/instance.dto.ts | 2 ++ .../chatwoot/controllers/chatwoot.controller.ts | 16 ---------------- .../integrations/chatwoot/dto/chatwoot.dto.ts | 2 ++ .../chatwoot/services/chatwoot.service.ts | 8 ++++++-- src/api/services/channel.service.ts | 2 ++ 10 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 prisma/migrations/20240611125754_create_columns_whitelabel_chatwoot/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index b65d9961..1c5dc019 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Added typebot integration activation * Now you can register several typebots with triggers * Media sent to typebot now goes as a template string, example: imageMessage:MESSAGE_ID +* Organization configuration and logo in chatwoot bot contact ### Fixed diff --git a/prisma/migrations/20240611125754_create_columns_whitelabel_chatwoot/migration.sql b/prisma/migrations/20240611125754_create_columns_whitelabel_chatwoot/migration.sql new file mode 100644 index 00000000..a94f2ef6 --- /dev/null +++ b/prisma/migrations/20240611125754_create_columns_whitelabel_chatwoot/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "Chatwoot" ADD COLUMN "logo" VARCHAR(500), +ADD COLUMN "organization" VARCHAR(100); diff --git a/prisma/mysql-schema.prisma b/prisma/mysql-schema.prisma index 4d35a001..7db54d50 100644 --- a/prisma/mysql-schema.prisma +++ b/prisma/mysql-schema.prisma @@ -171,6 +171,8 @@ model Chatwoot { importContacts Boolean? @default(false) importMessages Boolean? @default(false) daysLimitImportMessages Int? @db.Int + organization String? @db.VarChar(100) + logoUrl String? @db.VarChar(500) createdAt DateTime? @default(now()) @db.Date updatedAt DateTime @updatedAt @db.Date Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) diff --git a/prisma/postgresql-schema.prisma b/prisma/postgresql-schema.prisma index e9d4a85a..ab8b77d9 100644 --- a/prisma/postgresql-schema.prisma +++ b/prisma/postgresql-schema.prisma @@ -170,6 +170,8 @@ model Chatwoot { importContacts Boolean? @default(false) @db.Boolean importMessages Boolean? @default(false) @db.Boolean daysLimitImportMessages Int? @db.Integer + organization String? @db.VarChar(100) + logo String? @db.VarChar(500) createdAt DateTime? @default(now()) @db.Timestamp updatedAt DateTime @updatedAt @db.Timestamp Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) diff --git a/src/api/controllers/instance.controller.ts b/src/api/controllers/instance.controller.ts index 7d40034c..efde8afc 100644 --- a/src/api/controllers/instance.controller.ts +++ b/src/api/controllers/instance.controller.ts @@ -86,6 +86,8 @@ export class InstanceController { chatwootMergeBrazilContacts, chatwootImportMessages, chatwootDaysLimitImportMessages, + chatwootOrganization, + chatwootLogo, }: InstanceDto) { try { await this.authService.checkDuplicateToken(token); @@ -383,6 +385,8 @@ export class InstanceController { mergeBrazilContacts: chatwootMergeBrazilContacts ?? false, importMessages: chatwootImportMessages ?? true, daysLimitImportMessages: chatwootDaysLimitImportMessages ?? 60, + organization: chatwootOrganization, + logo: chatwootLogo, autoCreate: true, }); } catch (error) { diff --git a/src/api/dto/instance.dto.ts b/src/api/dto/instance.dto.ts index 9d123f28..ff465e8e 100644 --- a/src/api/dto/instance.dto.ts +++ b/src/api/dto/instance.dto.ts @@ -29,6 +29,8 @@ export class InstanceDto { chatwootImportMessages?: boolean; chatwootDaysLimitImportMessages?: number; chatwootNameInbox?: string; + chatwootOrganization?: string; + chatwootLogo?: string; websocketEnabled?: boolean; websocketEvents?: string[]; rabbitmqEnabled?: boolean; diff --git a/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts b/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts index 87cd6bda..bf9ac397 100644 --- a/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts +++ b/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts @@ -39,22 +39,6 @@ export class ChatwootController { if (data.signMsg === false) data.signDelimiter = null; } - if (!data.enabled) { - data.accountId = ''; - data.token = ''; - data.url = ''; - data.signMsg = false; - data.signDelimiter = null; - data.reopenConversation = false; - data.conversationPending = false; - data.importContacts = false; - data.importMessages = false; - data.mergeBrazilContacts = false; - data.daysLimitImportMessages = 0; - data.autoCreate = false; - data.nameInbox = ''; - } - if (!data.nameInbox || data.nameInbox === '') { data.nameInbox = instance.instanceName; } diff --git a/src/api/integrations/chatwoot/dto/chatwoot.dto.ts b/src/api/integrations/chatwoot/dto/chatwoot.dto.ts index 5ddb97d9..8f3729a4 100644 --- a/src/api/integrations/chatwoot/dto/chatwoot.dto.ts +++ b/src/api/integrations/chatwoot/dto/chatwoot.dto.ts @@ -14,4 +14,6 @@ export class ChatwootDto { importMessages?: boolean; daysLimitImportMessages?: number; autoCreate?: boolean; + organization?: string; + logo?: string; } diff --git a/src/api/integrations/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatwoot/services/chatwoot.service.ts index a917b8d4..21647ce8 100644 --- a/src/api/integrations/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatwoot/services/chatwoot.service.ts @@ -115,6 +115,8 @@ export class ChatwootService { `${urlServer}/chatwoot/webhook/${encodeURIComponent(instance.instanceName)}`, true, data.number, + data.organization, + data.logo, ); } return data; @@ -161,6 +163,8 @@ export class ChatwootService { webhookUrl: string, qrcode: boolean, number: string, + organization?: string, + logo?: string, ) { const client = await this.clientCw(instance); @@ -218,8 +222,8 @@ export class ChatwootService { '123456', inboxId, false, - 'EvolutionAPI', - 'https://evolution-api.com/files/evolution-api-favicon.png', + organization ? organization : 'EvolutionAPI', + logo ? logo : 'https://evolution-api.com/files/evolution-api-favicon.png', )) as any); if (!contact) { diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 60de6d00..7e4d8264 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -314,6 +314,8 @@ export class ChannelStartupService { importContacts: data.importContacts, importMessages: data.importMessages, daysLimitImportMessages: data.daysLimitImportMessages, + organization: data.organization, + logo: data.logo, }, });