---
title: Memória do Fluxo
slug: helper-new/memoria-do-fluxo
description: Learn how to easily access and utilize system parameters and variables in Botpress. Discover how to reference system parameters with the "event." prefix, and explore the various scopes and durations of variables, including user, session, temp, and botmemo
createdAt: 2022-08-29T12:49:16.000Z
---

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.&#x20;

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.

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/uxQMmaQOemnaJ4OOk-ywo_image.png)



É 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.`*

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/fMovQXxcIFCNGmZyMUwBR_image.png)

No Flow Editor, você pode acessar os parâmetros do sistema colocando-os entre colchetes com dois conjuntos de colchetes.

:::hint{type="info"}
🖊 <u>**Nota**</u>**:** 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:

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/YdtCN-YEMBdGqjeKETeP2_image.png)

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:

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/aUtX_AFk5Fk7AWx-8tSY6_image.png)

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*.&#x20;

(Por exemplo, *`{{state.session.slots.food.value}}`*) no construtor de fluxo e *`state.session.slots.food.value`*&#x6E;o código. *food&#x20;*&#xE9; um slot que foi configurado pelo construtor do chatbot.

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/Ke-wSb497PAh8tZWTTLpy_image.png)

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&#x20;*&#x73;ó 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.

:::hint{type="info"}
🖊 <u>**Nota**</u>**:** 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}}`*).

:::hint{type="info"}
🖊 <u>**Nota**</u>**:&#x20;**&#x45;m 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.
