00:00:00
Saber criar automações chega a ser uma
00:00:02
arte aos olhos de um dev, né? Agora,
00:00:04
conseguir criar um fluxo de trabalho bem
00:00:06
completinho que resolva aquelas tarefas
00:00:09
repetitivas é um verdadeiro sonho. Ainda
00:00:11
mais quando a gente consegue fazer isso
00:00:13
usando uma ferramenta open source
00:00:15
gratuita. E é isso que nós vamos te
00:00:17
ensinar nesse mão no código. Você deve
00:00:19
ter visto aí no título, né? Ao usar o
00:00:21
inen. Já conhece? Você cria workflows
00:00:24
com no e low code, podendo conectar API,
00:00:27
serviços e bancos de dados de forma
00:00:29
visual e escalável. Nós vamos criar um
00:00:31
workflow para verificar o status de
00:00:33
alguns sites e caso algum deles esteja
00:00:35
fora do ar, que ele mande uma mensagem
00:00:37
pra gente. E é claro que vamos te
00:00:39
mostrar como instalar, configurar e
00:00:40
utilizar essa ferramenta nesse tutorial.
00:00:43
É agora.
00:00:49
E seja muito bem-vindo a mais esse vídeo
00:00:51
aqui no Código Fonte TV, onde nós vamos
00:00:52
explorar o NAin, que é low code no code
00:00:55
e permite fazer personalizações com
00:00:57
JavaScript e Python e pode ser executado
00:01:00
de forma local ou em servidores
00:01:02
próprios. Nós vamos te mostrar como usar
00:01:03
local com o Docker e também através da
00:01:06
instalação em um VPS com o Docploy.
00:01:08
Nesse caso, vamos utilizar o nosso VPS
00:01:10
da Hostinger, que por sinal já tem um
00:01:12
plano especial pro Way Nhan. Com um
00:01:14
clique você já instala a ferramenta.
00:01:16
Isso porque o VPS já vem pré-instalado
00:01:18
com um template com um buntu e o NHN.
00:01:20
Dentro de um ambiente Docker, você
00:01:22
implanta de forma muito fácil e rápida
00:01:25
os fluxos de automação. E você ainda
00:01:26
pode usar um template para configurar o
00:01:28
Nin modo de fila para melhorar a
00:01:31
escalabilidade. Nós te indicamos
00:01:33
justamente porque além do NAin, você
00:01:35
ainda conta com todas as outras
00:01:37
vantagens de utilizar um VPS da
00:01:38
Hostinger. Só para citar algumas, eles
00:01:40
possuem excelente hardware, suporte,
00:01:43
backup semanais grátis e automáticos e
00:01:46
detector de malware. Você ainda tem até
00:01:48
30 dias para pedir reembolso e os
00:01:50
servidores você pode escolher no Brasil.
00:01:52
É, mas sobre o reembolso eu duvido muito
00:01:54
que isso aconteça, viu? Porque nós
00:01:56
estamos usando há anos as soluções da
00:01:58
Holdger e tem sido uma experiência
00:02:00
excelente com um preço muito bom. Então
00:02:02
corre aqui no link do VPS com o Nchain
00:02:05
para você conhecer aqui na descrição,
00:02:06
tá? E usando o nosso cupom código fonte
00:02:09
você ainda ganha um desconto extra. Bora
00:02:11
ver então como é que fica para instalar
00:02:13
o Nate local. Eu criei aqui um arquivo
00:02:16
Docker Compose. Vou usar a imagem
00:02:19
original deles, tá? Não vou fazer
00:02:21
nenhuma modificação na imagem. Fica
00:02:23
tranquilo que o link desse repositório
00:02:25
com essas configurações no GitHub a
00:02:28
gente vai deixar na descrição também,
00:02:29
mas na documentação do N também tem as
00:02:31
instruções para você usar via Docker. Tá
00:02:33
um pouquinho diferente dessas aqui, mas
00:02:35
tá valendo também. E vale lembrar que a
00:02:37
gente tá usando o Docker aqui através do
00:02:38
próprio VS Code, que tá muito fácil, né,
00:02:40
de utilizar. Tá? Não, se você já tem a
00:02:42
extensão dele aqui, fica moleza. Aí eu
00:02:45
configurei as variáveis de ambiente que
00:02:48
já vem na imagem do NHN, que é o NHN
00:02:51
host, o protocolo. Nesse caso aqui, a
00:02:54
porta eu vou manter padrão, tá? E a
00:02:55
gente pode configurar também o host, tá?
00:02:57
Aqui no meu arquivo ENV, eu já coloquei
00:02:59
aqui qual é o domínio, qual é o
00:03:00
subdomínio. Nesse caso aqui a gente vai
00:03:02
rodar local, tá? O importante, como a
00:03:04
gente trabalha também com datas e tudo,
00:03:06
é muito importante a gente configurar a
00:03:09
time zone, tá? Isso aqui não deixa de
00:03:11
configurar para não dar problema, tá? E
00:03:13
aí, nesse caso, a gente usa as variáveis
00:03:14
aqui no nosso Docker Compose, tá? Aqui
00:03:17
com as portas. Uma coisa que eu fiz
00:03:19
diferente aqui é que eu criei uma pasta
00:03:22
data justamente com os meus dados, tá?
00:03:24
Nesse caso aqui vai ser uma lista de
00:03:26
links que vai estar aqui, ó. Lista de
00:03:28
links que eu coloquei aqui. Bem simples,
00:03:30
num txt puro, né? É, essa pasta deita
00:03:33
também vai para dentro do docker, tá?
00:03:35
pra gente ter acesso a ela. E aí acabou,
00:03:38
a gente criou um volume também, ou seja,
00:03:40
se eu é reiniciar esse docker tudo, ele
00:03:43
vai manter todas as minhas configurações
00:03:44
lá e não vai perder. Aí para rodar, a
00:03:46
gente pode rodar no terminal ou vir
00:03:48
aqui, ó, e rodar todos os serviços. Ó,
00:03:50
como eu já baixei essa imagem uma vez,
00:03:54
então ele só startou aqui o contêiner.
00:03:57
Eu posso vir aqui, ó, ver aqui quais são
00:03:58
os contêiners que eu tenho, tá aqui, tá
00:04:00
vendo? Se eu quiser navegar, isso aqui
00:04:02
também é legal, né, dessa extensão. Se
00:04:03
eu quiser navegar nas pastas, vamos ver
00:04:05
se lá no home data, aqui, ó, já tá lá o
00:04:08
meu arquivo lá, o meu arquivo txt. Mas a
00:04:11
ideia é a gente rodar isso através do
00:04:13
nosso VPS lá na Hostinger, né? Pois é.
00:04:16
Aqui a gente usa o Doc Ploy, que é tipo
00:04:18
a Versel, tá? Ele cria tudo através de
00:04:20
contêiners Docker, então fica muito
00:04:22
simples. Eu já trouxe aqui o NHN aqui,
00:04:26
já tá criado, mas olha só que legal, ó.
00:04:28
Se eu quiser criar um outro tipo de
00:04:29
serviço nesse projeto, ele já tem um
00:04:32
template para vários tipos. Aqui eu
00:04:34
posso criar um banco de dados, eu posso
00:04:36
criar, né, várias coisas e também usar o
00:04:38
meu próprio Docker Compose para fazer
00:04:40
isso. E no Docploy, assim como outras
00:04:42
formas também que tem para você instalar
00:04:44
as aplicações no VPS da Hosting, você
00:04:46
pode, ó, Grafana, você tem, ó, o próprio
00:04:50
NHN, WordPress, vai navegando aqui os
00:04:53
templates que já estão prontos, né? Você
00:04:54
pode, obviamente, criar o seu, né? Mas
00:04:57
isso aqui é muito bom, facilita muito,
00:04:59
né? Porque a instalação fica ali em um
00:05:01
clique, né? Clicou, ele já prepara o
00:05:03
ambiente. Olha que legal. Dá para
00:05:04
dockerizar aqui o macOS e o Windows
00:05:06
também. Olha só que louco. Então é muita
00:05:09
facilidade realmente para você instalar,
00:05:11
pô, muito rápido para você poder
00:05:13
configurar as suas aplicações. E isso
00:05:16
deixa a gente desenvolver coisas bem
00:05:18
mais rápido, porque você roda local e
00:05:20
depois você joga isso aí lá pro seu
00:05:24
servidor para você ter acesso aí via
00:05:25
web. Uma vez a gente entrando em local
00:05:28
host na porta, a gente já tem aqui os
00:05:31
dados pra gente fazer a configuração. Só
00:05:33
você colocar o seu e-mail, ah, o seu
00:05:36
nome e a sua senha e rapidamente você
00:05:38
faz login e já tá pronto para usar. Uma
00:05:41
vez configurado, você já entra nessa
00:05:43
página aqui que é uma espécie de um
00:05:44
welcome, né? E aí, vamos fazer um
00:05:46
overview aqui. Lembrando que a gente
00:05:47
usou a imagem padrão do Chen e ele por
00:05:51
padrão, o banco de dados é um SK Lite,
00:05:53
mas ele também tem suporte ao post greed
00:05:55
também, tá? Então se você quiser trocar
00:05:57
isso, tem que ir nas configurações,
00:05:59
naquelas variáveis de ambiente e para
00:06:01
você fazer essa troca, tá? Então algumas
00:06:03
coisas que a gente tem aqui, por
00:06:04
exemplo, ó, como variáveis, ele é pago,
00:06:07
tá? Então é uma ferramenta open source,
00:06:09
é gratuita, você pode usar, mas tem
00:06:11
algumas coisas aqui que já são pro plano
00:06:13
pago. Obviamente se você tá usando
00:06:15
bastante, você vai sentir a necessidade
00:06:18
depois até de assinar, né? Mas já dá
00:06:20
para fazer muita coisa aqui. E ele tem
00:06:21
também uma parte aqui, ó, de
00:06:23
templates. Isso aqui ele já pega da web.
00:06:26
E aí você já tem coisas prontas aqui que
00:06:28
você pode utilizar. Eu achei muito
00:06:30
interessante porque você vem aqui, por
00:06:31
exemplo, em financeiro, ó, aí tem 77
00:06:34
aqui. Uhum. E aí ele diz, ó, crie o seu
00:06:37
primeiro chatbot de análise de dados com
00:06:40
inteligência artificial. E aí quando
00:06:41
você clica aqui na documentação, ele
00:06:43
abre o modelo ali, o workflow, mas
00:06:47
navegável, entendeu? Então você consegue
00:06:50
ver o workflow, não só em imagem, mas se
00:06:52
você quiser, poxa, como é que ele esse
00:06:54
cara configurou isso aqui? Você clica,
00:06:55
ele abre aqui para você ver realmente
00:06:58
como tá configurado. Então a
00:07:00
documentação é sensacional, cara. Dá
00:07:02
para aprender muito aqui com essa parte
00:07:04
aqui da documentação. E é legal que fica
00:07:06
bem prático, né? Porque você acha o
00:07:08
workflow, você acredita que seja o que
00:07:10
você necessita, pô, visualizando dessa
00:07:12
forma você já mata. Não é exatamente
00:07:13
isso que eu quero. Então é só seguir com
00:07:16
esse workflow, né? E aí você pode
00:07:17
baixar, você pode testar ele também, né?
00:07:19
Fora isso, aqui na configuração, a gente
00:07:21
vai em settings, você tem muitas
00:07:24
configurações, algumas realmente você
00:07:26
precisa desbloquear, né, usando um
00:07:28
plano, mas aquela coisa de os seus dados
00:07:31
pessoais, o próprio NHN é um API também,
00:07:34
você pode ativar uma chave, então tudo
00:07:36
que você fizer nele, você pode
00:07:38
automatizar com ele mesmo também, até
00:07:40
para uso externo, né? Tem aqui os
00:07:42
secrets, né? Nesse caso aqui tem que ser
00:07:45
com plano Enterprise também e várias
00:07:47
outras configurações. Acho que todos
00:07:49
aqui são pro plano Enterprise, mas o que
00:07:52
importa pra gente, pra gente poder
00:07:54
configurar as nossas coisas é o
00:07:56
workflow, as credenciais e as execuções.
00:08:00
Isso aqui é o log de todas as execuções
00:08:01
que foram feitas. Simples assim, não
00:08:05
tem e essa parte é gratuita. O que seria
00:08:08
então as credenciais? Quando a gente vai
00:08:11
usar qualquer coisa, vamos automatizar
00:08:13
usando o Telegram, vamos usar com o
00:08:15
Google Sheets, o Slack, o Slack ou sei
00:08:19
lá, o YouTube, qualquer coisa que você
00:08:21
pensar que precisa de API, a gente
00:08:23
precisa ter essa credencial já
00:08:25
pré-configurada. E isso a gente faz
00:08:27
justamente aqui. Então, por exemplo, a
00:08:29
gente vai usar nesse nosso o Telegram,
00:08:32
tá, para enviar as mensagens. Olha só
00:08:34
quantos já tem aqui já pré-programados
00:08:37
pra gente utilizar. Se a gente quisesse,
00:08:39
por exemplo, o Slack, como a Vanessa
00:08:41
falou, tem ali, ó. Se a gente quisesse o
00:08:44
WhatsApp, tem ali também. O próprio
00:08:46
Google Sheets
00:08:48
ó, tem ali também. Então, cara, tem
00:08:50
muita coisa. Nesse caso, a gente vai
00:08:52
configurar a credencial do Telegram.
00:08:55
Então, a gente seleciona aqui, já vem o
00:08:58
token para eu
00:09:00
preencher e eu vou salvar. Uma vez que
00:09:04
ele salva, ele já faz o teste, ó,
00:09:06
dizendo que já tá feito, tá verdinho
00:09:08
aqui, bonitinho. Vamos combinar, né?
00:09:10
Essa parte de pegar as credenciais e
00:09:12
tudo mais, acho que é a parte mais chata
00:09:14
de tudo isso, né? De todos esses
00:09:16
serviços. Cada um tem um jeito, né? O
00:09:18
Telegram, você chama um bote master lá e
00:09:21
conversa com ele que ele te passa. O
00:09:24
Google é enjoado que só, né? É, cada um
00:09:27
tem o seu jeito, né? Então isso vai
00:09:28
levar mais tempo do que a gente criar o
00:09:30
próprio workflow, tá? E aqui quando a
00:09:31
gente cria credencial, a gente tem
00:09:33
também, ó, uma parte de colaboração
00:09:34
também é paga e você pode ver outras
00:09:37
informações aqui, tá vendo? Quando foi
00:09:39
criado e etc. Então, uma vez que a gente
00:09:41
tem essa configuração aqui, a gente já
00:09:43
consegue usar no nosso workflow. Vamos
00:09:45
criar aqui um workflow. A gente pode
00:09:47
criar aqui um usando um agente de IA,
00:09:50
inclusive já tem suporte para MCP,
00:09:52
inclusive a gente mostrou esses dias
00:09:54
criando um MCP server, né? Dá para usar
00:09:57
agora também usando o Champ. Mas a gente
00:09:59
vai criar aqui um workflow do zero para
00:10:01
você ver que a tela do workflow também é
00:10:03
super simples. Os caras conseguiram
00:10:06
realmente fazer algo, é muito intuitivo,
00:10:08
né? Então aqui, ó, eu posso colocar o
00:10:10
nome do meu workflow, nesse caso aqui,
00:10:12
ó, status
00:10:14
sites, tá? Do código fonte.
00:10:25
Lembrando que se você já fez o seu
00:10:28
workflow ou você quer importar o
00:10:30
workflow de alguém, nesse menuzinho
00:10:32
aqui, você pode duplicar, fazer download
00:10:34
em arquivo Jason, tá? Então esse membro
00:10:36
que a gente vai criar, a gente vai
00:10:37
deixar também lá no repositório, tá?
00:10:39
Você pode importar, você pode importar
00:10:41
por arquivo, por URL e você tem as
00:10:44
configurações dele aqui, ó. Então você
00:10:46
tem o tipo de o motor ali deles, né, que
00:10:48
vai rodar o workflow. Você pode criar um
00:10:50
workflow, na verdade, que é o erro.
00:10:52
Então, se acontecer algum erro, você
00:10:54
roda um workflow. Olha que louco, né?
00:10:56
Tem o Time Zone, já tá tudo aqui
00:10:58
configurado e tem outras configurações
00:11:01
aqui. Bom, como a ideia é verificar ali
00:11:03
se o site tá ativo, a gente vai ter que
00:11:04
criar meio que um Chrome, né, que é
00:11:06
justamente para de tempos em tempos
00:11:08
fazer essa verificação. Então, acho que
00:11:09
esse é o primeiro passo ali do nosso
00:11:11
workflow, né? Todo workflow, ele precisa
00:11:13
de um trigger, ou seja, é um gatilho
00:11:15
para ativar. E tem vários trigger que
00:11:18
você pode utilizar, tá? Cada passo desse
00:11:22
desse workflow, ele chamam de nó, tá?
00:11:24
Então essa nomenclatura é importante pra
00:11:26
gente saber. Se a gente vai aqui em
00:11:28
adicionar ou aqui também ele vai dizer,
00:11:30
ó, adicionar trigger, já que não tem
00:11:33
nada, né? manualmente a partir de um
00:11:35
evento de alguma aplicação ou agendado,
00:11:38
que é esse aqui que é o Chrome, ou seja,
00:11:40
eu posso dizer de quanto em quanto tempo
00:11:41
ele vai ser executado a partir de um web
00:11:44
hook, ou seja, aconteceu algo numa URL,
00:11:47
ele ativa ali o workflow ao submeter um
00:11:50
formulário, cara, e muita coisa, ó, a um
00:11:53
uma mensagem de chat e outras coisas, ó,
00:11:56
alterações em arquivo, você pode criar o
00:11:59
seu o trigger que você quiser. Então,
00:12:01
por exemplo, eu vou criar um desse aqui,
00:12:02
ó, que é um manual. Ou seja, se eu
00:12:05
clicar aqui, ele já executa. E eu posso
00:12:07
criar também ao mesmo tempo, ó, a, como
00:12:10
já tem um trigger, ele já abriu outras
00:12:11
opções. Agora, ó, eu quero voltar no
00:12:14
trigger e aqui eu coloco um trigger de
00:12:17
Chrome job, né? Então, por exemplo, se
00:12:19
eu quiser verificar, vamos verificar
00:12:21
site. Vamos verificar aqui de 10 em 10
00:12:24
minutos, por exemplo. E aí não precisa
00:12:26
nem explicar muito, né? Que tá tudo bem
00:12:27
intuitivo. Colocou ali 10 minutos, você
00:12:29
adiciona essa regra a configuração desse
00:12:32
pedaço acho que já tá pronto. Se eu
00:12:34
quiser adicionar outra regra aqui, ó.
00:12:37
Ah, mas eu quero também executar uma vez
00:12:39
por mês, duas vezes por semana. Ele ele
00:12:41
acrescenta também isso, tá? Você pode
00:12:43
fazer. Então, colocamos aqui. Olha que
00:12:46
você ele já tá aqui. São dois triggers
00:12:48
que nós teremos então no nosso workflow,
00:12:50
mas a gente vai precisar ler um arquivo,
00:12:52
não é? Então a gente pode vir agora
00:12:54
aqui, tá tudo categorizado por várias
00:12:57
formas diferentes de você executar, né?
00:13:01
Então, ó, já tem aqui de IA, ó, agente
00:13:04
de a
00:13:05
openi. Cara, muita coisa, ó.
00:13:07
Classificação de texto, tudo. Então,
00:13:08
você tem que explorar isso aí para você
00:13:11
ver a quantidade de coisas que dá para
00:13:12
fazer. É muita coisa, mas como a gente
00:13:14
quer ler um arquivo, então vou botar
00:13:15
aqui readr file,
00:13:19
ó. Então nesse caso aqui eu vou ler um
00:13:21
arquivo. Lembra o caminho do nosso
00:13:23
arquivo? Home data? Então é
00:13:28
meus. Qual é a vantagem disso? Se ele
00:13:31
não achar o arquivo, ele vai dizer aqui.
00:13:34
Então eu posso tocar aqui em testar esse
00:13:36
passo, ó. Olha lá. Ele leu o arquivo e
00:13:39
ele já mostrou os dados dele aqui, ó.
00:13:41
Nesse caso você vê que voltou um
00:13:43
binário. Se eu colocar em Jason, ó, ele
00:13:45
não volta os dados. Então é um arquivo
00:13:47
de texto, as informações estão em
00:13:49
binário, tem que guardar essa
00:13:50
informação, tá? No caso de tabela, você
00:13:52
vê, ó. Então você consegue ver um output
00:13:54
com várias informações. Nesse caso aqui,
00:13:56
com, por exemplo, quando a gente coloca
00:13:58
para visualizar o arquivo, aí ele mostra
00:14:01
aqui o conteúdo que está no arquivo, né?
00:14:04
Mas senão ele já traz todas as
00:14:05
informações do arquivo em si. E aí você
00:14:07
vê aqui, ó, o input dele foi o o
00:14:11
trigger, tem esse aqui que a gente tá
00:14:13
configurando e a saída. Tem outras
00:14:15
opções que a gente pode colocar, como o
00:14:17
nome do arquivo, nesse caso aqui, né?
00:14:19
Então, se a gente quiser especificar
00:14:20
certinho o nome do arquivo, a extensão,
00:14:23
o mini type, dá pra gente fechar essa
00:14:26
configuração. Se a gente for aqui em
00:14:28
settings, praticamente todos têm isso
00:14:29
também, a gente pode, por exemplo, se o
00:14:32
arquivo não existir e deu problema,
00:14:34
então eu posso forçar sempre voltar
00:14:36
algum tipo de dado. Por exemplo, se der
00:14:38
um erro, nesse caso aqui, ó, ele para o
00:14:40
workflow ou ele continua fazendo o erro
00:14:43
ou o acerto, né? Ele tem essas duas
00:14:46
opções ou simplesmente continua e que se
00:14:48
dan esse passo aqui não seria ignora o
00:14:50
erro que foi retornado. Então você vê
00:14:52
que ele tá aqui, eu posso colocar ele
00:14:54
aqui, ó. Se eu quiser testar o workflow,
00:14:56
eu posso clicar aqui, ó, e ele testa
00:14:59
aqui, ó. Testa aqui e foi. Uhum. Se eu
00:15:01
vier por aqui, ele também vai, ó. Tá?
00:15:03
Então, nesse caso, olha, se a gente vier
00:15:05
aqui em execução, a gente consegue ver
00:15:07
aqui já o histórico de vezes que a gente
00:15:09
executou, ver o que que aconteceu em
00:15:11
cada execução. Agora, o interessante que
00:15:13
você pode criar também um nó de
00:15:15
configuração, que aí justamente ajusta,
00:15:17
por exemplo, ali a gente colocou o nome
00:15:19
do arquivo, isso poderia estar numa
00:15:20
espécie de uma variável. A gente vai
00:15:21
utilizar também as informações do
00:15:23
Telegram, que também podem estar nesse
00:15:25
nó de configuração, né? Até porque se
00:15:27
você precisar reutilizar ele durante o
00:15:29
seu fluxo, você só tem ali um lugar onde
00:15:32
tem as variáveis. Então a gente tem essa
00:15:34
opção aqui do edit fields. Olha que
00:15:36
interessante. A gente pode trazer um
00:15:37
Jason com todas as configurações ou
00:15:40
criar um mapeamento dos campos
00:15:42
manualmente. Se eu colocar aqui, por
00:15:44
exemplo,
00:15:46
arquivo links e aí eu posso dizer
00:15:49
justamente onde que ele tá, ó. É o home
00:15:56
data, então tá aqui, ó. tocar o o teste
00:16:00
aqui. Tá funcionando. Só que o que
00:16:02
acontece? Eu preciso desse cara aqui
00:16:05
antes, ó. Senão não vou conseguir pegar,
00:16:07
né? Então, se eu colocar ele aqui,
00:16:11
ó, vou excluir. Coloco ele
00:16:15
aqui, excluo aqui e ele vai vir
00:16:18
conectado aqui, ó. Olha só o que
00:16:21
acontece agora. Quando eu venho aqui
00:16:23
para ler o nome do arquivo, ao invés de
00:16:25
colocar fixo, eu posso colocar uma
00:16:29
expressão. Aí eu vindo aqui, eu venho,
00:16:33
olha, aqui em edit fields, eu consigo
00:16:37
pegar justamente o nome desse arquivo,
00:16:39
ó. Eu arrastei e ele já me dá até o
00:16:42
resultado, ó. Qual é o nome do meu
00:16:44
arquivo? Deixa eu só conferir se é isso
00:16:48
mesmo. É traço, ó, no_ore.
00:16:51
Então, eu posso vir aqui,
00:16:57
atualizar e colocar um traço. Agora eu
00:17:00
posso até testar o meu workflow. Ó lá,
00:17:02
ele conseguiu ler o arquivo, né? Mas
00:17:04
lembra que eu falei que o arquivo TXT
00:17:06
ele tá em binário? Então a gente precisa
00:17:08
converter esse binário para um tipo de
00:17:10
dados, nesse caso aqui para um uma
00:17:12
string. Como é que a gente pode fazer
00:17:13
isso com código, que eu acho que na
00:17:15
minha opinião é o melhor, ou dá para
00:17:18
fazer de alguma forma aqui, eu acho que
00:17:19
de conversão de dados, mas eu prefiro
00:17:22
código. Então a gente tem aqui, ó, uma
00:17:24
área para rodar código. E aí o que eu
00:17:26
fiz aqui foi bem simples, ó. Deixa eu
00:17:28
abrir aqui para ver melhor. Eu peguei o
00:17:30
item zero, ó, ele é binário, tá vendo? E
00:17:32
aí eu peg o buffer dele e converti ele
00:17:35
em string. O TF8 tô com os dados aqui.
00:17:38
Agora eu usei uma expressão regular
00:17:40
quebra a linha. Pega os dados aqui e
00:17:42
quebra a linha de cada um e depois faz
00:17:45
um trim se tiver algum espaço em branco
00:17:47
para não ter problema com links, né? O
00:17:49
que importa aqui no fim é que a gente
00:17:51
retorna um Jason com as URLs, né? faz um
00:17:54
map aqui dessas URLs e retornam um Jason
00:17:57
disso. Ou seja, a gente já preparou
00:17:58
todos os dados que a gente precisa para
00:18:00
fazer a verificação de cada um dos
00:18:01
sites, né? E aí você tá vendo que eu
00:18:03
chamei ele de links aqui, tá vendo? Esse
00:18:06
aqui é o nome da propriedade. Eu tenho
00:18:08
que voltar aqui, ó, na leitura do
00:18:11
arquivo e eu seleciono qual é o campo de
00:18:15
saída dele, ó. Então, vou colocar link,
00:18:18
vou testar aqui. Aqui funcionou.
00:18:21
Posso vir aqui agora e testar
00:18:24
também. Aí funcionou. Tá vendo a saída,
00:18:27
ó? Já é aqui o os links. Então, por
00:18:30
exemplo, aqui a saída eu posso colocar,
00:18:32
olha, em formato de tabela. Deixa eu
00:18:34
mexer aqui, ó. Fiz um ajuste aqui na
00:18:36
minha expressão regular. Agora sim, ó,
00:18:38
ele tá voltando a tabela, Jason. Tá
00:18:41
vendo? Então, todas as informações
00:18:43
certinhas aqui dos links. Bom, agora nós
00:18:45
já temos ali a lista de sites que a
00:18:47
gente quer verificar. O próximo passo é
00:18:48
justamente fazer essa requisição para
00:18:50
ver se eles estão voltando ali com o
00:18:52
status 200 ou qualquer outro que a gente
00:18:54
vai mandar mensagem, né? Então vemos
00:18:56
aqui http request, a gente vai fazer
00:18:59
justamente um get e na URL a gente vai
00:19:03
usar uma expressão. Aqui no código a
00:19:05
gente tem a URL, ó. Se a gente arrastar
00:19:07
para cá, ele já vai trazer quais são as
00:19:09
URLs que a gente vai testar. E aí se a
00:19:10
gente quiser, olha, testar aqui, ó, a
00:19:12
gente já pode fazer um teste para ver o
00:19:14
que que ele vai trazer. E ele vai
00:19:15
trazer, na verdade, ó, se eu colocar um
00:19:17
Jason, os dados do site,
00:19:21
todos, todos, só que só trouxe os dados.
00:19:24
Na verdade, eu quero todas as
00:19:26
informações, né? Então, nesse caso, para
00:19:28
não voltar só os dados, eu preciso
00:19:30
adicionar uma opção. Eu vou aqui em
00:19:33
response e nesse caso, eu vou voltar só
00:19:37
os dados, mas também o status, ó. Uhum.
00:19:39
Tá? Então eu posso testar
00:19:42
novamente. E agora a gente tem, ó,
00:19:44
status code 200. É isso que a gente
00:19:46
quer. Mas só complementando, se a gente
00:19:48
fizer uma chamada e voltar algo
00:19:51
diferente de R200, ela na verdade ele
00:19:53
vai voltar um erro. Então o que a gente
00:19:54
precisa configurar aqui é que ao dar o
00:19:57
erro a gente
00:19:58
continua. Olha só o que ele vai fazer.
00:20:00
Ele vai voltar, olha, um caminho pro
00:20:02
sucesso e um caminho pro erro. Então a
00:20:04
gente vai precisar configurar justamente
00:20:06
o erro. A gente vai testar isso daqui a
00:20:07
pouco. A gente tem a saída desse nó para
00:20:09
quando as informações tiverem corretas e
00:20:12
o quando tiver um erro, né? Nesse caso,
00:20:15
quando a URL ali não for encontrada, eu
00:20:18
adicionei uma URL que não existe
00:20:20
justamente pra gente testar esse nó. E
00:20:22
aí a gente vai precisar utilizar um nó
00:20:23
de if, justamente para verificar esses
00:20:26
dados, ó. Então, como eu já tenho aqui
00:20:27
um nó que não existe, ó, e o que eu
00:20:29
preciso é justamente o status, eu posso
00:20:32
colocar ele aqui e verificar, ó, se ele
00:20:35
não for igual a
00:20:39
200, eu sei que teve um problema. Ó,
00:20:44
nesse caso aqui, ó, ele passou, tá
00:20:45
vendo? Quando eu testei, então,
00:20:47
realmente, o problema. Aí sim a gente
00:20:49
envia a mensagem via Telegram.
00:20:51
Escolhemos o Telegram e vamos enviar uma
00:20:53
mensagem de
00:20:55
texto. Agora sim, olha, já pega aqui a
00:20:57
credencial que a gente testou e vamos
00:21:00
mandar essa mensagem. Então, pra gente
00:21:02
configurar, a gente tem o ID que a gente
00:21:06
vai configurar aqui na parte de config,
00:21:10
lembra? Então, eu posso criar aqui um um
00:21:12
campo chamado
00:21:15
Telegram
00:21:20
chat aí. Eu preencho aqui com o valor do
00:21:23
chat ID e aí a gente já consegue
00:21:26
utilizar no nó. Então, para configurar o
00:21:27
chat ID, a gente pode justamente vir
00:21:30
aqui, ó, no nó de edit fields, que é
00:21:35
justamente onde colocou as variáveis ali
00:21:36
de configuração. E aí ele já traz aqui o
00:21:40
o valor. E aqui a gente pode colocar o
00:21:43
chat, o que que a gente vai escrever na
00:21:44
tela.
00:21:45
Bom, aqui é abrir aqui essa essa telinha
00:21:48
um pouco maior e aí eu escrevo um texto,
00:21:50
nesse caso, usando aqui as variáveis,
00:21:52
olha, URL e eu colocando aqui a data,
00:21:55
né? Interessante que quando a gente
00:21:57
escreve isso aqui, ele já até mostra
00:22:00
aqui, olha como vai ficar. Se a gente
00:22:02
escrever alguma coisa errada que não
00:22:04
existir, ele já diz aqui que tá
00:22:07
indefinido. Agora sim, espero que você
00:22:09
tenha conseguido entender. Vamos fazer
00:22:12
um
00:22:16
teste. Viu que ele executou, encontrou
00:22:18
um erro. Os outros sites aqui estão no
00:22:21
ar. Ainda bem. Testando aqui no meu
00:22:24
Telegram. Olha só, já tá o meu bote lá.
00:22:26
E ele já trouxe a mensagem. Olha, ó.
00:22:28
Lindo. Só não funciona a quebra de
00:22:30
linha, né?
00:22:31
Quebra de linha. A gente vai ter que ver
00:22:32
o que que a gente fez aqui de errado.
00:22:34
Agora fala a verdade, é simples de fazer
00:22:36
esse workflow, não é? Não gostou? Então
00:22:39
o que que fica de dica? É você ter as
00:22:41
suas credenciais e saber exatamente o
00:22:44
que você quer antes de fazer. Dá uma
00:22:45
navegada, vê quais são as
00:22:46
possibilidades, tem muita coisa. E se
00:22:48
você curtiu, pede pra gente mais
00:22:51
automações que a gente vai criar e vai
00:22:52
mostrar para vocês. Eu quero muito
00:22:54
testar MCP, testar com o Open AI. Eu já
00:22:57
testei, na verdade, tá? Mas se você
00:22:59
quiser coisas mais complexas, diz aqui
00:23:01
nos comentários o que que você precisa e
00:23:03
a gente vai elaborar junto aqui para
00:23:04
trazer para você também. Espero que você
00:23:05
tenha curtido aí esse tutorial, né?
00:23:07
Uhum. Ficou um pouquinho grande, mas
00:23:09
valeu a pena, viu? E a gente se vê no
00:23:10
próximo vídeo. Ciao. Ciao.