Respondido

WhatsApp - Cache de variáveis


Boa tarde,


Temos um Bot dentro do WhatsApp e percebemos que está existindo um cache no valor das variáveis armazenadas pelo Builder.


Mesmo após o tempo de expiração definido para o fluxo, as variáveis permanecem com os valores preenchidos em conversas anteriores deste mesmo usuário.


Alguém já passou por isso? Existe uma maneira simples de garantir que todas as variáveis sejam zeradas quando um novo fluxo é iniciado?


Abs

icon

Melhor resposta por tmonaco 30 January 2022, 16:44

Veja o original

11 comentários

Estou com o mesmo problema, lista de contatos fica com a variável que vem do WhatsApp, mas ao entrar no contato, tem as variáveis que coletei no fluxo.


Acredito que tem alguma coisa haver com o tempo de atualização do CRM de contatos.

Realmente não entendi a lógica, eu estou com variáveis que estão preenchidas há mais de 24h.

É, acontece com comigo mesmo, eu fico puto achando que deu algum bug e não estava coletando rsrs

Reputação 7
Crachá +1

Olá @tmonaco !

Boas-vindas à Comunidade! 💙




Eu só fiquei com algumas dúvidas, talvez com um exemplo prático fique mais claro… Vocês estão dizendo que, por exemplo:



Se no meu fluxo eu verifico se tem atendente online e armazeno a resposta na variável hasAttendant, quando meu cliente passa pelo bloco de verificação ele recebe essa variável no contato e isso fica armazenado. Daí quando ele volta a conversar, essa variável hasAttendant já existe e está preenchida com o último valor recebido?



É isso que estão dizendo?

No meu caso é exatamente isso…


Inclusive agorinha acabei de pegar um outro cenário, que pode estar relacionado.

A última interação que havia existido com o Bot foi de ontem para hoje às 01h33min da manhã…


Acabei de mandar um “Oi”, às 10h43, ou seja 09h depois, para reiniciar o fluxo e ele continuou exatamente do ponto que estava antes.


Já conferi o tempo de “Expiração de Sessão” tando do Router, como Sub bot e ambos estão com 600 segundos

Reputação 7
Crachá +1

Certo, mas acredito que ainda tenha uma certa confusão.

Vamos por partes:


1 - Sobre as variáveis ficarem armazenadas no contato, isso acontece de fato e permite mais inteligência pro seu chatbot. Eu reaproveito muito estas variáveis quando meu contato retorna uma conversa. De qualquer maneira, você pode sempre excluir as variáveis de contexto do seu usuário quando achar necessário, dá uma olhada aqui → Delete a Context Variable.


2 - Sobre a Expiração da Sessão, aqui está funcionando corretamente. Acabei de alterar um chatbot e testar e obtive sucesso:

image

Um ponto importante é que depois que eu alterei a expiração da sessão, eu publiquei o bot novamente.


Veja se isso te ajuda.

Qualquer coisa é só nos chamar.


Abraços.

Certo. Sobre as variáveis de contexto, pelo jeito vou ter que bolar uma lógica para zerar tudo quando reinicia o fluxo.


Sobre a expiração, misteriosamente agora está funcionando.

Mas, como garantir que após a expiração ele retorne para o início do Router também? Pois agora ele expira no sub-bot e qdo mando outra msg pelo o início do sub-bot e não do principal

Reputação 7
Crachá +1

Certinho! É sempre bom você sempre verificar “se a variável existe” antes de executar a ação de deletá-la. Para garantir que só vai rodar o comando se de fato existir 😃


Sobre a expiração no caso de Router, é importante você setar o mesmo tempo no Serviço, tá? Dessa maneira:


Qualquer dúvida corre aqui.


Abraços.

Reputação 7

Oi @tmonaco, tudo certo?


Passando para checar se você conseguiu resolver isso com a ajuda do excelentíssimo @GabrielPetrone 😊

Olá,


Desculpe a demora. Aparentemente a expiração voltou a funcionar, sem realizar qualquer mudança

Olá, acho que estou com esse mesmo problema mas tenho mais uma dúvida.

 

A maioria das soluções gira em torno de um tempo de expiração, mas no meu caso o usuário pode entrar e sair variáveis vezes de um fluxo, pois é um menu de serviço.

 

Isso pode demorar 1min, ou 5min, que é o maximo que estabeleci. O problema é que se colocar para expirar em 5min, se o usuário voltar ao menu principal, as variáveis ainda estarão preenchidas e vou ter problemas. Ao mesmo tempo se eu colocar para expirar a cada 1min, se o usuário demorar um pouco mais para continuar a ação, vai expirar e perder todo.

No meu caso, o ideal seria que no bloco de redirecionar para o serviço ou assim que começasse eu pudesse limpar todas as variáveis que tenho no bot.

Atualmente estou fazendo assim:

O que sinceramente acredito que é pouco eficiente e tenho dúvidas se não influencia na performance 

 

Existe uma forma mais elegante e eficiente de fazer isso ? 

Comente