Skip to main content

O que é ctx.memory?

ctx.memory é um cliente HTTP para a Memory API da Jelou. Ele fala com o mesmo armazenamento chave-valor do usuário ($memory no builder). Tudo que você escrever a partir de uma Function é visível em placeholders {{$memory.key}} do workflow e vice-versa — é uma única memória por usuário, não uma cópia paralela. Disponível automaticamente quando a requisição vem de uma conversa ativa e a empresa tem uma chave de API de workflow configurada. Casos de uso típicos:
  • Fluxos multi-etapa — lembrar em qual etapa o usuário está
  • Carrinhos de compra — acumular produtos durante a conversa
  • Contadores — limitar tentativas de login, rastreamento de retentativas
  • Preferências do usuário — idioma, formato, filtros que persistem entre conversas

Quick start

index.ts

Verificar disponibilidade

ctx.memory.available é false quando a requisição não vem de uma conversa ativa ou a chave de API de workflow não está configurada. Chamar métodos em um cliente indisponível lança um Error.

Primitivos vs JSON

Use set()/get() para valores simples e setJson()/getJson() para objetos:
O tipo de retorno de get() corresponde ao tipo do valor padrão:

TTL (time to live)

Existem duas camadas de expiração na Memory:
  1. TTL por variável (o que você passa ao set) — controla quando essa variável individual expira.
  2. hashTTL de 30 dias (gerenciado pela plataforma) — controla quando a memória completa do usuário expira. Quando expira, toda a sua Memory é apagada.
Renovação do hashTTL a partir de ctx.memory: escritas via ctx.memory apenas inicializam o hashTTL quando a memória do usuário está vazia; escritas posteriores não o estendem. Já escritas via $memory no builder estendem o hashTTL a cada write. Se seu fluxo persistir apenas via Functions e precisar de atividade contínua, combine com ao menos uma escrita a partir do builder.
O TTL por variável é especificado em segundos:

Limites

Valores de set() que excedem 255 caracteres lançam um Error. Para dados maiores, use setJson().

Padrões comuns

Tratamento de erros

Quando usar ctx.memory vs um banco de dados?

Acessar memória de outro usuário

A partir de triggers cron ou event, você pode acessar a memória de um usuário específico com ctx.memory.for(userId):
ctx.memory.for() só funciona a partir de triggers cron ou event. Em requisições HTTP normais, ctx.memory já está vinculado à sessão do usuário atual — chamar .for() lança um erro.