You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: notifica falhas silenciosas de QR no Chatwoot e reconcilia estado zumbi
Dois problemas distintos, mas relacionados:
1) QR solicitado pelo Chatwoot as vezes simplesmente nao aparecia na
conversa - mesmo com a instancia genuinamente desconectada, nao so
em cenario de estado "zumbi". Causa: falhas engolidas em silencio.
receiveWebhook (comando 'init') e o handler de qrcode.updated
estavam em try/catch que so logava no servidor, sem nenhum feedback
ao operador no Chatwoot. Havia tambem um bug de optional chaining
(body?.qrcode.base64) que podia lancar TypeError silencioso se
body.qrcode viesse undefined.
2) Instancia aparecia "conectada" na Evolution mesmo com o WhatsApp
real caido. Causa: o status de conexao e 100% orientado a evento
(connection.update); se esse evento nunca dispara (ex. socket
morrendo sem RST/FIN, comum sob CPU steal alto), o valor cacheado
em memoria/banco fica preso em 'open' para sempre. Nao havia
nenhuma sonda ativa (confirmado: zero ocorrencias de setInterval em
todo o src/).
Mudancas:
- receiveWebhook: erro ao conectar agora notifica a conversa
(cw.inbox.qrError); catch geral tambem notifica erro generico
(cw.inbox.requestError) alem de logar.
- Corrigido o optional chaining (body?.qrcode?.base64) com guarda
explicita e notificacao de erro.
- Handler de qrcode.updated: catch notifica cw.inbox.qrError, mas so
quando o QR ainda nao tinha sido postado com sucesso (flag
qrPosted) - evita notificar erro depois que a imagem do QR ja
chegou na conversa.
- monitor.service.ts: health check periodico (30s) que confirma via
client.ws.isOpen se instancias marcadas 'open' realmente tem socket
ativo; se nao, reconcilia o estado para 'close' (banco + webhook
CONNECTION_UPDATE), reaproveitando os mesmos campos ja usados no
fechamento real da conexao.
- instance.controller.ts: connectionState reconcilia sob demanda antes
de responder, alem do health check periodico.
- Novas chaves de traducao cw.inbox.qrError/cw.inbox.requestError em
pt-BR/en/es.
"scanqr": "Scan this QR code within the next 40 seconds.",
4
4
"qrlimitreached": "QRCode generation limit reached, to generate a new QRCode, send the 'init' message again.",
5
+
"cw.inbox.qrError": "🚨 Failed to generate the QR Code. Please try again by sending 'init' in this conversation.",
6
+
"cw.inbox.requestError": "⚠️ An error occurred while processing your request. If you were trying to connect via QR Code, please try again by sending 'init'.",
Copy file name to clipboardExpand all lines: src/utils/translations/es.json
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
"qrgeneratedsuccesfully": "Código QR generado exitosamente!",
3
3
"scanqr": "Escanea este código QR en los próximos 40 segundos.",
4
4
"qrlimitreached": "🚨 Se alcanzó el límite de generación de QRCode. Para generar un nuevo QRCode, envíe el mensaje 'init' nuevamente.",
5
+
"cw.inbox.qrError": "🚨 No se pudo generar el código QR. Por favor, intente nuevamente enviando 'init' en esta conversación.",
6
+
"cw.inbox.requestError": "⚠️ Ocurrió un error al procesar su solicitud. Si estaba intentando conectar mediante código QR, intente nuevamente enviando 'init'.",
Copy file name to clipboardExpand all lines: src/utils/translations/pt-BR.json
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
"qrgeneratedsuccesfully": "QRCode gerado com sucesso!",
3
3
"scanqr": "Escaneie o QRCode com o WhatsApp nos próximos 40 segundos.",
4
4
"qrlimitreached": "Limite de geração de QRCode atingido! Para gerar um novo QRCode, envie o texto 'init' nesta conversa.",
5
+
"cw.inbox.qrError": "🚨 Falha ao gerar o QR Code. Por favor, tente novamente enviando 'init' nesta conversa.",
6
+
"cw.inbox.requestError": "⚠️ Ocorreu um erro ao processar sua solicitação. Se você estava tentando conectar via QR Code, tente novamente enviando 'init'.",
5
7
"cw.inbox.connected": "🚀 Conectado com sucesso!",
6
8
"cw.inbox.disconnect": "🚨 Instância *{{inboxName}}* desconectada do WhatsApp.",
7
9
"cw.inbox.alreadyConnected": "🚨 Instância *{{inboxName}}* já está conectada.",
0 commit comments