From 3bf975d90f145d80b77607a8793fa4383c54c984 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Sun, 21 Apr 2024 16:33:20 -0300 Subject: [PATCH 1/4] Set chatwoot custom inbox name --- src/api/controllers/instance.controller.ts | 5 +++-- src/api/dto/instance.dto.ts | 1 + .../integrations/chatwoot/controllers/chatwoot.controller.ts | 5 ++++- src/api/integrations/chatwoot/services/chatwoot.service.ts | 5 +++-- src/api/integrations/chatwoot/validate/chatwoot.schema.ts | 1 + 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/api/controllers/instance.controller.ts b/src/api/controllers/instance.controller.ts index abe1dd3b..8adf2d57 100644 --- a/src/api/controllers/instance.controller.ts +++ b/src/api/controllers/instance.controller.ts @@ -65,6 +65,7 @@ export class InstanceController { chatwoot_reopen_conversation, chatwoot_conversation_pending, chatwoot_import_contacts, + chatwoot_name_inbox, chatwoot_import_messages, chatwoot_days_limit_import_messages, reject_call, @@ -513,7 +514,7 @@ export class InstanceController { token: chatwoot_token, url: chatwoot_url, sign_msg: chatwoot_sign_msg || false, - name_inbox: instance.instanceName.split('-cwId-')[0], + name_inbox: chatwoot_name_inbox ?? instance.instanceName.split('-cwId-')[0], number, reopen_conversation: chatwoot_reopen_conversation || false, conversation_pending: chatwoot_conversation_pending || false, @@ -577,7 +578,7 @@ export class InstanceController { import_messages: chatwoot_import_messages ?? true, days_limit_import_messages: chatwoot_days_limit_import_messages || 60, number, - name_inbox: instance.instanceName, + name_inbox: chatwoot_name_inbox ?? instance.instanceName, webhook_url: `${urlServer}/chatwoot/webhook/${encodeURIComponent(instance.instanceName)}`, }, }; diff --git a/src/api/dto/instance.dto.ts b/src/api/dto/instance.dto.ts index b703b9da..59c00a7d 100644 --- a/src/api/dto/instance.dto.ts +++ b/src/api/dto/instance.dto.ts @@ -30,6 +30,7 @@ export class InstanceDto { chatwoot_import_contacts?: boolean; chatwoot_import_messages?: boolean; chatwoot_days_limit_import_messages?: number; + chatwoot_name_inbox?: string; websocket_enabled?: boolean; websocket_events?: string[]; rabbitmq_enabled?: boolean; diff --git a/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts b/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts index 2621465e..a70e70ff 100644 --- a/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts +++ b/src/api/integrations/chatwoot/controllers/chatwoot.controller.ts @@ -55,9 +55,12 @@ export class ChatwootController { data.import_messages = false; data.days_limit_import_messages = 0; data.auto_create = false; + data.name_inbox = ''; } - data.name_inbox = instance.instanceName; + if (!data.name_inbox || data.name_inbox === '') { + data.name_inbox = instance.instanceName; + } const result = await this.chatwootService.create(instance, data); diff --git a/src/api/integrations/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatwoot/services/chatwoot.service.ts index e484ec66..116c15a8 100644 --- a/src/api/integrations/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatwoot/services/chatwoot.service.ts @@ -91,6 +91,7 @@ export class ChatwootService { with_credentials: true, credentials: 'include', token: this.provider.token, + name_inbox: this.provider.name_inbox, }; } @@ -110,7 +111,7 @@ export class ChatwootService { await this.initInstanceChatwoot( instance, - instance.instanceName.split('-cwId-')[0], + data.name_inbox ?? instance.instanceName.split('-cwId-')[0], `${urlServer}/chatwoot/webhook/${encodeURIComponent(instance.instanceName)}`, true, data.number, @@ -710,7 +711,7 @@ export class ChatwootService { } this.logger.verbose('find inbox by name'); - const findByName = inbox.payload.find((inbox) => inbox.name === instance.instanceName.split('-cwId-')[0]); + const findByName = inbox.payload.find((inbox) => inbox.name === this.getClientCwConfig().name_inbox); if (!findByName) { this.logger.warn('inbox not found'); diff --git a/src/api/integrations/chatwoot/validate/chatwoot.schema.ts b/src/api/integrations/chatwoot/validate/chatwoot.schema.ts index d2784daf..33652ec3 100644 --- a/src/api/integrations/chatwoot/validate/chatwoot.schema.ts +++ b/src/api/integrations/chatwoot/validate/chatwoot.schema.ts @@ -30,6 +30,7 @@ export const chatwootSchema: JSONSchema7 = { url: { type: 'string' }, sign_msg: { type: 'boolean', enum: [true, false] }, sign_delimiter: { type: ['string', 'null'] }, + name_inbox: { type: ['string', 'null'] }, reopen_conversation: { type: 'boolean', enum: [true, false] }, conversation_pending: { type: 'boolean', enum: [true, false] }, auto_create: { type: 'boolean', enum: [true, false] }, From 1f128747bbc8af0987fbb3b5f45a00982a4237ca Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Sun, 21 Apr 2024 16:37:27 -0300 Subject: [PATCH 2/4] Fix inbox name on cw config --- src/api/integrations/chatwoot/services/chatwoot.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatwoot/services/chatwoot.service.ts index 116c15a8..e28821bb 100644 --- a/src/api/integrations/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatwoot/services/chatwoot.service.ts @@ -85,7 +85,7 @@ export class ChatwootService { return client; } - public getClientCwConfig(): ChatwootAPIConfig { + public getClientCwConfig(): ChatwootAPIConfig & { name_inbox: string } { return { basePath: this.provider.url, with_credentials: true, From f44ab0f67872073d14b3b3db19907ee5a4c13d29 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Sun, 21 Apr 2024 16:46:49 -0300 Subject: [PATCH 3/4] Update current inbox if exists --- .../chatwoot/services/chatwoot.service.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/api/integrations/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatwoot/services/chatwoot.service.ts index e28821bb..b57fee49 100644 --- a/src/api/integrations/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatwoot/services/chatwoot.service.ts @@ -216,6 +216,19 @@ export class ChatwootService { } inboxId = inbox.id; + const data = { + type: 'api', + webhook_url: webhookUrl, + }; + await client.inboxes.update({ + id: inboxId, + accountId: this.provider.account_id, + data: { + enable_auto_assignment: false, + name: inboxName, + channel: data as any, + }, + }); } this.logger.verbose('find contact in chatwoot and create if not exists'); From 26ff0b634fc7df6141eb79c83b73be07227dc7ef Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Sun, 21 Apr 2024 16:49:15 -0300 Subject: [PATCH 4/4] Revert "Update current inbox if exists" This reverts commit f44ab0f67872073d14b3b3db19907ee5a4c13d29. --- .../chatwoot/services/chatwoot.service.ts | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/api/integrations/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatwoot/services/chatwoot.service.ts index b57fee49..e28821bb 100644 --- a/src/api/integrations/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatwoot/services/chatwoot.service.ts @@ -216,19 +216,6 @@ export class ChatwootService { } inboxId = inbox.id; - const data = { - type: 'api', - webhook_url: webhookUrl, - }; - await client.inboxes.update({ - id: inboxId, - accountId: this.provider.account_id, - data: { - enable_auto_assignment: false, - name: inboxName, - channel: data as any, - }, - }); } this.logger.verbose('find contact in chatwoot and create if not exists');