Tive um problema com um fluxo de resposta automática do Gmail que começou a enviar uma resposta para o mesmo endereço repetidamente, mesmo depois de desativar todos os nós (o que é bem estranho).
Como funciona:
Nosso email recebe cópia de emails que nosso parceiro envia para leads. O primeiro nó é acionado uma vez por hora para encontrar emails do endereço de email do nosso parceiro, com filtro pela linha de assunto E apenas emails não lidos. Depois, define variáveis para o endereço de email do destinatário e o ID da mensagem. O próximo nó marca a mensagem como lida usando o id. Em seguida, o próximo nó responde na conversa usando o thread id do gatilho. Depois adiciona o lead a uma tabela e cria um lead no Zoho.
Comçou uma semana atrás, notamos recentemente. A parte mais estranha é que ainda enviava emails mesmo depois de desativarmos os nós, então despublicamos o fluxo só para ter certeza.
Vi alguns tópicos semelhantes aqui, mas isso parece ser um pouco diferente, estamos filtrando mensagens não lidas, mas ainda assim ele puxa o mesmo email repetidamente.
@Arsen a parte “ainda enviando após desativação” são execuções enfileiradas que foram disparadas antes da desativação entrar em vigor — o n8n Cloud não cancela execuções em andamento, apenas para NOVOS triggers. então as 50 respostas são 50 execuções atrasadas que já estavam na fila.
a causa raiz das 50 em primeiro lugar é provavelmente ordenação — se a etapa mark-as-read falhar ou rodar lentamente, a próxima pesquisa horária vê a mesma mensagem não lida novamente e dispara outra resposta. a etapa mark-as-read realmente foi bem-sucedida em cada log de execução, ou falhou silenciosamente?
Bem vindo à comunidade n8n @Arsen
Por favor atualize sua instância para a v2.21.7 através do painel admin.
retorne ao fluxo, destavie os nós e ative novamente. publique
coloque para rodar, nos retorne o resultado se possível.
O problema real é uma race condition entre o trigger e o node mark-as-read. O Gmail retorna e-mails não lidos com base no status no momento da solicitação da API. Se o trigger buscar o e-mail e o node mark-as-read ainda não foi executado, a próxima execução pode buscar o mesmo e-mail novamente, especialmente se as execuções se sobrepuserem.
A melhor solução é adicionar um filtro de deduplicação baseado no Message-ID após o trigger. Armazene os Message-IDs processados em um Static Data Store ou em uma Google Sheet. Antes de processar, verifique se o ID já existe.
Oi @Arsen
Poderia verificar as configurações de resposta automática do Gmail?
Você vai em Gmail > Configurações > Geral > Resposta de Ausência (Resposta de ausência desativada/ativada).
Se a resposta automática está desativada. Então, certifique-se de seguir estes passos.
Teste em um escopo pequeno duplicando o workflow, apenas mude as configurações em vez de ler do email do parceiro para ler do seu email (outro que não seja o ccd)
Mantenha todas as suas configurações e use um email (novo email do qual você possa enviar ou receber para testar)
reduza o tempo de disparo para 1 minuto apenas para teste,
pare de responder a mensagem (já que isso é o gargalo)
Certifique-se de fazer um teste de fluxo passo a passo (antes de publicar)
Se funcionou bem, então publique o escopo pequeno
teste novamente em produção, e deve funcionar!
Exatamente, se o mesmo e-mail aparece repetidamente na planilha,
isso confirma o problema.
A solução é um nó de código logo após o acionador, que verifica se
a Message-ID já foi processada. Se você precisar de ajuda com a
configuracao exata, fico feliz em ajudar!
@Arsen nos logs de execução, 49 daquelas execuções mostram uma falha/erro no nó imediatamente após o nó de resposta? Se sim, o workflow estava completando a resposta com sucesso, mas depois batia em um erro mais adiante, mas como o n8n já tinha enviado o email, o estrago já estava feito.
que é que o gatilho do Gmail retorna quando faz a sondagem?
Esse é exatamente o problema; NÃO havia erros nas execuções, e cada execução foi concluída com sucesso. O email não estava sendo adicionado à planilha repetidamente. Foi adicionado uma vez, e pronto
Então, se não há erros e a tabela tem apenas uma entrada, o problema provavelmente é que a resposta do seu parceiro marca o e-mail como não lido novamente no Gmail. Com isso, o trigger puxa a cada hora de novo. Como solução, adicione um filtro logo depois do trigger que verifique se o e-mail chegou nos últimos 2 horas. Assim, e-mails antigos não conseguem entrar no loop novamente.
Na verdade, nosso parceiro não responde, somos nós quem está respondendo aos e-mails. Estamos respondendo apenas ao destinatário e deixamos nosso parceiro de fora mesmo assim. É por isso que é realmente estranho
Ok então a teoria do parceiro está descartada. Minha próxima suspeita é que o Gmail marca o e-mail como não lido novamente após sua resposta, porque o thread é atualizado.
Como teste, adicione um pequeno atraso de 1-2 segundos após o node “Mark as Read”, depois marque como lido novamente. Às vezes o Gmail precisa de um momento para a mudança surtir efeito.
ok olhando os screenshots do workflow — Gmail Trigger com filtro (não lido + remetente parceiro + assunto), Mark as Read usando $('Edit Fields').item.json.id, Reply usando $('Gmail Trigger').item.json.threadId. tudo isso faz sentido.
se 50 execuções horárias separadas continuam encontrando a MESMA mensagem não lida E mark-as-read continua reportando sucesso, algo está marcando o email como não lido entre as verificações — pode ser uma regra de filtro do Gmail, o app mobile, ou outro cliente IMAP acessando a caixa de entrada. você não vai corrigir essa causa raiz de dentro do n8n. o que você PODE corrigir é fazer o workflow recusar enviar a mesma resposta duas vezes independentemente do estado de leitura.
coloque este nó Code entre o Gmail Trigger e Edit Fields. ele persiste os IDs das mensagens processadas nos dados estáticos do workflow do n8n para que duplicatas sejam filtradas entre execuções:
$getWorkflowStaticData('global') persiste entre execuções no n8n Cloud para que a lista de IDs se mantenha. na primeira vez que uma mensagem chega ela é registrada + passada para a frente; na segunda vez o filtro a descarta e o workflow vai a zero itens. agora mesmo que o Gmail continue marcando como não lido, você envia a resposta exatamente uma vez por ID de mensagem único.