smart-switch-wesley

Nó n8n que avalia condições configuráveis e roteia items para saída true ou false

Package Information

Released: 4 mo ago
Downloads: 13 weekly / 58 monthly
Latest Version: 1.0.3
Author: Wesley Abreu

Documentation

n8n-nodes-smart-switch

Nó customizado para n8n que funciona como um switch inteligente: avalia condições configuráveis sobre os dados de entrada e roteia cada item para a saída ✅ true ou ❌ false.


Como funciona um Nó n8n (teoria)

Estrutura básica

Um nó n8n é uma classe TypeScript que implementa INodeType. Ela possui dois componentes:

Parte Responsabilidade
description Define como o nó aparece no editor: nome, ícone, campos do usuário, entradas e saídas
execute() Lógica que roda quando o nó é acionado no workflow
export class MeuNo implements INodeType {
  description: INodeTypeDescription = {
    displayName: 'Meu Nó',
    name: 'meuNo',
    inputs: [NodeConnectionType.Main],
    outputs: [NodeConnectionType.Main],
    properties: [ /* campos do usuário */ ],
  };

  async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
    const items = this.getInputData(); // ← dados vindo do nó anterior
    // ... processa ...
    return [items];                    // ← envia para a saída
  }
}

Tipos de campos (properties)

Tipo Descrição
string Texto livre
number Número
boolean Checkbox (sim/não)
options Dropdown com opções fixas
fixedCollection Lista de grupos de campos (permite N itens)
collection Grupo expansível de configurações avançadas

Múltiplas saídas

Para ter mais de uma saída (como true/false), basta declarar múltiplos outputs e retornar um array com um array por saída:

outputs: [NodeConnectionType.Main, NodeConnectionType.Main],
outputNames: ['✅ true', '❌ false'],

// No execute():
return [trueItems, falseItems]; // índice 0 → true, índice 1 → false

Smart Switch – Como usar

Instalação

Em n8n self-hosted:

# Na pasta do seu n8n (ou container)
cd ~/.n8n/custom
npm install n8n-nodes-smart-switch
# Reinicie o n8n

Via Docker (docker-compose.yml):

environment:
  - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom
volumes:
  - ./custom-nodes:/home/node/.n8n/custom

Para desenvolvimento local:

git clone https://github.com/seu-usuario/n8n-nodes-smart-switch
cd n8n-nodes-smart-switch
npm install
npm run build
npm link
cd ~/.n8n/custom && npm link n8n-nodes-smart-switch

Configuração do nó

1. Combinar condições com

  • AND → todas as condições precisam ser verdadeiras
  • OR → basta uma condição ser verdadeira

2. Condições

Adicione quantas condições quiser. Cada uma possui:

Campo O que preencher
Campo de Entrada Nome da chave no JSON (ex: price, user.name)
Operador Como comparar (ver tabela abaixo)
Valor Esperado O que esperar (não aparece para operadores de tipo/existência)

Operadores disponíveis

Operador Descrição Exemplo
= igual a Igualdade exata status = ativo
≠ diferente de Diferença tipo ≠ admin
> maior que Numérico price > 100
>= maior ou igual a Numérico age >= 18
< menor que Numérico score < 50
<= menor ou igual a Numérico peso <= 70
contém (texto) Substring email contém @gmail
não contém (texto) Substring negado nome não contém teste
começa com Prefixo codigo começa com BR-
termina com Sufixo arquivo termina com .pdf
regex Expressão regular cpf regex ^\d{11}$
existe Não é null/undefined endereco existe
não existe É null/undefined deletedAt não existe
é número Verificação de tipo valor é número
é texto Verificação de tipo nome é string
é booleano Verificação de tipo ativo é booleano
é array Verificação de tipo tags é array

3. Opções Avançadas

Opção Descrição
Case-insensitive Ignora maiúsculas/minúsculas em comparações de texto
Incluir detalhes da avaliação Adiciona campo _smartSwitch no JSON de saída com o resultado de cada condição (útil para debug)

Exemplos de uso

Exemplo 1 – Filtrar pedidos acima de R$200

Campo: total
Operador: >= maior ou igual a
Valor: 200

→ Itens com total >= 200 saem pela saída ✅ true
→ Demais saem pela saída ❌ false

Exemplo 2 – Verificar se e-mail é do Gmail

Campo: email
Operador: contém (texto)
Valor: @gmail.com

Exemplo 3 – Múltiplas condições (AND)

Condição 1: status = ativo
Condição 2: age >= 18
Condição 3: pais = Brasil
Combinar: AND

→ Apenas quem é ativo, maior de idade E do Brasil passa para ✅ true

Exemplo 4 – Campos aninhados

{ "user": { "address": { "city": "São Paulo" } } }
Campo: user.address.city
Operador: = igual a
Valor: São Paulo

Saída com debug ativado

Quando a opção "Incluir detalhes da avaliação" está ativa, o item de saída recebe um campo extra:

{
  "_smartSwitch": {
    "result": true,
    "combineWith": "AND",
    "conditions": [
      { "field": "total", "operator": "gte", "expected": "200", "actual": 350, "passed": true },
      { "field": "status", "operator": "equal", "expected": "ativo", "actual": "ativo", "passed": true }
    ]
  }
}

Estrutura de arquivos

n8n-nodes-smart-switch/
├── nodes/
│   └── SmartSwitch/
│       └── SmartSwitch.node.ts   ← Código principal do nó
├── dist/                          ← Código compilado (gerado pelo build)
├── package.json
├── tsconfig.json
└── README.md

Publicar na comunidade n8n

npm run build
npm publish --access public

O nó aparecerá automaticamente no marketplace da comunidade n8n após revisão.

Discussion