Skip to content

Commit 83efcd5

Browse files
ElioBonfimclaude
andauthored
fix(evolution): prevent Evolution instances from getting stuck in 'close' state (#2420)
Evolution is a webhook-based integration that should always be considered 'open' since it passively receives events. Three changes fix the issue: 1. monitor.service.ts: Always call connectToWhatsapp() for Evolution instances on server restart, regardless of stored connection status. 2. instance.controller.ts: Call connectToWhatsapp() for Evolution instances during creation to initialize Chatwoot settings. 3. evolution.channel.service.ts: Restore stateConnection to 'open' and persist it to DB when connectToWhatsapp() is called in init mode. Closes #2419 https://claude.ai/code/session_013wxk4cj5U2H5fr2cxCgWdH Co-authored-by: Claude <noreply@anthropic.com>
1 parent 75ae3eb commit 83efcd5

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

src/api/controllers/instance.controller.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ export class InstanceController {
156156
getQrcode = instance.qrCode;
157157
}
158158

159+
if (instanceData.integration === Integration.EVOLUTION) {
160+
await instance.connectToWhatsapp();
161+
}
162+
159163
const result = {
160164
instance: {
161165
instanceName: instance.instanceName,

src/api/integrations/channel/evolution/evolution.channel.service.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,15 @@ export class EvolutionStartupService extends ChannelStartupService {
115115

116116
public async connectToWhatsapp(data?: any): Promise<any> {
117117
if (!data) {
118+
this.stateConnection = { state: 'open' };
119+
120+
if (this.instanceId) {
121+
await this.prismaRepository.instance.update({
122+
where: { id: this.instanceId },
123+
data: { connectionStatus: 'open' },
124+
});
125+
}
126+
118127
this.loadChatwoot();
119128
return;
120129
}

src/api/services/monitor.service.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,11 @@ export class WAMonitoringService {
293293
ownerJid: instanceData.ownerJid,
294294
});
295295

296-
if (instanceData.connectionStatus === 'open' || instanceData.connectionStatus === 'connecting') {
296+
if (
297+
instanceData.connectionStatus === 'open' ||
298+
instanceData.connectionStatus === 'connecting' ||
299+
instanceData.integration === Integration.EVOLUTION
300+
) {
297301
this.logger.info(
298302
`Auto-connecting instance "${instanceData.instanceName}" (status: ${instanceData.connectionStatus})`,
299303
);

0 commit comments

Comments
 (0)