ctx) te proporciona metadata de la petición y acceso a la plataforma.
Información de la función
| Campo | Tipo | Ejemplo |
|---|---|---|
functionSlug | string | "consultar-cliente" |
Organización
| Campo | Tipo | Ejemplo |
|---|---|---|
company.id | number | 42 |
company.name | string | "Acme Corp" |
Bot
| Campo | Tipo | Ejemplo |
|---|---|---|
bot.id | string | "bot-abc123" |
bot.name | string | "Bot de Soporte" |
bot.channel | string | "whatsapp" |
Usuario
| Campo | Tipo | Ejemplo |
|---|---|---|
user.id | number | 123 |
user.names | string | undefined | "María García" |
user.roomId | string | undefined | "room-456" |
Conversación y operador
| Campo | Tipo | Ejemplo |
|---|---|---|
conversation | { id?: string; ... } | { id: "conv-789" } |
operator | { id?: string; ... } | { id: "op-321" } |
Petición
| Campo | Tipo | Ejemplo |
|---|---|---|
method | string | "POST" |
path | string | "/clientes/42" |
requestId | string | "550e8400-e29b-41d4-a716-446655440000" |
skillId | string | null | "skill-abc" |
executionId | string | null | "exec-789" |
Parámetros de ruta y query
| Campo | Tipo | Ejemplo |
|---|---|---|
params | Record<string, string> | { id: "42" } |
query | Record<string, string> | { estado: "activo" } |
Detección de trigger
| Campo | Tipo | Descripción |
|---|---|---|
trigger.type | string | "http", "cron" o "event" |
trigger.cron | string? | Expresión cron (cuando type: "cron") |
trigger.event | string? | Nombre del evento (cuando type: "event") |
isCron | boolean | true cuando lo dispara un cron |
isEvent | boolean | true cuando lo dispara un evento |
isHttp | boolean | true cuando lo dispara una petición HTTP |
Autenticación (ctx.auth)
Resultado de la verificación Bearer token. Solo presente si la función tiene auth configurado.
| Campo | Tipo | Descripción |
|---|---|---|
ctx.auth | AuthResult | null | null si auth no está activo o es opcional sin token |
ctx.auth.authenticated | boolean | true si el token fue verificado exitosamente |
Guía de Autenticación
Configuración, rotación de llaves, auth opcional y patrones con app().
Mensajería (ctx.jelou)
Cliente auto-configurado para enviar mensajes y plantillas de WhatsApp a través de la API de Jelou.
| Campo / Método | Tipo | Descripción |
|---|---|---|
ctx.jelou.available | boolean | true si las credenciales del company están configuradas |
ctx.jelou.send(options) | Promise<MessageResponse> | Envía un mensaje (texto, imagen, ubicación, botones, etc.) |
ctx.jelou.sendTemplate(options) | Promise<TemplateResponse[]> | Envía una plantilla HSM de WhatsApp |
Referencia de Mensajería
Tipos de mensaje, plantillas, JelouApiError y mocks para testing.
Memoria de sesión (ctx.memory)
Almacenamiento key-value por sesión respaldado por Redis.
| Campo / Método | Tipo | Descripción |
|---|---|---|
ctx.memory.available | boolean | true si socketId y API key están configurados |
ctx.memory.get(key, default) | Promise<string | number | boolean> | Lee un valor primitivo |
ctx.memory.getJson<T>(key, default) | Promise<T> | Lee un valor JSON tipado |
ctx.memory.set(key, value, ttl?) | Promise<void> | Guarda un valor primitivo |
ctx.memory.setJson(key, value, ttl) | Promise<void> | Guarda un objeto JSON (TTL requerido) |
ctx.memory.delete(key) | Promise<void> | Elimina una clave |
Referencia de Memoria
Métodos, TTL, límites, MemoryApiError y mocks para testing.
Variables de entorno (ctx.env)
| Método | Retorna | Descripción |
|---|---|---|
ctx.env.get("KEY") | string | undefined | Obtiene el valor de un secret |
ctx.env.has("KEY") | boolean | Verifica si un secret existe |
ctx.env.toObject() | Record<string, string> | Obtiene todos los secrets como objeto |
__FN_ están bloqueadas y retornan undefined.