[Resolvido] Identificar Validação sem travar a conversa

Olá pessoal, percebi que quando eu coloco uma validação para entrada de usuário e essa validação não é feita corretamente, o usuário fica preso nesse bloco até a validação ser correta.

Como eu consigo validar essa entrada de forma que envie para um bloco caso a entrada não seja validada?

Por exemplo:

Se eu pergunta o telefone do usuário e colocar um regex validador de telefone. O usuário vai ficar preso nesse bloco até colocar um telefone válido, mas existe a possibilidade do usuário não querer passar o telefone.

Abraços,

Você pode gravar a resposta do usuário em uma variável e aí criar uma regra de saída para um bloco, se a variável passar em uma regra de regex que você criar ou para outro, se não passar.
[]s
Roberto

Você pode também configurar uma exceção padrão para esse bloco, então, caso não consiga tratar, ele vai pra exceção, que pode ser “tente novamente” ou a sequência do seu fluxo.

A questão dessa possibilidade é que o regex tem uma mensagem de erro que quando não é validada a mensagem de texto fica persistindo.

@Roberto_Keller_Nadde o que eu coloca no valor da condição? Já configurei a variavel

52

Eu nunca fiz isso, mas acho que aí você tem que colocar a regex que quer validar. No meu caso eu uso uma bem simples, que verifica se são só números de celular: ^[1-9]{2}9\d{8}$

Eu tentei colocar a Regex e não funcionou. @rafaelpa poderia me ajudar?

Abraços

1 Curtida

Estranho… Imagino que deveria funcionar. Você usou a minha regex e digitou um número de 11 dígitos (2 de DDD) + 9 + 8 digítos?
Abraços.

Roberto, coloquei a Regex no lugar do valor, não coloquei para validar o telefone não.

Pode mandar por favor um print do bloco de condição de saída e explicar o que acontece quando você roda o bot?

Uma vez que você tem um regex, o usuário só vai sair desse bloco quando ele for satisfeito. Não chega nem a entrar nas condições de saída. Acredito que não tenha muito o que fazer nesse caso com regex.

Particularmente tenho um bloco que solicita o número do usuário, mas eu não valido, justamente para não deixar ele preso no bloco.

Minha ideia seria não validar regex no preenchimento do campo. Guardar o valor digitado em uma variável e depois, dependendo do valor da variável, mandar para outro bloco. Se a variável bater com o regex manda para um bloco, se não bater, vai para outro.

Poder ser. A única forma de não travar o usuário no bloco seria fazer a validação do número por script.

A ideia de validar a entrada do usuário é justamente garantir que aquela informação seja obtida de forma correta. Só que a questão de telefone é complicado mesmo… pois tem gente que digita sem o DDD, outros sem o nono dígito… e assim vai.

A questão é que o Regex que estou usando para telefone é maior que o número de caracteres permitido:

testei com seu Regex e um outro que eu tinha que não válidava o DDD e funcionou perfeitamente, mas o que eu preciso usar não é aceito pelo tamanho:

^(11|12|13|14|15|16|17|18|19|21|22|24|27|28|31|32|33|34|35|37|38|41|42|43|44|45|46|47|48|49|51|53|54|55|61|62|63|64|65|66|67|68|69|71|73|74|75|77|79|81|82|83|84|85|86|87|88|89|91|92|93|94|95|96|97|98|99)\s(9([0-9]{8})|([1-8]{1})([0-9]{7}))$

11

Como dá para ver nessa imagem com um Regex menor funciona certinho.

10

Vou precisar achar um regex menor que valide o DDD, se é telefone fixo ou móvel.

Ah, se você quer testar todas as configurações de DDD, vai ficar enorme mesmo. No meu caso só vejo se são dois dígitos diferentes de 0. Melhor nesse caso então é fazer a validação por javascript, não? Roda um javascript que identifica tudo, devolve variáveis com o DDD, celular, sucesso/insucesso e aí decide baseado nessas variáveis.

Vou pedir para meu dev me ajudar nessa questão. Não manjo de javascript não, mas obrigado pela ajuda.

Ok. Por enquanto usa a regex que te passei. Vai ajudar em 90% dos casos. Só que vai aceitar DDD como 22, 25, 26, etc. que, a sua regex não aceitria.

Sim, usei ela. Valeuu.

2 Curtidas