Ações

Os nós de ação fazem algo acontecer a cada item: chamam uma API, consultam ou gravam num banco, enviam um e-mail, geram arquivos, falam com outros sistemas. Vários usam uma credencial.

HTTP Request

Chama uma API HTTP (GET, POST, PUT, PATCH, DELETE ou HEAD) por item. Informe a URL (que pode usar {{ … }} com dados do item), os cabeçalhos — um por linha, no formato Nome: valor — e, nos métodos com corpo, o conteúdo a enviar. A autenticação é opcional e vem de uma credencial. O HEAD traz só o código e os cabeçalhos da resposta, sem o conteúdo: use-o para conferir se um endereço responde sem baixá-lo.

Redirecionamentos

Por padrão, o nó não segue redirecionamentos: uma resposta 3xx chega como está, com o código e o cabeçalho de destino. Marque Seguir redirecionamentos para o nó ir até o endereço final, até o Máximo de redirecionamentos (5 por padrão, até 10); passando disso, o item volta com erro. Com a opção marcada, o item traz também url_final (onde a chamada chegou) e redirecionamentos (quantos saltos houve).

Depois de um redirecionamento 301, 302 ou 303, a chamada seguinte é feita como GET, sem corpo. A autenticação só acompanha a chamada enquanto ela continua no mesmo servidor — mesmo protocolo, domínio e porta.

Endereços da rede interna

O nó recusa endereços da rede interna, tanto no endereço informado quanto em cada redirecionamento. Se o endereço resolver para um IP privado, de loopback ou de link local, a chamada não é feita e a recusa segue o Em caso de erro da aba Config, como qualquer falha de comunicação. Use o endereço público do serviço; para bancos e sistemas que só existem dentro da rede do cliente, use o agente local.

Ao seguir redirecionamentos, os cabeçalhos que você escreveu também ficam para trás quando o endereço muda de servidor — só Accept, Accept-Language, User-Agent e Content-Type acompanham. E um redirecionamento 307 ou 308 que peça para reenviar o corpo a outro servidor não é seguido: o nó não reenvia os dados e o item volta com erro.

O que vem de volta

O campo O que vem de volta decide como a resposta chega ao item:

  • Texto ou JSON (padrão) — o corpo vem no campo body, já entendido como JSON quando o serviço responde em JSON.
  • Um arquivo (PDF, planilha, imagem…) — o corpo vira um arquivo anexado ao item, em vez de texto. É o que permite baixar um PDF ou uma planilha de uma API e mandá-lo como anexo do Enviar e-mail, ou entregá-lo ao Google Drive.

Escolhendo arquivo, aparecem mais dois campos: Propriedade binária de saída — o nome pelo qual os próximos nós encontram o arquivo, data por padrão — e Nome do arquivo. Deixe o nome em branco para usar o que o servidor informar; se ele não informar, o nó usa o final da URL.

Ritmo das chamadas

Muitas APIs limitam quantas chamadas aceitam por período e recusam o excesso. Na aba Config você diz esse limite ao nó, no mesmo formato em que a API o publica:

Campo Para que serve
Máximo de chamadas Quantas chamadas o nó pode fazer. Em branco, ele chama o mais rápido que conseguir
A cada O período do limite: segundo, minuto (padrão) ou hora

O limite vale para o nó inteiro, não para cada item: com 100 a cada minuto, um lote de mil itens sai espaçado, respeitando a conta.

Ainda na aba Config, Repetir quando a API recusar por excesso de chamadas trata o caso em que a recusa acontece mesmo assim. Ligada, o nó espera o tempo que a própria API pedir — no máximo um minuto por tentativa — e chama de novo, até o número de Tentativas (3 por padrão, no máximo 10). Se a API não disser quanto esperar, a espera vai dobrando a cada tentativa. Esgotadas as tentativas e a recusa continuando, o item sai marcado como erro, com o aviso de reduzir o máximo de chamadas do nó.

A opção vem desligada: sem ela, a recusa chega como um item comum, com o código da resposta, e o fluxo segue como se a chamada tivesse acontecido — o que é o comportamento que os fluxos já montados esperam.

Uma resposta com código de erro (4xx, 5xx) não interrompe o fluxo: ela chega normalmente, com o status e o corpo, para você decidir o que fazer com um IF. Já uma falha de comunicação (servidor fora do ar, nome não resolvido, tempo esgotado) é uma falha do nó e segue o Em caso de erro da aba Config — que, por padrão, encerra a execução. Veja Ajustes do nó. Para interromper de propósito, use Marcar erro.

Rastrear site

Percorre as páginas de um site público a partir de um endereço e devolve um item por página visitada. Serve para diagnosticar um site: links quebrados, imagens pesadas, formulários e os textos que cada página mostra.

Informe o Endereço do site — pode vir sem https://, como www.exemplo.com.br. O nó começa por ele e segue os links do próprio site até a Profundidade escolhida (quantos cliques a partir da página inicial, 2 por padrão) e até o Máximo de páginas (30 por padrão, até 200). Se o endereço redirecionar, de http para https ou para o www, o site passa a ser o endereço final.

