Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf(chatwoot): create cache for the most used/expensive functions in chatwoot #342

Merged
merged 1 commit into from
Jan 4, 2024

Conversation

jaison-x
Copy link
Contributor

@jaison-x jaison-x commented Jan 4, 2024

No description provided.

@jaison-x
Copy link
Contributor Author

jaison-x commented Jan 4, 2024

É preciso testar bem estas alterações para ter certeza que todos os pontos de invalidações de cache foram atendidos. O ideal seria limpar o cache em eventos do chatwoot como deleção de contact/conversation mas não encontrei uma forma de receber estes eventos do chatwoot.

Se alguém souber uma forma de conseguir isso seria uma grande ajuda. Até abri uma issue lá sobre isso: chatwoot/chatwoot#8633

@DavidsonGomes DavidsonGomes merged commit afb5361 into EvolutionAPI:develop Jan 4, 2024
@edisonmartinsmkt
Copy link
Contributor

Eu apliquei as alterações dessa PR hoje e testando aqui, notei um comportamento inesperado onde mesmo com a opção de reopen_conversation setada como false, não está mais abrindo uma nova conversa.

Mesmo que eu mude o status da conversa para Resolvido, se eu enviar uma nova mensagem, ele reabre a mesma conversa ao invés de criar outra.

Conferi se havia mudado o status do reopen_conversation no findChatwoot e até forcei um novo setChatwoot pra regravar o reopen_conversation, mas ainda assim as conversas continuam sendo reabertas.

Depois que ajustar isso, se quiser, reservarei um tempo para testar. Até lá, vou voltar os arquivos anteriores, pois para o meu cenário, o reopen_conversation deve ficar como false mesmo.

@jaison-x
Copy link
Contributor Author

jaison-x commented Jan 8, 2024

Eu apliquei as alterações dessa PR hoje e testando aqui, notei um comportamento inesperado onde mesmo com a opção de reopen_conversation setada como false, não está mais abrindo uma nova conversa.

Mesmo que eu mude o status da conversa para Resolvido, se eu enviar uma nova mensagem, ele reabre a mesma conversa ao invés de criar outra.

Conferi se havia mudado o status do reopen_conversation no findChatwoot e até forcei um novo setChatwoot pra regravar o reopen_conversation, mas ainda assim as conversas continuam sendo reabertas.

Depois que ajustar isso, se quiser, reservarei um tempo para testar. Até lá, vou voltar os arquivos anteriores, pois para o meu cenário, o reopen_conversation deve ficar como false mesmo.

Olá Edison, tudo bem? Consegui replicar o problema aqui. Realmente ele acontece. O parâmetro reopen_conversation não está sendo respeitado. Obrigado por avisar!

@DavidsonGomes, sugiro remover este pr da develop até podemos ajustar isso. Obrigado.

@jaison-x
Copy link
Contributor Author

jaison-x commented Jan 9, 2024

Eu apliquei as alterações dessa PR hoje e testando aqui, notei um comportamento inesperado onde mesmo com a opção de reopen_conversation setada como false, não está mais abrindo uma nova conversa.

Mesmo que eu mude o status da conversa para Resolvido, se eu enviar uma nova mensagem, ele reabre a mesma conversa ao invés de criar outra.

Conferi se havia mudado o status do reopen_conversation no findChatwoot e até forcei um novo setChatwoot pra regravar o reopen_conversation, mas ainda assim as conversas continuam sendo reabertas.

Depois que ajustar isso, se quiser, reservarei um tempo para testar. Até lá, vou voltar os arquivos anteriores, pois para o meu cenário, o reopen_conversation deve ficar como false mesmo.

@edisoncm-ti, acredito que consegui corrigir o problema nesta PR: #351. Por favor, se possível teste e nos envie um feedback. Abraço!

@luiztonucci
Copy link

Boa tarde, eu fiz um teste agora mesmo, parece que continua com o problema.

evolution
chatwoot_09012024

