O que é ctx.memory?
ctx.memory é um armazenamento chave-valor por sessão baseado em Redis. Está disponível automaticamente quando a requisição vem de uma conversa ativa (possui um socketId) 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 temporárias — idioma, formato, filtros durante a sessão
Quick start
index.ts
Verificar disponibilidade
Primitivos vs JSON
Useset()/get() para valores simples e setJson()/getJson() para objetos:
get() corresponde ao tipo do valor padrão:
TTL (time to live)
Todos os valores expiram automaticamente. O TTL é especificado em segundos.| Método | TTL | Máximo |
|---|---|---|
set() | Opcional | 86.400 (24h) |
setJson() | Obrigatório | 86.400 (24h) |
Limites
| Restrição | Valor |
|---|---|
Comprimento máximo de set() | 255 caracteres |
| TTL máximo | 86.400 segundos (24h) |
| Escopo | Por sessão (socketId) |
set() que excedem 255 caracteres lançam um Error. Para dados maiores, use setJson().
Padrões comuns
- Fluxo multi-etapa
- Carrinho de compras
- Limite de tentativas
Tratamento de erros
Quando usar ctx.memory vs um banco de dados?
ctx.memory | Banco de dados externo | |
|---|---|---|
| Escopo | Por sessão (socketId) | Global |
| Persistência | Temporária (máx 24h) | Permanente |
| Configuração | Zero — incluído | Requer connection string nos secrets |
| Ideal para | Estado da conversa, cache temporário | Dados de usuários, histórico, config |