¿Qué es ctx.memory?
ctx.memory es un almacenamiento key-value por sesión respaldado por Redis. Está disponible automáticamente cuando la petición viene de una conversación activa (tiene socketId) y el company tiene una API key de workflow configurada.
Casos de uso típicos:
- Flujos multi-paso — recordar en qué paso está el usuario
- Carritos de compras — acumular productos durante la conversación
- Contadores — limitar intentos de login, tracking de reintentos
- Preferencias temporales — idioma, formato, filtros durante la sesión
Inicio rápido
index.ts
Verificar disponibilidad
Primitivos vs JSON
Usaset()/get() para valores simples y setJson()/getJson() para objetos:
get() coincide con el tipo del valor por defecto:
TTL (tiempo de vida)
Todos los valores expiran automáticamente. El TTL se especifica en segundos.| Método | TTL | Máximo |
|---|---|---|
set() | Opcional | 86,400 (24h) |
setJson() | Requerido | 86,400 (24h) |
Límites
| Restricción | Valor |
|---|---|
Longitud máxima de set() | 255 caracteres |
| TTL máximo | 86,400 segundos (24h) |
| Alcance | Por sesión (socketId) |
set() que excedan 255 caracteres lanzan un Error. Para datos más grandes, usa setJson().
Patrones comunes
- Flujo multi-paso
- Carrito de compras
- Límite de intentos
Manejo de errores
¿Cuándo usar ctx.memory vs una base de datos?
ctx.memory | Base de datos externa | |
|---|---|---|
| Alcance | Por sesión (socketId) | Global |
| Persistencia | Temporal (máx 24h) | Permanente |
| Configuración | Cero — viene incluido | Requiere connection string en secrets |
| Ideal para | Estado de conversación, cache temporal | Datos de usuario, historial, config |
Acceder a memoria de otro usuario
Desde triggers cron o event, puedes acceder a la memoria de un usuario específico conctx.memory.for(userId):