-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Fix/chatwoot validate 9 digit #393
Fix/chatwoot validate 9 digit #393
Conversation
@@ -447,27 +447,29 @@ export class ChatwootService { | |||
} | |||
|
|||
private getSearchableFields() { | |||
return ['identifier', 'phone_number', 'name', 'email']; | |||
return ['phone_number']; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Creio que não pode somente buscar pelo phone_number, olhei na minha base em produção e temos vários cenários onde os contatos que vem pela EvolutionAPI tem somente o identifier DDD + Numero + @s.whatsapp.net
E não tem o campo phone_number
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eu ainda não vi nenhum caso em que não tenha vindo o numero inteiro do campo phone_number, talvez o @DavidsonGomes consiga nos confirmar.
@DavidsonGomes você acha que tem necessidade de inserirmos para buscar o numero de telefone nos campos identifier e nome? Ai nesse caso teríamos que usar o contains mesmo.
Coloquei uma observação na PR, creio que precisa do identifier. Fiz o teste no cenário que você falou, onde dentro do values ter 2 numeros. Talvez não tenha achado, pois não removi o + e de fato o campo "identifier" não salva com o + Se colocar no filter_operator a opção "equals_to" não funciona, teria que ser "contains" |
Você tem razão, caso use o contains, funciona acrescentar mais de um numero dentro do array, usando equals_to ele apresenta o comportamento que eu descrevi. |
Você também tem razão sobre o campo identifier, pois ele é usado para grupos. vou acrescentar ele e o name conforme sua sugestão. |
Na verdade nem pra grupos não fez diferença, pelos testes continuou funcionando os grupos normalmente sem o campo identifier pode ter algumas situações que eu não encontrei. Vou aguardar mais testes. |
Os grupos não entram na condição que mexemos, pois tem um if antes desse caso. Na minha base de dados do chatwoot, todos os contatos que entraram em contato comigo, não tem o campo "phone_number", somente o "identifier" |
Eita, doidera em, na minha base mais de 10000 contatos todos tem telefone e nem sempre identifier hehehe, de toda forma to vendo que tem um problema, caso o a pessoa entrar em contato primeiro e não tiver o 9 depois alguém cadastrar o numero com o 9 digito ele vai continuar duplicando da mesma forma. Teríamos que dar um jeito de sempre preferir o contato com telefone com mais dígitos. |
Mas aqui creio que o problema seja do chatwoot.. não necessariamente da evolution api.. |
Não só utilizo a Evolution, quando a pessoa entra em contato comigo e não tenho ela na agenda, ele sempre cadastra o phone_number e o identifier |
É então sem duvidas vamos ter que incluir o identifier, tenho algumas instalações e nenhuma tenho um caso parecido com o seu. |
Fix o pull pra adicionar o identifier #397 |
Changed the search fields to only consider the phone_number, there is no need to search in all fields.
Changed payload format for the filter, each phone number must have its own payload, if you place it within the values array, chatwoot only searches for the first number disregarding the second, occasionally causing duplication of the contact.
Changed the filter_operator to equal_to, this will optimize the query as it will no longer use LIKE in the database query.
In the values array you must remove the + from the number as it is not stored in the DB.
PT-BR
Alterado os campos de procura para considerar somente o phone_number não há necessidade de procurar em todos os campos.
Alterado formato do payload para o filtro, cada numero de telefone deve ter seu proprio payload, caso coloque dentro do array values o chatwoot só busca o primeiro numero desconsiderando o segundo, causando duplicação do contato ocasionalmente.
Alterado o filter_operator para equal_to, isso irá otimizar a consulta já que deixará de usar LIKE na query do banco.
No array values deve-se retirar o + do numero já que ele não é armazenado no DB.
Créditos: @yvescleuder
Fix #382