Skip to main content

¿Qué es ctx.memory?

ctx.memory es un cliente HTTP al Memory API de Jelou. Habla con el mismo almacenamiento key-value del usuario ($memory en el builder). Lo que escribas desde una Function es visible en placeholders {{$memory.key}} del workflow y viceversa — es una sola memoria por usuario, no una copia paralela. Disponible automáticamente cuando la petición viene de una conversación activa y la empresa 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 del usuario — idioma, formato, filtros que persisten entre conversaciones

Inicio rápido

index.ts

Verificar disponibilidad

ctx.memory.available es false cuando la petición no viene de una conversación activa o la API key del workflow no está configurada. Llamar a métodos en un cliente no disponible lanza un Error.

Primitivos vs JSON

Usa set()/get() para valores simples y setJson()/getJson() para objetos:
El tipo de retorno de get() coincide con el tipo del valor por defecto:

TTL (tiempo de vida)

Hay dos capas de expiración en Memory:
  1. TTL por variable (el que pasas al set) — controla cuándo caduca esa variable individual.
  2. hashTTL de 30 días (gestionado por la plataforma) — controla cuándo caduca la memoria completa del usuario. Cuando expira, se borra todo su Memory.
Renovación del hashTTL desde ctx.memory: las escrituras vía ctx.memory solo inicializan el hashTTL cuando la memoria del usuario está vacía; escrituras posteriores no lo extienden. En cambio, las escrituras vía $memory en el builder sí extienden el hashTTL en cada write. Si tu flujo persiste solo desde Functions y necesitas actividad continua, combina con al menos una escritura desde el builder.
El TTL por variable se especifica en segundos:

Límites

Valores de set() que excedan 255 caracteres lanzan un Error. Para datos más grandes, usa setJson().

Patrones comunes

Manejo de errores

¿Cuándo usar ctx.memory vs una base de datos?

Acceder a memoria de otro usuario

Desde triggers cron o event, puedes acceder a la memoria de un usuario específico con ctx.memory.for(userId):
ctx.memory.for() solo funciona desde triggers cron o event. En requests HTTP normales, ctx.memory ya está vinculado a la sesión del usuario actual — llamar .for() lanza un error.