@jaison-x
Copy link
Contributor Author

jaison-x commented Jan 9, 2024

Boa tarde, eu fiz um teste agora mesmo, parece que continua com o problema.

evolution chatwoot_09012024

Olá @luiztonucci!

Eu refiz vários testes aqui agora e parece estar obedecendo normal o parâmetro reopen_conversation. Talvez seja alguma diferença para o seu ambiente.

Qual versão do chatwoot você está usando no teste? Você fez checkout da minha PR de correção ou da versão develop? Precisa usar diretamente esta PR #351, pois ela ainda não foi enviada para develop.

@luiztonucci
Copy link

Bom dia @jaison-x, estou no CW 3.3.1, ambiente docker swarm. Vou testar novamente aqui e te aviso. Deixa eu te perguntar, tenho meu cenário assim:

  • cliente chama, cria conversa.
  • nós chamamos cliente, cria conversa.

Pergunta, mas vou testar melhor isso, não é pra misturar as conversa né, cada uma na sua, quando encerra e tiver o reopen_conversation como false, não é pra reabrir correto ?

@jaison-x
Copy link
Contributor Author

Bom dia @jaison-x, estou no CW 3.3.1, ambiente docker swarm. Vou testar novamente aqui e te aviso. Deixa eu te perguntar, tenho meu cenário assim:

  • cliente chama, cria conversa.
  • nós chamamos cliente, cria conversa.

Pergunta, mas vou testar melhor isso, não é pra misturar as conversa né, cada uma na sua, quando encerra e tiver o reopen_conversation como false, não é pra reabrir correto ?

Você está usando a versão develop da evo? Porque na versão develop o ideal é usar o chatwoot 3.4.0, pois pode duplicar mensagem caso não estiver esta versão.

Sobre a sua dúvida, com o reopen_conversation definido como false, quando você encerra a conversa no chatwoot e caso o seu cliente envia novamente uma mensagem para você é criada uma nova conversa do zero no chatwoot.

Com o reopen_conversation setado como true sempre é utilizada a mesma conversa, nunca é criada uma nova conversa no chatwoot.

@edisonmartinsmkt
Copy link
Contributor

Bom dia @jaison-x, estou no CW 3.3.1, ambiente docker swarm. Vou testar novamente aqui e te aviso. Deixa eu te perguntar, tenho meu cenário assim:

  • cliente chama, cria conversa.
  • nós chamamos cliente, cria conversa.

Pergunta, mas vou testar melhor isso, não é pra misturar as conversa né, cada uma na sua, quando encerra e tiver o reopen_conversation como false, não é pra reabrir correto ?

Fala @luiztonucci, tudo beleza?

Como já deve ter visto acima, eu também não uso a opção de reabrir a conversa, mas nesse exemplo que citou aqui, considerando as quase mil conversas que criei nessa minha primeira semana de uso do ChatWoot, posso te dizer o seguinte:

  • Independentemente de quem chama inicialmente (operador/cliente), uma nova conversa será criada
  • Enquanto existir uma conversa aberta, qualquer mensagem enviada, também independentemente da origem, se manterá sempre na mesma conversa
  • A partir do momento em que uma conversa é Encerrada, qualquer mensagem enviada pelo cliente abrirá uma nova conversa
  • Já para o operador, se ele voltar na conversa fechada e enviar uma mensagem por lá, ela será normalmente enviada para o cliente, mesmo com a conversa Encerrada.
  • Como isso é transparente para o cliente, ele receberá normalmente e ao responder, a mensagem chegará na conversa aberta, se já existir, ou em uma nova, se for a primeira após o encerramento

Espero ter ajudado.

Abraço.

@edisonmartinsmkt
Copy link
Contributor

Boa tarde, eu fiz um teste agora mesmo, parece que continua com o problema.
evolution chatwoot_09012024

Olá @luiztonucci!

