Memória do Fluxo
Em uma conversa, você pode querer fazer perguntas ao usuário e lembrar suas respostas para usá-las mais tarde. Você também pode acessar os valores dos parâmetros do sistema, como os valores dos slots que seu chatbot acabou de extrair.
Parâmetros do Sistema
Quando um usuário fala com um chatbot, o Botpress rastreia todas as variáveis e parâmetros associados a esse chatbot à medida que o chatbot passa de um estado para outro.
Se você executar o depurador, verá a árvore de todos os parâmetros do sistema que ele rastreia. Basta clicar no botão do depurador (circulado em vermelho abaixo) e ele será aberto no painel inferior por padrão.

É necessario acessar esses parâmetros do sistema a partir do Flow Editor e dentro do seu código (inclusive em ações). Para fazer isso, tudo o que você precisa fazer para referenciar um parâmetro prefixando o caminho mostrado no emulador com event..
Por exemplo, o caminho mostrado no depurador para o parâmetro language é nlu.language. Você pode fazer referência a esse parâmetro adicionando event.ao caminho mostrado no depurador, como event.nlu.language.

No Flow Editor, você pode acessar os parâmetros do sistema colocando-os entre colchetes com dois conjuntos de colchetes.
🖊 Nota: O idioma de entrada do usuário é {{event.nlu.language}}.
Você também pode definir variáveis para serem o valor de um parâmetro do sistema da seguinte maneira:

Para expressões brutas ou código (como em ações), você não precisa dos colchetes. Aqui está um exemplo de uma expressão bruta em uma transição:

Da mesma forma, conforme descrito acima, é possível acessar os valores dos slots extraídos copiando o caminho do emulador e prefixando-o com event.
(Por exemplo, {{state.session.slots.food.value}}) no construtor de fluxo e state.session.slots.food.valueno código. food é um slot que foi configurado pelo construtor do chatbot.

Como é possível em JavaScript, também é possível acessar os parâmetros com a seguinte sintaxe:
{{state.session.slots["food"].value}}
Variáveis
Existem quatro tipos diferentes de memórias no Botpress; a diferença entre eles é a duração e o escopo.
- user a memória é mantida para sempre para o usuário ao qual está associada.
- session memória é mantida durante a sessão configurada.
- temp a memória é mantida apenas durante o fluxo.
- botmemory é o mesmo valor para todos os usuários do mesmo chatbot.
Caso de Uso Comum
Na maioria das vezes, você dependerá do tipo user de memória temp. A memória temp só está viva durante a duração de um fluxo.
Configurando e Acessando Variáveis
As variáveis podem ser configuradas ou declaradas usando a ação "Definir variável" (consulte a seção Memória de diálogo abaixo) ou código. Ao usar a caixa de diálogo de ação "Definir variável", a variável é configurada e recebe um valor.
🖊 Nota: No código, a variável é declarada simplesmente usando-a.
Assim como com os parâmetros do sistema (consulte a seção Parâmetros do sistema ), as variáveis podem ser acessadas no construtor de fluxo e na caixa de diálogo Definir variável colocando as variáveis entre colchetes duplos (como {{temp.user_name}}).
🖊 Nota: Em código ou expressões brutas, a referência à variável não precisaria dos colchetes duplos.
Por exemplo, seu chatbot referenciaria a variável como: temp.user_name
Memória de Bot
A botmemória é o mesmo valor para todos os usuários do chatbot. Pense nisso como uma variável global, mas com escopo apenas para este chatbot.
Como mudar o que está na Memória?
A maneira mais simples é usar a ação base.setVariable. Você só precisa especificar o tipo de memória, o nome da variável e qual valor seu chatbot deve definir.
Outro uso comum é com ações. As ações permitem que você edite essas variáveis diretamente. Por exemplo, você pode escrever user.firstname = 'potato' em seu arquivo de código para atualizar o nome do usuário.