Skip to main content

Olá, pessoal. Estamos recebendo a mensagem de alerta do Builder sobre Loop sem interação do usuário - “Existe um loop no seu fluxo começando no bloco…”



Acontece que é previsto esse loop. Estamos parseando um JSON e usando o bloco para exibir propriedades de cada chave dele.



Não podemos parsear tudo no JS e retornar uma string com o conteúdo completo, pq precisamos entregar a linha digitável em mensagens individuais dentro do bloco, como no print abaixo:





Existe alguma forma de lidar com esse contexto?



O ID do bot é vicboleto

Acompanhando…


Bom dia Luis.


Normalmente quando o builder aponta esse loop tem mais haver com a sua condição de saída (para onde está mandando esse bloco), um exemplo seria um Bloco A manda para esse seu Bloco B que manda de volta pro A, se existir apenas essas saídas, no momento em que o usuário cair no Bloco A ele ficará preso num loop infinito. Teria como você mandar foto do fluxo e das condições de saída?


Opa! Eu monto o loop no bloco “Exibe boleto” e aponto para ele mesmo. Observe abaixo:





Enquanto a variável i for diferente de false, ele terá como saída padrão o próprio bloco e exibirá as informações do boleto correspondente à i. Quando i for false, atingimos o fim dos boletos e direciono o usuário à saída. E é esse loop que o Builder não está aceitando.





Essa variável i é manipulada por um Javascript no próprio bloco, a ver abaixo:



function run(i, boletos) {

var boletos = JSON.parse(boletos);

i++;

if(boletos.length > i){

return i;

}else{

return false;

}

}


Realmente nunca tinha pensado em um loop dessa forma. Perguntei para um pessoal da minha célula sobre isso e disseram que o Blip não aceita mesmo esse tipo de loop, é necessário ter um input de usuário. Única solução que pensei seria você fazer uma validação de input perguntando se o usuário quer que exiba o próximo boleto ou não.


Comente