Cada item traz os campos do item de entrada e mais:

Campo O que traz
site O endereço pedido
url, url_final, status, erro A página visitada, onde ela chegou, o código da resposta e, quando a página não respondeu, o motivo
titulo, meta_descricao, h1, ctas O título, a descrição, os títulos principais e os textos de botões e chamadas para ação
links_internos, links_externos Quantos links diferentes a página tem
links_quebrados Os links da página que não respondem ou respondem com erro, cada um com url, status, erro e ancora (o texto do link)
imagens, imagens_sem_alt Quantas imagens a página tem e quantas estão sem texto alternativo
imagens_pesadas As imagens acima do limite escolhido (300 KB por padrão), com src e bytes
formularios Os formulários da página: para onde enviam, quantos campos pedem, de que tipo e o texto do botão
formularios_terceiros Formulários montados por ferramentas como RD Station, HubSpot, Google Forms, Typeform, Jotform e Microsoft Forms
texto O texto visível da página, até 6 mil caracteres

Cada link e cada imagem são conferidos uma vez só, mesmo que apareçam em várias páginas, até o Máximo de links e de imagens verificados (300 por padrão). Links para outros sites também são conferidos, mas não visitados.

Para não sobrecarregar o site visitado, o nó espera entre uma requisição e outra (Espera entre requisições ao site, 500 ms por padrão) e respeita o robots.txt do site — desmarque Respeitar o robots.txt do site apenas num site seu. Por isso, cada site leva alguns minutos, e a análise de um site para em 15 minutos: o que faltar não entra no resultado. Para analisar vários, ponha o nó num sub-fluxo e chame-o com Executar fluxo, uma execução por site. Os campos da página (url, status, titulo, texto…) substituem os de mesmo nome do item de entrada.

Duas coisas o nó não enxerga:

  • Conteúdo montado por JavaScript depois que a página carrega. Um formulário embutido por script aparece em formularios_terceiros, mas os campos dele não são contados.
  • Endereços da rede interna, como no HTTP Request: o endereço inicial, os links e os redirecionamentos que apontam para dentro são recusados.

Para montar um relatório, use Separar lista num campo de lista (links_quebrados, imagens_pesadas) e Agregar para juntar as linhas. Ao levar para o HTML um texto que veio do site, passe-o pela função escapeHtml(), que troca <, >, & e aspas pelas entidades correspondentes.

Banco SQL

Executa um comando SQL num banco externo, usando uma credencial de banco — na credencial você escolhe o banco: MySQL/MariaDB, PostgreSQL ou SQL Server. Não é só consulta: um SELECT devolve uma linha por item para os próximos passos, e um comando de escrita (INSERT, UPDATE, DELETE) devolve a quantidade de linhas afetadas.

Os {{ … }} na consulta

Vale para os quatro nós de banco desta página — Banco SQL, SQL Server, Oracle e Banco local (via agente).

Num valor, escreva o {{ … }} onde o valor entra, com as aspas normais. O nó envia o conteúdo do item separado da consulta, e é isso que impede um texto vindo de fora — o corpo de uma chamada externa, um campo digitado pelo cliente — de virar comando no seu banco:

SELECT * FROM clientes WHERE id = {{ $json.id }}
SELECT * FROM clientes WHERE nome LIKE '%{{ $json.termo }}%' AND uf IN ({{ $json.ufs }})

