Pular para o conteúdo principal
O objeto ctx é o segundo parâmetro de todo handler. Contém informações da empresa, bot, usuário, tipo de trigger, e dá acesso a secrets, mensagens, memória e logging.
handler: async (input, ctx, request) => {
  ctx.log("Requisição recebida", {
    company: ctx.company.name,
    bot: ctx.bot.channel,
    user: ctx.user.id,
  });
}

Referência

PropriedadeTipoDescrição
ctx.functionSlugstringSlug da função
ctx.company{ id, name }Empresa da requisição
ctx.bot{ id, name, channel }Bot que originou a requisição
ctx.user{ id, names?, roomId? }Usuário da conversa
ctx.triggerTriggerInfoTipo de trigger (http, cron, event)
ctx.envEnvAccessorAcesso a secrets
ctx.paramsRecord<string, string>Parâmetros de rota
ctx.queryRecord<string, string>Query string params
ctx.jelouJelouSDKCliente de mensagens WhatsApp
ctx.memoryMemorySDKMemória de sessão key-value
ctx.methodstringMétodo HTTP
ctx.pathstringPath da requisição
ctx.requestIdstringUUID único
ctx.isCronbooleantrue se trigger cron
ctx.isEventbooleantrue se trigger event
ctx.isHttpbooleantrue se requisição HTTP
ctx.skillIdstring | nullID do skill do Brain Studio
ctx.executionIdstring | nullID de execução do Brain Studio
ctx.log()(...args) => voidLogger estruturado

Identidade

ctx.company.id;    // 42
ctx.company.name;  // "Loja ABC"
ctx.bot.id;        // "bot-123"
ctx.bot.channel;   // "whatsapp"
ctx.user.id;       // 99

Trigger

if (ctx.isHttp) {
  ctx.trigger; // { type: "http" }
}

Request

export default define({
  config: { path: "/users/:id" },
  handler: async (input, ctx) => {
    ctx.params.id;   // "42"
    ctx.query.format // "json"
    ctx.requestId;   // "a1b2c3d4-..."
  },
});

Ambiente (secrets)

const apiKey = ctx.env.get("CRM_API_KEY");
ctx.env.has("WEBHOOK_SECRET");
Variáveis internas com prefixo __FN_ são bloqueadas.

Logging

ctx.log("Processando pedido", { telefone: input.telefone });
// stdout: { "requestId": "...", "function": "...", "timestamp": "...", "args": [...] }

Mensagens

Enviar WhatsApp com ctx.jelou.

Memória

Persistir dados com ctx.memory.