Antes do meu primeiro Tópico, agradeço à comunidade por ajudar tanto, já tive muitas dúvidas que conseguir resolver a maioria por aqui mesmo. OBRIGADO!
Então…
Estou usando o contact.identity para salvar o nº do whatsapp do cliente.
E estou solicitando que o cliente envie o nº de telefone de cadastro no crm seja o mesmo que esta falando no bot.
Se for o mesmo nº fazemos uma requisição para repassar a informação.
Um dos problema é que o contact.identity salva o nº com o DDI(55) e quando solicitamos pedimos só o DD+Nº(“amigavel” pro cliente). E nem acho que isso seja o grande problema
o Script é simples de comparação! Porem não consigo validar a igualdade.
Segue o script: function run(fone,telefoneUsuario){
fone = JSON.parse(fone);
telefoneUsuario = JSON.stringify(telefoneUsuario); // recebo do contact.identity
let tel = “55”;
let fin = tel.concat(fone)
if (fin == telefoneUsuario)return “fone ok”
else
return “fone diferente”
}
sempre tenho o retorno “fone diferente”, testando pelo whatsapp com o mesmo nº.
alguém já passou por algo parecido ou pode ajudar?
Rapaz, eu não entendi o porque de você estar passando um Stringfy no contact.identity, mas isso é só um detalhe, não sei também se está afetando o comportamento, porém eu nunca usei dessa forma.
O que eu pensei aqui:
O usuário pode digitar traços, pontos, parenteses, espaços… portanto é importante tratar isso.
O contact.identity nem sempre retorna o nono dígito, pelo menos é o meu caso (acho que é porque eu já tinha o whatsapp antes de acrescentar o nono dígito).
Diante dos dois pontos anteriores, comparar o telefone completo pode se tornar um problema.
Mas vamos para o que interessa, certo?
Utilize as variáveis de entrada nessa ordem: input.content & contact.identity
Utilize o seguinte script:
function run (tel, identity) {
tel = tel.replace(/\D/g, ''); // remover qualquer caracter especial que o cliente pode ter digitado
tel = tel.slice(4,fone.length); // elimina os 4 primeiros dígitos informado pelo usuário
identity = identity.split("@")[0]; // com isso, a var passa a ser apenas os números antes do @
if (identity.includes(tel)) { return true } // se o valor de 'tel' estiver "dentro" do valor do contact.identity, retorna verdadeiro
else { return false }
}
Note que o último exemplo da tabela passa como true, esse é um dos maiores problemas que você poderá ter, apesar de que a chance de isso acontecer deve ser pequena.
Mas esse é só um modelo, quem sabe já te ajuda ou outra pessoa contribui com outras formas.
Obriado por compartilhar esse seu problema conosco. Espero que eu tenha ajudado de alguma forma.
Fiquei feliz demais com esse feedback. Já deu para perceber que o nosso Fórum e a Blip Community é um lugar incrível, né? Então seja super bem-vindo e volte não só sempre que precisar solucionar um problema, mas também quando sentir que pode ajudar, respondendo perguntas ou compartilhando experiências.
Espero que o @GabrielPetrone tenha conseguido te ajudar, viu? Qualquer coisa, estamos por aqui.
O includes era o que precisava! para comparar os números! Devo solicitar a entrada do usuário de 10 - 11 dígitos para que não coloque só o inicio do telefone.
Grato!