Pular para o conteúdo principal
O nó Código permite que você execute JavaScript personalizado dentro do seu fluxo. É útil para operações que não podem ser realizadas com nós padrão: transformar dados, realizar cálculos, manipular texto ou integrar lógica de negócio personalizada.

Acessando variáveis

Dentro do nó de Código você pode ler e escrever variáveis do fluxo usando objetos globais predefinidos.

Contexto ($context)

Variáveis que persistem apenas durante a execução atual do fluxo:
// Read
const name = $context.get('name')
const name = $context.get('name', 'John') // with default value

// Write
$context.set('lastOrder.status', 'delivered')
$context.set('user', { name: 'John', plan: 'gold' })

Memória ($memory)

Variáveis que persistem entre skills, ferramentas e nós. Suportam time-to-live (TTL):
// Primitives (string, number, boolean) - optional TTL
$memory.set('name', 'John')
$memory.set('attempts', 3, 3600) // expires in 1 hour

// JSON - TTL required (in seconds, maximum 86,400 = 1 day)
$memory.setJson('user', { name: 'John', plan: 'gold' }, 86400)

// Files - async, TTL required (maximum 604,800 = 1 week)
await $memory.setFile('receipt', base64String, 604800, 'application/pdf')

Leitura

const name = $memory.get('name')
const user = $memory.getJson('user')
const url = $memory.getFile('receipt').toUrl()           // temporary URL
const base64 = await $memory.getFile('receipt').toBase64()

Exclusão

$memory.delete('temporary')
$memory.delete(['tmp1', 'tmp2', 'cache']) // multiple keys

Limites por tipo de dado

TipoTamanho máximoTTLTTL máximo
String255 caracteresOpcional
Number15 dígitosOpcional
BooleanOpcional
JSON5 KBObrigatório86.400s (1 dia)
File10 MBObrigatório604.800s (1 semana)
Os métodos $memory.setFile(), $memory.getFile().toBase64() e $memory.getFile().toRaw() são assíncronos. Você deve usar await ao chamá-los.

Migração de nós legados

  1. Crie um novo nó Code (Memory V2).
  2. Copie e cole o script do nó legado.
  3. Use os novos métodos disponíveis ($memory.setJson, $memory.setFile, etc.) se necessário.

Usuário ($user)

Informações sobre o contato que interage com seu fluxo:
const userId = $user.get('id')
const userName = $user.get('names')

Mensagem ($message)

A última mensagem enviada pelo usuário:
const text = $message.get('text')
const type = $message.get('type')       // TEXT, IMAGE, AUDIO, VIDEO, LOCATION, FILE
const attachmentUrl = $message.get('mediaUrl')
const lat = $message.get('lat')
const lng = $message.get('lng')

Entrada/Saída (input,input, output)

Para comunicação entre ferramentas e skills:
const city = $input.get('city', 'Quito')  // with default value
$output.set('data', result)

Respostas HTTP

Se você salvou a resposta de um nó API:
let apiResponse = $context.getHttpResponse('apiResponse')
apiResponse = apiResponse.json()

$memory.set('name', apiResponse.data.user.name)
A chave em $context.getHttpResponse() deve corresponder exatamente à que você configurou no campo “Salvar resposta” do nó API.

Utilitários disponíveis

Logger

Registra valores para depuração no formato chave-valor. Os logs aparecem no histórico de execução:
// Primitives are stored as-is
$utils.logger.log('userId', 1245)
$utils.logger.log('status', 'active')

// Objects and arrays are converted to string (truncated to 512 characters)
$utils.logger.log('orderData', { id: 1, name: 'christian' })
Cada nó permite no máximo 10 entradas de log. O valor de cada entrada tem um limite de 512 caracteres.

Crypto

Funções criptográficas padrão:
$utils.crypto.createHash('sha256')
$utils.crypto.createHmac('sha256', key)
$utils.crypto.randomBytes(32)

Lodash

Utilitários para manipulação de arrays, objetos e strings:
$utils._.get(object, 'nested.path', defaultValue)
$utils._.uniq(array)
$utils._.chunk(array, size)
$utils._.merge(object1, object2)
Tipos MIME permitidos para $memory.setFile():
CategoriaTipos
Textotext/plain
JSON/XMLapplication/json, application/xml, text/xml
Imagensimage/jpeg, image/png, image/gif
Vídeosvideo/mp4, video/ogg, video/webm, video/x-msvideo, video/mpeg
Áudioaudio/mpeg, audio/wav, audio/ogg, audio/aac, audio/flac
Documentosapplication/pdf