Nome de tabela ou de coluna é outra coisa: nessa posição banco nenhum aceita um valor. Quando o nome vem do item, escreva-o com cerquilha — {{# … }}:

SELECT * FROM {{# $json.tabela }} ORDER BY {{# $json.coluna }}

O nome pode ter letras, números e _ $ #, em até três partes separadas por ponto (base.esquema.tabela); qualquer outra coisa é recusada. Nome fixo continua escrito direto na consulta, sem chaves.

Um {{ … }} comum logo depois de FROM, JOIN, INTO, UPDATE, ORDER BY ou GROUP BY é recusado, com o aviso de trocar pela forma com cerquilha — antes o banco devolvia um erro sem pista, ou pior, ORDER BY simplesmente ordenava errado sem reclamar. Consultas que só usam {{ … }} em valores seguem como estavam.

Cada execução leva um comando só: SELECT …; DELETE … no mesmo campo é recusado antes de chegar ao banco.

SQL Server

Mesmo comportamento do Banco SQL, com uma credencial própria de SQL Server — use este nó quando precisar dos ajustes específicos dela: se confia no certificado do servidor (o padrão, útil em rede interna com certificado próprio) e se exige criptografia na conexão.

Oracle

Mesmo comportamento, com uma credencial de Oracle. Na credencial, identifique o banco por Service Name (recomendado) ou por SID. No Oracle, escreva a sentença sem o ponto e vírgula final.

Banco local (via agente)

Consulta um banco que não está publicado na internet — um arquivo Access (.mdb/.accdb), por exemplo — através de um agente instalado na rede onde o banco vive. Escolha o Agente local, a Conexão e escreva o SQL; o resultado volta como items, igual aos demais nós de banco. Ajuste o Timeout ao tempo que a consulta costuma levar: esgotado o prazo, o nó falha avisando que o agente não respondeu. Veja Agente local para instalar e registrar.

Enviar e-mail

Envia um e-mail por item, em texto ou HTML, usando uma credencial SMTP. Além do destinatário, aceita CC, BCC, nome do remetente e Reply-To — todos com {{ … }}, e cada campo aceita vários endereços separados por vírgula ou ponto e vírgula.

Em Anexos — propriedades binárias você informa quais arquivos do item seguem junto (data é o nome padrão). É assim que o PDF do RM — Gerar Relatório ou a saída do Salvar em arquivo viram anexo. Separe por vírgula para mandar mais de um.

Enviar e-mail (modelo)

Envia um e-mail a partir de um modelo já cadastrado, em vez de digitar o texto no nó. Escolha o Modelo e preencha as variáveis que ele pede — cada valor aceita {{ … }} com dados do item. O assunto e o corpo vêm do modelo; aqui você define só destinatários, CC, BCC, nome do remetente e Reply-To. Use quando o mesmo texto se repete em vários fluxos e você quer mantê-lo num lugar só — veja Modelos de e-mail para escrever e manter o texto.

Salvar em arquivo

Transforma o conteúdo de uma variável do item num arquivo que segue anexado ao item, pronto para ser enviado por e-mail ou entregue ao Google Drive.

Campo Para que serve
Conteúdo (variável) O que vai virar arquivo, por exemplo {{ linhas }}
Formato JSON (formatado), Texto (.txt), CSV (planilha) ou XML
Separador do CSV Ponto e vírgula (;), que é o que o Excel em português espera, ou Vírgula (,)
Elemento raiz do XML A tag que envolve o conteúdo. Padrão itens
Nome do arquivo Como o arquivo será chamado; a extensão é acrescentada se faltar
Propriedade binária de saída Nome pelo qual os próximos nós encontram o arquivo (padrão data)

Sobre os formatos: no Texto, uma lista sai com uma linha por item. No CSV, uma lista de registros vira tabela — as colunas são todos os campos que aparecem, mesmo os que só existem em alguns registros, para nenhum dado se perder no caminho.

O arquivo trafega junto com o item durante a execução; ele não fica guardado no sistema depois.

Ler CSV

Lê um CSV e transforma cada linha num item.

Campo Para que serve
Fonte do arquivo Variável binária (do item), para um arquivo que chegou de um passo anterior, ou Subir arquivo manualmente
Propriedade binária Onde está o arquivo no item, quando a fonte é o próprio item
Separador Vírgula, ponto e vírgula, tabulação, barra vertical ou outro de sua escolha
Primeira linha é cabeçalho Ligado, os nomes das colunas viram os campos do item; desligado, saem como col_0, col_1…
Codificação UTF-8 ou ISO-8859-1/Latin1 (planilhas salvas pelo Excel em português costumam ser Latin1)

Se o arquivo vier vazio ou faltar no item, a linha segue marcada com o motivo e o restante do lote continua.

Ao subir o arquivo pelo próprio nó, ele passa a fazer parte do fluxo e é carregado a cada execução — bom para tabelas de referência pequenas. Para arquivos grandes, baixe por HTTP ou pelo agente e leia pela variável binária.

Como os arquivos circulam entre os nós

Arquivo, aqui, é algo que viaja junto com o item sob um nome — data, por padrão. Quem produz arquivo (Salvar em arquivo, RM — Gerar Relatório, HTTP Request com o retorno em arquivo, Google Drive — Arquivos ao baixar) grava sob esse nome; quem consome (Ler CSV, Enviar e-mail, Google Drive — Arquivos ao enviar) pergunta por ele. Se um passo já anexou algo, o seguinte pode usar outro nome e os dois convivem no mesmo item.

Um caminho completo, de ponta a ponta:

RM — Consulta SQL  →  Salvar em arquivo (JSON, "relatorio")  →  Enviar e-mail (anexos: relatorio)
Google Drive — Arquivos (baixar)  →  Ler CSV  →  Editar campos  →  Banco SQL
HTTP Request (retorno em arquivo)  →  Enviar e-mail (anexos: data)

Marcar erro

Encerra a execução em erro, com a mensagem que você escrever. Use quando uma condição torna o restante do fluxo inválido e você quer que a execução conste como falha (visível no Monitor e capturável por um gatilho de Erro).

Google Drive

Dois nós — Google Drive — Arquivos e Google Drive — Compartilhamento — cuidam de listar, baixar, enviar e compartilhar arquivos. Veja Google Drive.

Controle de acesso Dimep

Há nós dedicados para ler as marcações das catracas e para manter pessoas, credenciais, visitantes, visitas e veículos. Veja Dimep.

Outros sistemas LBHM

Os nós Tasks (criar, atualizar, listar, consultar e tópicos), Utils (consultar e buscar CEP) e LIP (notificar) conversam com os demais sistemas LBHM. Veja Integrações LBHM.


Para falar especificamente com o TOTVS RM, veja os nós do TOTVS RM.