Pular para o conteúdo principal

Introdução

A Memory permite armazenar variáveis que persistem entre conversas, skills e nós. Ao contrário do Context (que está disponível apenas durante a conversa atual), a Memory mantém os dados disponíveis para interações futuras com o usuário.

Principais características

CaracterísticaDescrição
TTL configurávelDefina o tempo de vida de cada variável em segundos
Múltiplos tiposSuporta primitivos, JSON e arquivos
Armazenamento de arquivosArmazene imagens, vídeos, áudios e documentos de até 10 MB
Métodos específicosAPI diferenciada para cada tipo de dado

Tipos de dados

TipoTamanho máximoTTLTTL máximo
String255 caracteresOpcional-
Number15 dígitosOpcional-
Boolean-Opcional-
JSON5 KBObrigatório86.400 s (1 dia)
File10 MBObrigatório604.800 s (1 semana)
TTL (Time To Live): Tempo de vida em segundos. Quando o TTL expira, a variável é automaticamente excluída. Por exemplo, 3600 = 1 hora, 86400 = 1 dia.

Salvando variáveis

Usando o nó Variable

Para salvar variáveis sem código, use o nó Variable dentro da seção Logic. Em Variable insira o nome e em Value o que deseja salvar; pode ser texto simples, outra variável ou um valor do contexto.
Variable: name
Value: {{$user.names}}
O nó Variable é ideal para salvar primitivos (string, number, boolean) de forma rápida e visual.
Cada nó Variable permite um máximo de 20 variáveis. Se precisar de mais, use múltiplos nós ou salve os valores a partir de um nó de código.

Usando nós de código

Para maior controle sobre o TTL e tipos de dados complexos, use os métodos $memory em nós de código:
// Primitives (string, number, boolean) - TTL optional
$memory.set('name', 'John')
$memory.set('attempts', 3)
$memory.set('verified', true)

// Primitive with TTL (expires in 1 hour)
$memory.set('temporaryCode', 'ABC123', 3600)

// JSON - TTL required (maximum 1 day)
$memory.setJson('preferences', {
  language: 'en',
  notifications: true
}, 86400)

// File - async, TTL required, MIME required (maximum 1 week)
await $memory.setFile('receipt', base64String, 604800, 'application/pdf')

Lendo variáveis

Em qualquer nó

Dentro de qualquer nó você pode acessar a Memory com a sintaxe {{$memory.variableName}}. Por exemplo, se as variáveis na memória forem:
{
  "name": "John",
  "lastOrder": { "id": "ORD-123", "status": "on the way" }
}
Então:
  • {{$memory.name}} mostra John
  • {{$memory.lastOrder.status}} mostra on the way

Em nós de código

Use os métodos específicos de acordo com o tipo de dado:
// Primitives
const name = $memory.get('name')
const name = $memory.get('name', 'Guest') // with default value

// JSON
const prefs = $memory.getJson('preferences')
const prefs = $memory.getJson('preferences', {}) // with default value

// Files - returns FileHandle
const file = $memory.getFile('receipt')

Trabalhando com arquivos

Ao salvar um arquivo na Memory, você deve fornecer o conteúdo em base64, o TTL e o tipo MIME:
// Save a file
await $memory.setFile('document', base64Content, 604800, 'application/pdf')
Ao ler um arquivo com $memory.getFile() você obtém um FileHandle com três métodos para acessar o conteúdo:
MétodoDescriçãoAssíncrono
.toUrl()URL temporária para download (S3)Não
.toBase64()Conteúdo como string base-64Sim
.toRaw()Buffer / Uint8ArraySim
// Get temporary URL
const url = $memory.getFile('receipt').toUrl()

// Get content in base64
const base64 = await $memory.getFile('receipt').toBase64()

// Get file content
const content = await $memory.getFile('receipt').toRaw()

Tipos MIME permitidos

CategoriaTipos MIME
Textotext/plain
JSONapplication/json
XMLapplication/xml, text/xml
Imagensimage/jpeg, image/png, image/gif
Vídeosvideo/mp4, video/ogg, video/webm, video/x-msvideo, video/mpeg
Áudiosaudio/mpeg, audio/wav, audio/ogg, audio/aac, audio/flac
Documentosapplication/pdf
Os métodos $memory.setFile(), $memory.getFile().toBase64() e $memory.getFile().toRaw() são assíncronos. Você deve usar await ao chamá-los.

Excluindo variáveis

Você pode excluir variáveis antes que seu TTL expire:
// Delete a variable
$memory.delete('temporary')

// Delete multiple variables
$memory.delete(['cache', 'session', 'temporary'])

Segurança

Não armazene dados sensíveis na Memory:
  • Senhas ou números de cartão de crédito
  • Tokens de autenticação de longa duração
  • Informações de identificação pessoal (PII) altamente sensíveis
Para persistência de longo prazo, use o Datum.