Eu refiz vários testes aqui agora e parece estar obedecendo normal o parâmetro reopen_conversation. Talvez seja alguma diferença para o seu ambiente.

Qual versão do chatwoot você está usando no teste? Você fez checkout da minha PR de correção ou da versão develop? Precisa usar diretamente esta PR #351, pois ela ainda não foi enviada para develop.

E aí, @jaison-x! Tranquilo?

Eu peço desculpas pela demora na resposta, mas essa semana foi punk. Só não foi pior, porque a Evolution + ChatWoot + N8N fizeram o trabalho de pelo menos 4 atendentes e só tenho a agradecer por isso.

Vou tirar um tempo no final de semana pra testar a alteração do cache, ok?

O que resultar dos testes eu reporto aqui.

Abraços e bom final de semana!

@luiztonucci
Copy link

luiztonucci commented Jan 15, 2024

Bom dia @jaison-x, estou no CW 3.3.1, ambiente docker swarm. Vou testar novamente aqui e te aviso. Deixa eu te perguntar, tenho meu cenário assim:

  • cliente chama, cria conversa.
  • nós chamamos cliente, cria conversa.

Pergunta, mas vou testar melhor isso, não é pra misturar as conversa né, cada uma na sua, quando encerra e tiver o reopen_conversation como false, não é pra reabrir correto ?

Fala @luiztonucci, tudo beleza?

Como já deve ter visto acima, eu também não uso a opção de reabrir a conversa, mas nesse exemplo que citou aqui, considerando as quase mil conversas que criei nessa minha primeira semana de uso do ChatWoot, posso te dizer o seguinte:

  • Independentemente de quem chama inicialmente (operador/cliente), uma nova conversa será criada
  • Enquanto existir uma conversa aberta, qualquer mensagem enviada, também independentemente da origem, se manterá sempre na mesma conversa
  • A partir do momento em que uma conversa é Encerrada, qualquer mensagem enviada pelo cliente abrirá uma nova conversa
  • Já para o operador, se ele voltar na conversa fechada e enviar uma mensagem por lá, ela será normalmente enviada para o cliente, mesmo com a conversa Encerrada.
  • Como isso é transparente para o cliente, ele receberá normalmente e ao responder, a mensagem chegará na conversa aberta, se já existir, ou em uma nova, se for a primeira após o encerramento

Espero ter ajudado.

Abraço.

Oi @edisoncm-ti tudo bem?, obrigado pelo ótima explicação.
Mas deixa eu expor a situação na empresa onde sou TI, para deixar registrado aqui e caso o @DavidsonGomes tenha alguma ideia para melhorar isso.
Tudo o que você explicou realmente é fato, mas eu sou TI em um escritório contábil ( cenário de receber e enviar mensagens, vários setores, usando 1 único número de whatsApp ), onde ocorreu de um cliente estar falando com 2 funcionários ao mesmo tempo, um do setor fiscal e outro do Rh. Abriu-se 2 conversas, porque eu tinha configurado reopen_conversation como FALSE, a ideia era manter sigilo em cada conversa.
1º conversa - aberta pelo cliente;
2º conversa -aberta pelo funcionário do Rh.
Aí nosso cliente ficou perdido, não sabia o que estava acontecendo, 2 assuntos ao mesmo tempo, e para piorar, as resposta do cliente entrava na primeira conversa aberta, ou seja, a segunda conversa ficou aberta e não chagava mensagem. Até que percebi que usando único número com reopen_conversation = false não dava certo. Tive que separar um número para cada setor, e deixar reopen_conversation = true para ficar melhor visível.
Não consigo enxergar outra solução de momento, não uso N8N e abri mão do Typebot por enquanto.
Minha ideia era ter 1 único número na empresa, com menu de setor usando Typebot , mas tive que usar um número para cada setor para resolver esse B.O.

Gostaria de saber se tem como API entender uma situação dessas, espero ter explicado bem o cenário.
Do resto a API tá show, Obrigado a todos vocês.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants