Pular para conteúdo

Tutorial: Seu Primeiro Flow

Neste tutorial, você vai criar seu primeiro flow de automação do zero. Vamos construir um flow simples que recebe dados via webhook, processa e envia uma resposta.

O Que Você Vai Construir

Um flow que: 1. Recebe dados via webhook 2. Valida os dados recebidos 3. Faz uma requisição HTTP a uma API externa 4. Processa a resposta 5. Retorna um resultado

Tempo estimado: 15 minutos

Pré-requisitos

  • Conta ativa no Lumina Flow Builder
  • Conhecimento básico de JSON

Passo 1: Criar Novo Flow

  1. Acesse o Dashboard do Lumina
  2. No menu lateral, clique em "Flows"
  3. Clique no botão "+ Novo Flow"
  4. Preencha as informações:
  5. Nome: "Meu Primeiro Flow"
  6. Descrição: "Flow de teste para aprender o básico"
  7. Tags: "tutorial", "teste"
  8. Clique em "Criar"

Você será redirecionado para o editor visual do flow.

Passo 2: Configurar o Trigger

Todo flow precisa de um trigger (gatilho) para iniciar a execução.

2.1. Adicionar Trigger Node

  1. Na barra lateral esquerda, localize "Triggers"
  2. Arraste o nó "Webhook" para o canvas
  3. O nó será adicionado automaticamente

2.2. Configurar Webhook

  1. Clique no nó do webhook para abrir o painel de configuração
  2. Você verá uma URL gerada automaticamente:
    https://api.lumina.app.br/v1/webhooks/wh_abc123xyz
    
  3. Copie esta URL - você vai usá-la para testar
  4. Configure os seguintes campos:
  5. Nome: "Webhook de Entrada"
  6. Método: POST
  7. Autenticação: Nenhuma (para simplificar o teste)

Passo 3: Adicionar Validação

Vamos validar se os dados recebidos estão corretos.

3.1. Adicionar If/Else Node

  1. Na barra lateral, localize "Logic"
  2. Arraste o nó "If/Else" para o canvas
  3. Conecte a saída do webhook ao If/Else:
  4. Clique no ponto de conexão do webhook (círculo à direita)
  5. Arraste até o If/Else
  6. Solte para criar a conexão

3.2. Configurar Condição

  1. Clique no nó If/Else
  2. No campo "Condition", insira:
    {{ $trigger.body && $trigger.body.name && $trigger.body.email }}
    
  3. Esta condição verifica se name e email foram enviados
  4. Nome: "Validar Dados"

Passo 4: Adicionar HTTP Request

Vamos fazer uma requisição a uma API de teste.

4.1. Adicionar HTTP Request Node (Branch True)

  1. Na barra lateral, localize "Actions"
  2. Arraste o nó "HTTP Request" para o canvas
  3. Conecte a saída "true" do If/Else ao HTTP Request

4.2. Configurar Requisição

  1. Clique no nó HTTP Request
  2. Configure:
  3. Nome: "Buscar Dados da API"
  4. Método: GET
  5. URL: https://jsonplaceholder.typicode.com/users/1
  6. Headers: (deixe vazio por enquanto)
  7. Esta API pública retorna dados de um usuário fictício

Passo 5: Processar Resposta

Vamos transformar os dados recebidos.

5.1. Adicionar Transform Node

  1. Na barra lateral, localize "Data"
  2. Arraste o nó "Transform" para o canvas
  3. Conecte a saída do HTTP Request ao Transform

5.2. Configurar Transformação

  1. Clique no nó Transform
  2. No campo "Transform Function", insira:
    {{
      {
        "success": true,
        "message": "Dados processados com sucesso",
        "userData": {
          "name": $trigger.body.name,
          "email": $trigger.body.email,
          "apiData": $nodes['http-request'].output.data.name
        },
        "timestamp": new Date().toISOString()
      }
    }}
    
  3. Nome: "Processar Resposta"

Passo 6: Tratamento de Erro

Vamos adicionar um caminho para quando a validação falhar.

6.1. Adicionar Response Node (Branch False)

  1. Arraste outro nó "Transform" para o canvas
  2. Conecte a saída "false" do If/Else a este Transform
  3. Configure:
  4. Nome: "Resposta de Erro"
  5. Transform Function:
    {{
      {
        "success": false,
        "error": "Dados inválidos",
        "message": "Os campos 'name' e 'email' são obrigatórios",
        "received": $trigger.body
      }
    }}
    

Passo 7: Salvar o Flow

  1. Clique no botão "Salvar" no canto superior direito
  2. Seu flow está pronto!

Seu flow deve ter esta estrutura:

Webhook → If/Else → HTTP Request → Transform (sucesso)
             ↓
          Transform (erro)

Passo 8: Testar o Flow

8.1. Teste com Dados Válidos

Vamos testar usando cURL ou Postman:

curl -X POST https://api.lumina.app.br/v1/webhooks/wh_abc123xyz \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva",
    "email": "joao@example.com"
  }'

Resposta esperada:

{
  "success": true,
  "message": "Dados processados com sucesso",
  "userData": {
    "name": "João Silva",
    "email": "joao@example.com",
    "apiData": "Leanne Graham"
  },
  "timestamp": "2025-01-15T18:00:00Z"
}

8.2. Teste com Dados Inválidos

curl -X POST https://api.lumina.app.br/v1/webhooks/wh_abc123xyz \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva"
  }'

Resposta esperada:

{
  "success": false,
  "error": "Dados inválidos",
  "message": "Os campos 'name' e 'email' são obrigatórios",
  "received": {
    "name": "João Silva"
  }
}

8.3. Usar o Teste Manual

No dashboard:

  1. Clique em "Testar Flow"
  2. Insira os dados de teste:
    {
      "name": "Maria Santos",
      "email": "maria@example.com"
    }
    
  3. Clique em "Executar"
  4. Veja os resultados em tempo real

Passo 9: Visualizar Logs

  1. Vá para "Flows""Meu Primeiro Flow"
  2. Clique na aba "Execuções"
  3. Selecione uma execução da lista
  4. Você verá:
  5. Status da execução
  6. Tempo de execução
  7. Dados de cada nó
  8. Logs detalhados

Exemplo de Log

[10:30:00.000] Execution started
[10:30:00.050] Webhook received: {"name": "João Silva", "email": "joao@example.com"}
[10:30:00.100] If/Else: Condition evaluated to true
[10:30:00.150] HTTP Request: GET https://jsonplaceholder.typicode.com/users/1
[10:30:01.200] HTTP Request: Response received (200 OK)
[10:30:01.250] Transform: Data transformed successfully
[10:30:01.300] Execution completed (1.3s)

Passo 10: Melhorar o Flow

Agora que você tem um flow básico funcionando, vamos adicionar melhorias:

10.1. Adicionar Logging

  1. Adicione um nó "Log" após o HTTP Request
  2. Configure para registrar a resposta:
    {{
      {
        "message": "API Response",
        "data": $node.output.data,
        "status": $node.output.status
      }
    }}
    

10.2. Adicionar Retry

  1. Clique no nó HTTP Request
  2. Na aba "Advanced", configure:
  3. Max Retries: 3
  4. Retry Delay: 1000ms
  5. Timeout: 5000ms

10.3. Adicionar Variáveis

  1. Clique em "Configurações do Flow" (ícone de engrenagem)
  2. Na seção "Variables", adicione:
    {
      "apiBaseUrl": "https://jsonplaceholder.typicode.com",
      "apiTimeout": 5000
    }
    
  3. Atualize a URL do HTTP Request:
    {{ $vars.apiBaseUrl }}/users/1
    

Configuração Final do Flow

Estrutura Completa

{
  "name": "Meu Primeiro Flow",
  "description": "Flow de teste para aprender o básico",
  "variables": {
    "apiBaseUrl": "https://jsonplaceholder.typicode.com",
    "apiTimeout": 5000
  },
  "trigger": {
    "type": "webhook",
    "config": {
      "method": "POST"
    }
  },
  "nodes": [
    {
      "id": "node_1",
      "type": "if-else",
      "name": "Validar Dados",
      "config": {
        "condition": "{{ $trigger.body && $trigger.body.name && $trigger.body.email }}"
      }
    },
    {
      "id": "node_2",
      "type": "http-request",
      "name": "Buscar Dados da API",
      "config": {
        "method": "GET",
        "url": "{{ $vars.apiBaseUrl }}/users/1",
        "timeout": "{{ $vars.apiTimeout }}",
        "retry": {
          "maxRetries": 3,
          "retryDelay": 1000
        }
      }
    },
    {
      "id": "node_3",
      "type": "log",
      "name": "Log API Response",
      "config": {
        "message": "API Response",
        "data": "{{ $node.output }}"
      }
    },
    {
      "id": "node_4",
      "type": "transform",
      "name": "Processar Resposta",
      "config": {
        "transform": "{{ { success: true, message: 'Dados processados com sucesso', userData: { name: $trigger.body.name, email: $trigger.body.email, apiData: $nodes['node_2'].output.data.name }, timestamp: new Date().toISOString() } }}"
      }
    },
    {
      "id": "node_5",
      "type": "transform",
      "name": "Resposta de Erro",
      "config": {
        "transform": "{{ { success: false, error: 'Dados inválidos', message: 'Os campos name e email são obrigatórios', received: $trigger.body } }}"
      }
    }
  ]
}

Conceitos Aprendidos

Parabéns! Você aprendeu:

  • ✅ Como criar um flow
  • ✅ Como configurar triggers (webhook)
  • ✅ Como adicionar e conectar nós
  • ✅ Como usar variáveis ($trigger, $node, $vars)
  • ✅ Como fazer validações com If/Else
  • ✅ Como fazer requisições HTTP
  • ✅ Como transformar dados
  • ✅ Como testar flows
  • ✅ Como visualizar logs e debugar
  • ✅ Como configurar retry e error handling

Próximos Passos

Agora que você domina o básico, experimente:

  1. Integração com WhatsApp
  2. Crie um chatbot automatizado

  3. Processar Planilhas

  4. Automatize processamento de dados

  5. Explore Mais Nós

  6. Database Query
  7. Send Email
  8. Loop/ForEach
  9. Switch/Case

  10. Aprenda Conceitos Avançados

  11. Variáveis
  12. Expressões
  13. Referência de Nós

Dicas Importantes

1. Sempre Valide Dados de Entrada

// Bom
{{ $trigger.body && $trigger.body.email && $trigger.body.email.includes('@') }}

// Ruim
{{ $trigger.body.email }} // Pode dar erro se body for undefined

2. Use Nomes Descritivos

✓ "Validar Email do Cliente"
✗ "If/Else 1"

3. Adicione Logs em Pontos Críticos

Facilita debugging quando algo der errado.

4. Configure Retry em Requisições Externas

APIs podem falhar temporariamente - retry automático resolve isso.

5. Teste com Dados Reais

Use casos de uso reais do seu negócio para testar.

Precisa de Ajuda?


← Tutoriais | WhatsApp Integration →