[Resolvido] Reiniciar o fluxo por inatividade


#1

Boa tarde galera,

tem como eu reiniciar o fluxo com o bot quando o usuário deixou de usar e depois de um tempo tentou usar o bot novamente?

Exemplo
Eu iniciei uma conversa com o bot pela manhã, mas não concluir o fluxo completo. A noite eu inicio uma conversa com o bot mas dessa vez do começo do fluxo, não de onde um parei pela manhã.

Tem como fazer isso?


#2

Olá @Joao_Antonio_Ferreir,

tem sim.
Basta enviar uma requisição para a API do BLiP conforme descrito na documentação abaixo:

https://docs.blip.ai/#reset-user-state


#3

Mas como fazer isso pelo Builder?
Considerando que essa é uma tarefa que será executada no fluxo e que cada fluxo é efêmero, como eu faria pra saber a quanto tempo este usuário está ocioso pra depois tomar a decisão de derruba-lo?
Talvez não teria uma forma de usar variáveis com tempo de expiração? Expirou, derruba o usuário…
Mas como fazer isso?


#4

Entendi, mas como é que eu faço para pegar o identificador do usuário para depois poder chamar a API?


#5

@Jhoni_Desb

Uma forma de você fazer isso é definir uma nova variável com o tempo de expiração que você quer, e depois checar o valor dela na condição de saída.
image
Dessa forma voce pode redirecionar o usuário para um bloco que reinicia o estado (ou pro fluxo inicial novamente hehehe)

@Joao_Antonio_Ferreir

Você encontra essa informação pelo builder com {{contact.identity}}
Uma outra dica: a biblioteca de variáveis dentro do builder (canto inferior esquerdo) pode te ajudar com todas as variáveis do BLiP! :grinning:
image


#6

Foi o que imaginei, então se a variável tem valor ainda, quer dizer que o usuário ainda está dentro do tempo estipulado…

Complicado é adicionar esta validação em todos os blocos do fluxo, pois o usuário pode ter abandonado em qualquer altura da conversa.

Tinha que ser nativa esta função, tipo ter um “Idle time” block padrão no builder!


#8

Verdade @Jhoni_Desb, meu fluxo vários e vários blocos é meio complicado ter que ir alterando em casa saída o valor dessa variável.

A minha intenção é o seguinte. Como meu fluxo é muito grande e corremos o risco do usuário desistir no meio do caminho, para quando ele voltar ao chat ele começasse do início pois o msm poderá não lembrar do que tava fazendo anteriormente.

Mas por padrão o blip guarda o ponto onde o fluxo foi terminado e quando o usuário volta ele começa desse ponto. Eu queria uma maneira de burlar esse comportamento.


#9

Eu não vejo um jeito fácil de fazer isso sem ser bloco a bloco por enquanto.

Me surgiu uma ideia agora, como uma espécie de manutenção das sessões de usuários…
Pode funcionar no seu caso…

1-Adicione um Recurso para cada novo usuário com o valor da data e hora que ele entrou na conversa. Pode usar o id de usuário para definir o nome do Recurso.
2-Colete todos os Recursos de todos os usuário e encontre os usuários que já abandonaram a conversa a algum tempo
3-Derrube os usuários mais antigos.

Ou seja, você vai executar uma manutenção de todos os usuários toda vez que um novo usuário entrar. Só cuide as mudanças de horário de verão.


#10

Faz uma falta danada ter uma espécie de “Tarefas crono” no servidor para quem usa o builder.
Dessa forma, a gente poderia rodar uma série de coisas de maneira síncrona ou por gatilhos num lugar centralizado a fim de manter os recursos do bot.

Eu resolveria uma série de problemas que tenho hoje, como a manutenção das autenticações OAuth das APIs externas e também poderia fazer essa manutenção de usuário inativos, dentre outras milhões de possibilidades.


#11

tbm acho @Jhoni_Desb é uma pena não ter essa funcionalidade, com ela podemos gerenciar os usuários para quando ele voltar a acessar o podemos dar algum feedback para ele.


#12

tentei usar como falaram para voltar no inicio {{user-identity}}

{  
  "id": "0094447a-2581-4597-be6a-a5dff33af156",
  "method": "delete",
  "uri": "/contexts/30e26f51-25e5-4dfc-b2bf-6c0ba80027a8.docstest%400mn.io/stateid%400"
}

mas ocorre erro nao reconhece a variavel {{user-identity}}

como conseguiram?

a inatividade eu ate consegui usando o roteador , ele volta pro meu buider principal
mas estou com o problema do histórico do cliente e não sei como limpar isso.


#13

A variável correta não seria contact.identity?
Clique no ícone de “livro” no canto esquerdo inferior do builder e veja…


#14

digo pela documentação


e mesmo assim se coloco a variavel ele não deleta o usuario.


#15

Também não estou conseguindo fazer esse Reset, alguem conseguiu?


#16

Pessoal,

a imagem abaixo mostra tudo que é necessário fazer para resetar o estado de um usuário através do Builder.

Conforme descrito na documentação, envie um comando para o servidor do BLiP com as informações do usuário que deseja limpar a seção.

https://docs.blip.ai/#reset-user-state