Skip to content

Commit fa87c7b

Browse files
committed
feat(chatwoot): add coordinationSettings to Chatwoot API (set/find)
- Add coordinationSettings to ChatwootDto for per-instance config - Add coordinationSettings to chatwoot.schema.ts validation (optional object) - Persist coordinationSettings in setChatwoot (create + update) in channel.service.ts - Return coordinationSettings in findChatwoot response - Now configurable via POST /chatwoot/set/{instanceName} without SQL
1 parent af5e99d commit fa87c7b

4 files changed

Lines changed: 19 additions & 1 deletion

File tree

docs/cosas-pendietnes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
- [x] Wrap `/chatbot/manage` con `manageEnabled` config
2626
- [x] GET `/chatbot/manage/status` devuelve config actual de coordinación
2727
- [x] Migración DB: `coordinationSettings JSONB` (PostgreSQL) / `JSON` (MySQL)
28-
- [ ] Endpoint REST para actualizar `coordinationSettings` per-instance (actualmente solo vía SQL)
28+
- [x] Endpoint REST para configurar `coordinationSettings` per-instance (via POST `/chatwoot/set/{instanceName}`)
2929

3030
### Contribución
3131
- [ ] Preparar PR para contribución pública (separar commits, limpiar logs de debug, escribir descripción del PR)

src/api/integrations/chatbot/chatwoot/dto/chatwoot.dto.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ export class ChatwootDto {
1919
organization?: string;
2020
logo?: string;
2121
ignoreJids?: string[];
22+
coordinationSettings?: {
23+
checkAgent?: boolean;
24+
autoPause?: boolean;
25+
autoResolve?: boolean;
26+
manageEnabled?: boolean;
27+
};
2228
}
2329

2430
export function ChatwootInstanceMixin<TBase extends Constructor>(Base: TBase) {

src/api/integrations/chatbot/chatwoot/validate/chatwoot.schema.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ export const chatwootSchema: JSONSchema7 = {
3939
importMessages: { type: 'boolean', enum: [true, false] },
4040
daysLimitImportMessages: { type: 'number' },
4141
ignoreJids: { type: 'array', items: { type: 'string' } },
42+
coordinationSettings: {
43+
type: 'object',
44+
properties: {
45+
checkAgent: { type: 'boolean' },
46+
autoPause: { type: 'boolean' },
47+
autoResolve: { type: 'boolean' },
48+
manageEnabled: { type: 'boolean' },
49+
},
50+
},
4251
},
4352
required: ['enabled', 'accountId', 'token', 'url', 'signMsg', 'reopenConversation', 'conversationPending'],
4453
...isNotEmpty('enabled', 'accountId', 'token', 'url', 'signMsg', 'reopenConversation', 'conversationPending'),

src/api/services/channel.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ export class ChannelStartupService {
283283
organization: data.organization,
284284
logo: data.logo,
285285
ignoreJids: data.ignoreJids,
286+
coordinationSettings: data.coordinationSettings ?? undefined,
286287
},
287288
});
288289

@@ -310,6 +311,7 @@ export class ChannelStartupService {
310311
organization: data.organization,
311312
logo: data.logo,
312313
ignoreJids: data.ignoreJids,
314+
coordinationSettings: data.coordinationSettings ?? undefined,
313315
instanceId: this.instanceId,
314316
},
315317
});
@@ -353,6 +355,7 @@ export class ChannelStartupService {
353355
organization: data.organization,
354356
logo: data.logo,
355357
ignoreJids: ignoreJidsArray,
358+
coordinationSettings: data.coordinationSettings as any ?? null,
356359
};
357360
}
358361

0 commit comments

Comments
 (0)