Seja muito bem-vindo, seja muito bem-vinda a essa aula, uma masterclass, que finalmente você vai sair daqui com bot para você chamar de seu, que você criou usando o N8n, usando os assistants da OpenAI e uma API não oficial de WhatsApp, que é a Zapster, que eu vou mostrar para você aqui passo a passo. E o que nós vamos criar aqui hoje? Nós vamos criar aqui bot que você vai conectar o teu número e você vai poder falar com você mesmo e o bot vai responder, tá? Então, você não vai precisar comprar número, você não vai
precisar assinar nada, além da própria OpenAI. Eu vou usar só ferramentas ou gratuitas ou no free trial, tá? E o objetivo aqui não é para você já criar bot super completo e já vender, já colocar em produção e vender. A ideia aqui é mostrar para você como que você pode criar bots usando o N8n. É uma introdução, digamos assim. E você já tem produto na tua mão, tá? Você já pode ter protótipo na tua mão usando ferramentas gratuitas ou no free trial, beleza? que a gente vai criar? Eu vou mostrar pra você aqui na minha
tela. E a ideia é a gente criar personal GPT, tá? Não é personal trainer. Depois que eu coloquei esse nome aqui, eu fiquei pensando, putz, acho que a galera vai se confundir com personal trainer, mas não é. É chat GPT, só que pessoal, tá? Você não vai precisar mais usar o chat GPT da OpenAI. Você pode se conectar com os assistants da OpenAI via API, tá? Que eu vou mostrar pra você aqui. e você pode conversar com você mesmo, tá? Tem algumas coisinhas que nós vamos ter que arrumar para que isso funcione, mas não se
preocupe que aqui você vai entender do zero como funciona tudo isso, beleza? Considere essa Masterclass aqui, essa aula, como se fosse uma introdução aos Assistents da OpenAI, ao N8n, a ferramentas gratuitas, tá? e uma preparação para que você consiga entrar na nossa comunidade, na comunidade AI Builders, e aproveitar ainda mais as aulas que já tem lá. Então, se você já quer pular daqui e começar a criar produtos prontos, colocar em produção com ferramentas oficiais e tudo mais, não perca tempo, entra na nossa comunidade. Eu vou deixar o link aqui embaixo para você entrar. Todo mês,
praticamente, o preço está aumentando, porque cada vez mais tem mais conteúdo e mais pessoas estão entrando. e lá você vai ter tudo que você tem aqui só que muito mais profundo, muito mais profissional digamos assim né porque você vai usar ferramentas mais profissionais e todo o networking, toda a comunidade para te apoiar nessa caminhada, beleza? Mas vamos lá, então o nosso objetivo é criar o personal GPT, o bot pessoal estilo chat GPT, tá? E vai ser chat com o próprio número, então você não vai precisar comprar nenhum número, tá? Não vai ser necessário, mas se
você quiser você pode comprar o número ou usar outro número que você tem disponível aí sem nenhum problema, beleza? Quais são as ferramentas que nós vamos usar aqui na construção do nosso bot? Nós vamos usar o n8n, e nesse caso aqui, nessa aula, nós vamos usar o n8n no próprio site do n8n. Então, o n8n tem uma versão hospedada, que é essa aqui. Você vai entrar lá em n8n.io, e aí você vai começar de graça. Se você for ver aqui no pricing, O N820 que nós vamos usar é esse starter aqui, tá? E mensal ele
custa 120 reais. Não vale a pena pagar por ele, tá? O que nós vamos fazer aqui é usar o free trial dele só pra você começar a criar o teu bot aqui e entender como é que ele funciona. como que funcionam as coisas no N820 e tudo mais. E o free trial é de 14 dias, tá bom? Lá na comunidade, nós usamos uma versão auto-hospedada do N8n. A gente usa hospedada numa VPS, no Railway, mas o objetivo aqui não é te mostrar esses detalhes de infraestrutura. O objetivo aqui é te mostrar como iniciar o N8n,
porque o que você aprende aqui, você vai poder colocar em prática em qualquer N8n. Você pode baixar ele na sua máquina, você pode... Se você tem conhecimento maior de infraestrutura, você pode baixar em Docker, e subir uma imagem docker na verdade, não é baixar, é subir uma imagem docker numa VPS ou você pode usar o que a gente gosta de usar na nossa comunidade que é o Railway, tá? Railway é uma plataforma que você precisa ter uma conta do GitHub pra você entrar nela, mas lá no curso a gente ensina tudo passo a passo como
que você faz isso E ela funciona como se fosse servidor em que você instala o que você quiser, tá? Desde que esteja de acordo com as condições, com os termos do próprio Railway, beleza? Então, lá no curso a gente usa o Railway para instalar, só que ele já tem custo, você precisa colocar 5 dólares nele, tá? E como o objetivo aqui é fazer com que você crie bots com o menor custo possível, pelo menos para brincar, para testar, para ter uma introdução à criação de bots? A gente não vai usar Railway. Nós vamos usar o
n8n aqui no Free Trial, que é de 14 dias, que é mais do que o suficiente para que você termine essa aula aqui e já tenha o bot rodando, beleza? E o mais legal é que o que você criar aqui, você pode baixar e você pode subir na tua própria instância. Então, depois que você terminar essa Masterclass, você pode baixar esse Workflow e você pode subir onde você quiser. Esse Workflow é teu e ele vai funcionar em qualquer n8n da mesma versão, beleza? Então, outra ferramenta que nós vamos usar é o BaseRoll. O BaseRoll é
banco de dados. Se você já conhece o Airtable, ele é igualzinho ao Airtable. Se você não conhece, ele também é igualzinho ao Airtable. O que ele faz aqui é banco de dados. Só que ele tem uma interface mais amigável. E como você vai ver aqui na classificação, o Base Row é gratuito para ser usado. Você pode criar quantos bancos de dados você quiser. Você pode usar até 3.000 linhas por workspace. E é mais do que o suficiente para que a gente teste, tá? Até porque esse banco de dados a gente vai usar para coisas básicas
aqui dentro, beleza? A gente também usa o Base.Roll lá na comunidade. Muita gente tem produto já rodando em cima do Base.Roll e todos os produtos que eu tenho hoje ou usam Base.Roll ou usam outro banco de dados que é o SupaBase, que não é o caso aqui na Masterclass, tá bom? Outra ferramenta que nós vamos usar é a Zapster. A Zapster, ela é uma API não oficial de WhatsApp, tá? E ela é uma parceira nossa também na comunidade. Lá dentro da comunidade você ganha mais 30 dias grátis para usar ela. É com tudo liberado, tá?
Mas o que é legal dela é que você tem o plano gratuito É uma instância que é mais do que o suficiente para que a criar a nossa automação aqui, tá? Até 100 mensagens por dia, 100 recebimentos por dia é mais do que o suficiente para que a gente comece a brincar com a API do WhatsApp, tá bom? Então vamos lá, por último nós temos os Assistents da OpenAI. Os Assistents da OpenAI são a única ferramenta que nós vamos ter que pagar aqui já de cara. Eu vou mostrar para você aqui a criação da conta
na OpenAI e tudo mais, mas você vai precisar colocar pelo menos 5 dólares lá dentro da OpenAI para que você comece a usar esses 5 dólares. Não se preocupe que esses 5 dólares aqui são mais do que o suficiente para você criar teu bot aqui e brincar com ele. 5 dólares é o equivalente a você usar bot por bastante tempo, se for bot pessoal, que é o nosso caso aqui. mas esses 5 dólares eles vão ele vai consumindo de pouquinho em pouquinho aí quando acabar você pode colocar mais tá então antigamente os assistentes da OpenAI
né a API da OpenAI você podia é fazer pós-pagos colocava teu cartão lá usava e depois pagava Mas hoje você precisa colocar lá no mínimo 5 dólares pra começar, tá? Eu sei que o dólar tá meio pesadinho hoje em dia no Brasil, mas eu garanto pra você que é mais do que o suficiente pra você fazer essa aula aqui e ainda talvez entrar na comunidade e fazer as aulas da comunidade, tá? Então não se preocupe, beleza? Dito isso, vamos começar nos cadastrando nessas ferramentas aqui. Então, vamos começar pela principal, que é o próprio n8n. Então,
aqui na página inicial, no n8n.io, deixa eu voltar aqui, tem esse Get Started for Free, beleza? Para você começar, é super simples, tá? Você vai colocar teu nome, e-mail que diz company e-mail, mas pode ser gmail, não tem nenhum problema, tá? password e account name, e eu vou criar aqui contigo. Vou colocar aqui meu nome, e-mail aqui. Cria uma senha e coloca account name, tá? Eu vou colocar prado.web.n8n.cloud e eu vou começar a degradar isso aqui. Vamos ver se vai dar tudo certo, né? Ó, já tem, então vamos colocar a Prado. Beleza. Olha só. Ele
está criando aqui a nossa instância do N8n no servidor do próprio N8n. E aqui ele tem algumas perguntas. Ele pergunta aqui, por exemplo, em que time você está. Eu vou colocar aqui TI Support. O tamanho da minha empresa é menos de 20. eu já usei alguma ferramenta anterior. Eu já usei o Zapier, já usei o Make, já usei o N8n. Quando eu conheci o N8n, eu conheci de amigo. E isso é verdade. E aqui ele pede pra você colocar alguns aplicativos que você quer usar, tá? Você pode colocar o que você quiser aqui, mas eu
vou colocar os dois que eu mais uso aqui, que é o Webhook e o HTTP Request, beleza? Dá continue aqui. Aqui você pode chamar mais pessoas pro teu workspace, não é o caso, eu não vou convidar ninguém aqui. E agora, ele até mostra videozinho aqui da introdução e tudo mais, mas você clica aqui nesse botão verde Start Automating e ele vai finalmente abrir para nós a nossa dashboard dentro do N8n, tá bom? Então, olha só, essa aqui é a cara do nosso N8n hospedado pela própria N8n, tá? Você pode ver aqui em cima que você
tem 14 dias do teu free trial, tá? E você pode executar mil vezes. Então, você pode rodar mil execuções. Para nós, aqui, é mais do que o suficiente para a gente testar e já ter bot, tá? Depois a gente vai dar uma olhada mais a fundo aqui nessa interface do N8n, mas a nossa conta está criada. Eu vou só fechar aqui em cima e pronto. Depois a gente vai dar uma olhada mais profundamente aqui no N8n. Vamos continuar com as nossas ferramentas. A próxima ferramenta é o Baseroll. O Baseroll também, a gente vai vir aqui
no baseroll.io, eu vou me cadastrar e eu vou também entrar em... colocar algum e-mail aqui, tá? andrei.aibuilders.com.br, meu nome, alguma senha, e eu vou marcar que eu coloquei aqui. Opa, eu errei a senha. Aí, agora vai. Então aqui, depois que você faz o seu cadastro, ele pede pra você também colocar teu time e tudo mais. Mas aqui eu vou colocar skip for now. E eu também vou colocar skip for now e eu vou deixar o André's Workspace lá. Skip for now de novo. E eu quero criar database, tá? Aqui sim, nós vamos criar o nosso
primeiro database. E eu vou colocar o nome dele aqui de AI Builders. E eu vou... criar o meu próprio, meu próprio nome de tabela, tá? Então, minha primeira tabela aqui vai ser User e essa tabela inclui UserId e ThreadId, tá? Então, você pode fazer igual eu tô fazendo aqui. Você vai criar uma tabela chamada User, aí você vai criar uma... Nessa tabela User, você pode ver aqui do lado, que nós temos... que nós vamos ter as colunas UserId e a coluna ThreadId, tá? Então você faz da forma que eu tô fazendo aqui, e ele vai
criar o nosso workspace pra nós, tá? Olha só, e é engraçado, né? Olha só, e eu me confundi aqui, ele na verdade criou essas duas linhas, né? Eu queria que ele criasse colunas, mas não tem problema, você vai clicar com o botão direito aqui, você vai deletar, Clica com o botão direito aqui e deleta. E clica com o botão direito aqui no terceiro e deleta, tá? Nossa conta aqui tá criada. Daqui a pouco eu vou... Eu vou voltar aqui no Base Roll pra mostrar pra você o passo a passo, tá? Vamos agora pra nossa penúltima
ferramenta, que é a Zapser API. Então, a Zapster API, você vai entrar lá em zapsterapi.com. Você vai começar grátis, tá? E você não precisa colocar cartão de crédito, o que é bem legal. Eu vou sair aqui porque ele entrou na minha outra conta. E vamos voltar aqui na Zapster. Vamos começar grátis. E aqui você vai colocar teu nome, tá? Vou colocar aqui, por exemplo, André Prado. Número do WhatsApp, vou colocar qualquer aqui. Coloca o teu, tá? vou colocar andré.aibuilders.com.br. vai colocar uma senha. Nós vamos continuar. Beleza, sua conta foi criada e eles mandaram e-mail de
confirmação. vocês podem ver que eu tenho aqui no meu e-mail, eu tenho esse link para confirmar que veio da própria Zapster, eu cliquei nele, a gente vem aqui de novo no painel da Zapster e agora a gente pode... se conectar, tá? Beleza, essa aqui é a cara da Zapster agora, tudo bem? Então agora aqui na Zapster, nós podemos começar por ela já, a gente já pode começar a colocar o nosso celular aqui, nosso smartphone aqui, tá? Você pode ver aqui que tem a visão geral, tem as instâncias, que é onde a gente vai criar a
nossa primeira instância daqui a pouquinho. tem os Abiruk Logs e os meus tokens que a gente vai usar mais pra frente, tá? Pra você criar uma nova instância, você clica aqui em nova instância, você pode dar nome e colocar teu número aqui, tá? Não é obrigatório, é opcional. E aqui ele vai aparecer esse QR Code. Esse QR Code você vai pegar seu celular. Então você vai pegar o seu smartphone aí. meu mais antigo aqui só pra mostrar pra você. Mas pode ser o teu número pessoal também, não tem nenhum problema. Você vai lá no... no
WhatsApp e você vai se conectar como se estivesse se conectando a instância do WhatsApp Web, tá? Então é a mesma coisa, é o mesmo processo, você vai lá em link de devices, né, ou dispositivos conectados, vai aparecer para você ler o QR Code e você vai ler o QR Code aqui na Zapster. E pronto, tá? Foi conectada a nossa instância. E a partir de agora, a Zapster vai poder encaminhar as mensagens que a gente recebe para a nossa automação, lá para o N8n. Tudo bem? Então, agora que nós temos a nossa instância, eu vou deixar
paradinho aqui por enquanto, na Zapser, e a gente vai voltar lá para a nossa lista de ferramentas. Por último, mas talvez a mais importante, é as assistências da OpenAI. você vai entrar aqui em platform.openair.com, tá? E você vai dar de cara com essa interface aqui, tá? Que é a nossa dashboard. Se você já tem uma conta, você vai precisar só fazer o login, tá? Se você não tem uma conta ainda, você vai clicar aqui em sign up. Você vai colocar endereço de e-mail. Eu vou colocar aqui. Continuar. Você vai também colocar uma senha. Precisa ter
12 caracteres. Você vai continuar, tá? E você vai precisar também verificar o e-mail, beleza? Então, olha só, eu recebi o e-mail aqui da e é só clicar aqui em verificar o endereço de e-mail e pronto, ele já vai confirmar para nós aqui. E agora ele vai pedir alguns detalhes teus, tá? detalhe aqui, vou colocar meu nome, vou colocar... não precisa colocar o nome da organização, tá? você pode colocar aí o nome que você quiser e a data de nascimento. Talvez é importante aqui porque tem que ser talvez maior de idade para entrar na OpenAI, né?
Depois que você colocar seus dados lá, você vai ser redirecionado para essa tela aqui, tá? Aqui você já pode começar a brincar, qualquer coisa que você mandar aqui já vai funcionar, tá? Tem esses modelos de chat, aqui você tem os assistants, que a gente vai dar uma olhada depois, tá? Mas o importante, para você começar a brincar, já é colocar aqui na... Nas configurações aqui em cima, nesses settings aqui em cima, você já vem aqui em Billing e você já coloca detalhes de pagamento e já coloca 5 dólares lá, tá? Então, você vai colocar o
Add Payment Details, você vai dizer que você indivíduo, né? Você vai colocar o número do cartão, o nome do cartão, eu obviamente não vou colocar aqui, né? Mas assim que você terminar, você vai precisar colocar 5 dólares aqui, tá? É o mínimo que você precisa para colocar aqui dentro, beleza? Então, você vai colocar 5 dólares aqui e pronto. Agora a OpenAI vai estar aberta para que a gente comece a criar projetos aqui dentro, tá bom? Eu não vou usar essa conta aqui ao longo do curso. Eu vou usar uma conta que eu já tenho, porque
já tem dinheiro lá. Eu não estou podendo colocar 5 dólares assim em qualquer lugar. Mas pode continuar a partir daqui que você vai... Mas... Mas assim que você colocar os créditos aqui, todo o restante do curso vai ser exatamente igual, tá? Então, beleza. Eu vou sair dessa conta aqui. Então pronto, a gente já tem agora as ferramentas configuradas para que a gente comece a brincar com elas e a criar a nossa primeira automação. Então agora a gente vai começar lá no N8n, eu vou mostrar para você uma introdução ao N8n, como que ele funciona mais
ou menos e qual que é o objetivo dessa nossa automação, beleza? Então, vamos lá. Antes de começar com as ferramentas, eu vou desenhar para você aqui layout geral de como vai funcionar a nossa automação, tá? Então, a gente vai receber, a gente vai conversar com a gente mesmo, tá? Então, uma regrinha aqui, né? A gente vai... dentro do próprio WhatsApp, tá? Então, você vai abrir uma janelinha para conversar com você mesmo. você vai receber essa mensagem. Você vai receber essa mensagem. Deixa eu tirar esse negócio aqui. Aí, ó. Recebe mensagem. Quando você recebe essa mensagem,
ele vai ser... Ele vai criar memória do bot, se ela não foi criada ainda, tá? Criar a memória do bot. se não foi criada ainda. E aí, a partir daqui, não se preocupe que você vai ver isso detalhadamente, tá? gente vai mandar a mensagem para o API e, por último, a gente vai a mensagem. Parece simples, né? E é. Você vê que eu não tenho nenhum segredo. Então, a gente só vai receber a mensagem, a gente vai criar a memória, se ela ainda não foi criada, a gente vai mandar para a OpenAI isso aqui e
a gente vai responder a mensagem, tá? Problema que pode acontecer aqui. Como a gente vai mandar a mensagem e a OpenAI vai responder no nosso nome? Porque lembre que é a nossa conversa. Então eu vou mandar uma mensagem pra mim mesmo. Essa mensagem vai ser enviada pra OpenAI e a OpenAI vai responder com o meu número. Ela vai mandar a mensagem com o meu número, tá? Então vai ser uma conversa... solitária ali, entre aspas, né? Só que eu tenho que tomar cuidado. Porque quando isso estiver em produção, quando eu mandar uma mensagem e a OpenAI
responder, ela não vai saber se a mensagem foi enviada pela OpenAI ou se foi enviada por mim. Então, pode ser que entre num loop infinito. Quando, por exemplo, eu mando uma mensagem, eu falo oi, a OpenAI vai responder oi. Só que como a OpenAI mandou pra mim mesmo, ela não vai saber se fui eu que mandei ou se foi ela que mandou. Ela vai falar oi, tudo bem. Daí a OpenAI vai receber essa mensagem que ela mesma mandou no meu número e vai mandar de novo pra ela e vai responder de novo. E assim vai.
Vai virar loop infinito. Tem uma solução pra isso que é bem simples, que é criar comando. E esse comando, a OpenAI só vai responder quando esse comando for ativado. Eu vou mostrar pra você lá dentro. Então, esse aqui vai ser mais ou menos o fluxo. É super simples, tá? Então, a gente vai criar a memória, se ela não foi criada ainda, ela vai mandar para a OpenAI, via os Assistents da OpenAI, e ele vai responder a mensagem que a OpenAI mandou para nós, beleza? parece ser super simples e você vai ver que é super simples,
tá? Óbvio que esse bot aqui é simples, tá? Dentro da comunidade você vai ver bots mais complexos que chamam funções, que interagem com outras ferramentas e tudo mais, mas esse bot aqui é o suficiente para que você comece a entender o poder do n8n e para você já ter alguma coisa para você começar a brincar aí, tá? Então vamos lá. Eu gosto de começar esses projetos mexendo no banco de dados, tá? vamos entender como é que nós vamos desenhar esse nosso banco de dados. Sempre que eu receber uma mensagem de mim mesmo, então eu não
vou ter nenhum usuário mais. Vai ser só eu, tá? Ninguém mais vai poder conversar com esse bot, só eu. Eu vou criar essa memória se ela não foi criada ainda. A memória em língua da OpenAI é a Thread. Por isso que eu falei para você lá quando eu estava configurando o BaseRoll para a gente criar a Thread. Então, a Thread na OpenAI é a nossa memória. Eu vou detalhar mais para você aqui, desenhando também depois, para você entender o que é essa porcaria de memória aqui, o que é Thread. Mas nós precisamos salvar essa thread
aqui no banco de dados. Então, a gente vai precisar salvar ela lá dentro do banco de dados e dá para relacionar com o usuário. Como a gente só vai ter usuário, não é necessário colocar lá a tabela de usuários. A gente pode colocar só na tabela do usuário a thread. Então, aqui no Base Row, eu vou aqui na nossa tabelinha User, que a gente criou antes, eu vou vir aqui no Name, eu vou editar esse campo aqui em cima e eu vou tirar esse nome, eu vou colocar o nome de ThreadId. Tá? Então, vamos lá.
Colocar ThreadId. E pronto, tá? Agora o nosso banco de dados está praticamente completo. Beleza? Você pode colocar mais colunas aqui do lado, tá? Então, por exemplo, eu vou clicar aqui no mais e eu quero colocar uma data, uma data, the created on, tá? Essa data, ela é... você pode colocá-la como padrão, tá? Eu vou deixar no padrão europeu aqui, que é dia, mês e ano. Eu vou colocar para colocar o tempo também em 24 horas só. Então, vou criar essa tabela aqui. que isso aqui vai acontecer? Tabela não, perdão. Vou criar essa coluna. que isso
aqui vai fazer para a nossa linha? Quando eu colocar uma thread aqui, vocês podem ver que ele já... Ele já atualizou aqui a data de criação. Isso aqui é legal, mas é só para mostrar para você o que é possível fazer com o Baseroll. Na comunidade, no curso da comunidade, a gente faz tabelas mais complexas, porque os nossos produtos lá são mais complexos. Mas é só para mostrar para você como é que funciona o Baseroll. Mas o legal disso aqui, óbvio, não é fazer manual. O legal disso aqui é deixar o nosso bot fazer isso
pra nós. Beleza? O nosso base road tá praticamente configurado já. Agora nós temos que desenhar no nosso n8n como que vai ficar isso aqui. Antes de ir pro n8n, vamos terminar de configurar a nossa zapster. Então a gente tem aqui a nossa zapster. Pra você entender pouquinho pouquinho mais sobre essa interface aqui, tá? O que isso aqui tá mostrando pra nós? Isso aqui são as suas instâncias, você pode ver que ela tá conectada, ela não recebeu nem enviou nenhuma mensagem ainda, você pode desconectar ela aqui embaixo. Aqui, esse ID estranho aqui, é o ID da
instância, então sempre que você precisar, usar o ID da instância, você vai usar esse ID aqui, tá? E aqui nas configurações, nessa engrenagem que temos ali do lado, você tem algumas configurações específicas da tua instância, tá? Então, por exemplo, você pode marcar a leitura automática de mensagens, você pode atrasar o envio de mensagens para ele colocar um... tempinho de delay ali para parecer mais real. Você pode simular a digitação de usuário real. Você pode excluir a mensagem depois de view. Nesse caso aqui é para quando você manda mensagem para cliente e você quer apagar a
conversa. Aqui ele colocou excluir mensagem, mas não é uma mensagem, ele apaga a conversa. É igual quando você manda mensagem para alguém e já apaga aquela conversa, você pode fazer isso. Economiza espaço no WhatsApp. Aqui você pode gerenciar as chamadas recebidas. Eu vou colocar aqui para ele nunca recusar ligações, porque está no meu número pessoal. e configure como deseja exibir seus dados durante as conversas. Você pode colocar digitando, sempre online ou sempre offline. E aqui embaixo é onde nós vamos colocar o nosso webhook, que a gente já vai configurar agora. Aqui no N8n, que é
onde vai acontecer realmente a automação, que é o nosso centro, o nosso núcleo, A gente não precisa fazer quase nenhuma configuração. A única coisa que eu vou fazer aqui em cima é vir aqui My Workflow e eu vou mudar o nome dele. Eu vou colocar aqui o nome de Personal GPT. Então, esse aqui vai ser a nossa automação, vai ser o nosso coração. Se você clicar aqui no Home, Você vai ver que, nessa tela, é onde nós temos os nossos outros workflows. Então, você vai ver que já apareceu aqui o nosso personal GPT. Aqui do
lado, nós podemos colocar mais projetos. Tem o painel de administrador, que só existe na versão, na nuvem do N8n. Então, quando a gente usa a versão no Railway, por exemplo, que é o que nós usamos na comunidade, isso aqui não aparece. Então, aqui também tem alguns templates prontos, que você pode procurar lá dentro da loja do N8n. Tem vários e vários templates. Nós temos variáveis. Essas variáveis a gente só pode usar se estiver pagando, que não é o nosso caso. Aqui ele traz para nós todas as execuções. A gente não tem nenhuma ainda, então não
vai aparecer nada. E aqui no Help nós podemos ver o Quick Start, a documentação, o fórum, o curso e o About N8n. A gente está usando a versão 1.50.1, que no momento de gravação desse vídeo é a versão mais atual do N8n. Então vamos voltar aqui para o nosso home e nós precisamos colocar aqui... e nós vamos voltar aqui para o nosso Workflow. Então, vou clicar nele e pronto, voltou no nosso Workflow, ele está vazio. Beleza? Então, voltando aqui para o nosso desenho, a gente precisa receber essa mensagem. Como que a gente recebe essa mensagem?
A gente recebe via Webhook. que é Webhook? Vamos entrar aqui no nosso N8n. Eu vou clicar aqui no Add First Step e eu vou procurar aqui, Webhook. Coloquei o Webhook aqui. E ele abre essa tela para nós. O que é webhook? Se você já sabe o que é, beleza. Se você não sabe o que é, o webhook é mais ou menos se você tem uma antena ligada aí, uma antena em algum lugar, e essa antena fica ouvindo sinalzinho. Quando esse sinal chega nessa antena, ela vai falar, beleza, recebi sinal, e é isso aqui que estava
escrito no sinal. Basicamente é isso que é webhook. Então, esse webhook vai ter que ser configurado para ele ouvir, para ele ficar, a anteninha aqui, nós vamos ter que configurar ela para ele ficar ouvindo se algum sinal lá da Zapster vai chegar. Por quê? Quando a Zapster receber uma mensagem, a gente vai configurar o nosso webhook lá agora, quando ela receber uma mensagem, ela vai disparar uma notificação. Aí, a nossa antena vai estar configurada para receber essa notificação. Essa antena é o webhook. Então, ele vai receber essa notificação e vai falar, beleza, recebi aqui, a
Zapster mandou isso aqui para a nossa URL e isso aqui é o que ela mandou, tá? Então, toda vez que a Zapster receber uma mensagem, ela vai receber lá no WhatsApp, ela vai falar, beleza, recebeu uma mensagem, vai disparar para a nossa antena e a nossa antena vai receber essa informação e vai mostrar para nós que informação ela recebeu, tá? É super simples de configurar. Vocês podem ver aqui que nós temos Nessa tela, nós temos algumas configurações. Nós temos a URL de teste e a URL de produção, que é o que os nomes delas dizem.
A gente vai usar o teste aqui por enquanto. Aqui nós temos o método HTTP. O método aqui para a Zapster vai ser o POST. E o Path aqui, você pode mudar, você pode colocar o que você quiser, desde que ele seja o único, tá? Então, por exemplo, vou colocar aqui, ó, recebe mensagem. Você pode ver que ele mudou aqui em cima, né? Então, ele mudou, colocou para essa URL aqui em cima, barra webhook test, barra recebe mensagem, tá? Autenticação NAND aqui, não precisa colocar nenhuma. E a resposta é imediata. Eu quero que toda vez que
ele receba uma notificação, que ele já fale, beleza, tá recebido. É isso que vai acontecer, tá? Tá funcionando já? Não, eu preciso configurar agora pra que a Zapster mande pra nós essa notificação nessa nossa antena aqui, tá? Então, aqui na Zapster agora, nessa mesma tela de configuração da tua instância, aqui embaixo você vai em Webhooks e você vai adicionar novo webhook, tá? Eu vou dar nome aqui de... Master Class AI Builders. E a URL do WebHook vai ser a que nós acabamos de copiar lá. Então, você só vai clicar aqui, ele vai copiar automaticamente, aí
aqui você vai colar essa URL, e aqui embaixo é onde a gente precisa configurar quais são as notificações que nós queremos ter na nossa antena, no nosso WebHook. Então, você pode ver que tem muitas notificações aqui, tá? Por exemplo, quando grupo é criado, quando membros são adicionados, quando os membros são despromovidos, promovidos, enfim. Tem muitas e muitas notificações que a Zapster envia para nós, tá? Mas aqui são duas principais que a gente sempre usa, tá? Uma é quando uma mensagem é recebida. Então, quando alguém mandar uma mensagem para nós. E outra é a mensagem enviada.
Quando nós enviamos uma mensagem, tá? Geralmente, nós usamos essa notificação aqui, mensagem recebida. Mas para essa aula, você pode lembrar que a conversa vai ser conosco mesmo. Então, não vai ser uma mensagem sempre recebida. Vai ser uma mensagem enviada. Quando eu mandar uma mensagem para mim mesmo, eu vou ter toda essa... Toda a lógica da nossa automação rodando. Então, eu só preciso, aqui na Zapster, ao invés de ver a mensagem recebida, a mensagem enviada. Então, toda vez que eu enviar uma mensagem e essa mensagem passar por alguns parâmetros, que eu vou mostrar pra você aqui
daqui a eu vou mandar para o OpenAI e ele vai me responder. Então, eu vou salvar esse webhook aqui. E aqui embaixo, não se esqueça de salvar alterações. Salvou alterações, pronto. Tua API já está funcionando. Então, olha só, para testar se realmente está funcionando, porque só acreditamos vendo, eu vou entrar aqui no nosso N8n e aqui em cima, ou aqui do lado, você pode ver que tem esse botão aqui, listen for test event. Então, a gente vai começar a escutar. O que ele vai fazer? Ele vai começar, a gente ligou a antena, até você pode
ver que parece uma anteninha mesmo, que ele fica escutando aqui, tipo radarzinho. Então, a nossa anteninha está ligada aqui. Eu vou entrar no WhatsApp, do número que eu tenho aqui, tá? E eu vou mandar teste, tá? Então, aqui agora, você pode ver que ele recebeu, tá? Então, a nossa anteninha recebeu esse teste. Então, o nosso SubHook está funcionando. E o Azapcer também, beleza? Aqui tem alguns detalhes que boa parte a gente não vai usar, tá? Então, esse header aqui eu vou fechar. O que importa é estar aqui nesse body, tá? O que a gente recebe
da Zapster? A gente recebe a data da criação, ele tá no tempo da UTC0 aqui, tá? Agora são 7h29, mas ele mandou 10h28. Aqui nos dados, nesse data, nós temos o content, que é o text, que eu mandei test. aqui vocês podem ver que eu mandei e ele recebeu aqui no nosso N8n o text como test e o id. Aí nós temos o recipient, o nome AIB, que é o nome do bot que eu tenho, é o número que eu tenho mas eu tô usando ele pra mandar a mensagem pra ele mesmo, tá? Então tem
o número dele aqui, que é o id, né? E o sender é a mesma pessoa, porque quem enviou é quem recebeu, tá? aqui tem mais alguns detalhes que nós vamos ver daqui a pouco, tá? Tem o message.send quer dizer que a mensagem foi enviada pra nós, E aqui tem o webhook URL. no header, nós também temos alguns detalhes importantes, como, por exemplo, o ID da instância. E também temos alguns detalhes que a gente vai usar mais para frente, mas não agora. isso aqui é para você entender como funciona o webhook. Beleza? Agora, olhando aqui para
o nosso scale draw, a gente vai ver se a memória existe. que é a memória? A memória é a thread. E agora nosso próximo passo. O que que eu vou fazer? Aqui em cima, quando você recebe esse output, você pode vir aqui em cima e clicar nesse pin aqui, nesse alfinete que tem aqui em cima, e clicar nele, tá? Isso aqui vai fazer com que essa mensagem sempre vai ser usada daqui pra frente. Então a gente não precisa ficar mandando mensagem pro WhatsApp pra testar. A gente pode usar essa mesma mensagem pra testar daqui pra
frente, tá? Eu vou voltar para o Canvas agora, você vai ver que ele está azulzinho aqui, o nosso abrook, porque quer dizer que tem uma mensagem fixada nele, beleza? Agora, aqui, nós temos que criar a memória se ela não foi criada ainda, tá? O que é memória? Vamos lá. Eu vou entrar aqui no platform.openair.com. Porque aqui nós temos a documentação da OpenAI. E a documentação é super importante, tá? É a documentação que vai ser a nossa base para praticamente tudo aqui dentro. Beleza? A documentação, aqui do lado, nós temos a documentação capacidades, endpoints e tudo
mais. E aqui nós temos do assistance. E o assistance é o que nós vamos usar para fazer o nosso bot funcionar, tá? E aqui, por sorte, ele já explica para nós o que é a Thread. Então, nós temos Assistant que nós vamos criar agora. Cada Assistant tem várias Threads. Uma Thread é a memória do Assistant é uma conversa com uma pessoa. Então, se eu voltar aqui, por exemplo, no WhatsApp, digamos, Isso aqui é como se fosse uma thread. Cada conversa é uma thread. Então, eu tenho uma thread comigo mesmo, tenho uma thread do grupo, tenho
uma thread com esse número, tenho uma thread com esse grupo, tenho uma thread com esse grupo. Então, uma thread, imagine que é como se fosse uma conversa no WhatsApp. Beleza? E é nessa thread, aqui na documentação, que a gente guarda as mensagens do usuário e as mensagens enviadas pelo Assistant. Então, a thread tem todo o histórico da mensagem, dessa conversa, tá? E é a memória, entre aspas, do nosso bot, beleza? Depois que nós criamos a thread, a gente precisa rodar. Então, criar a thread é uma coisa, é como se estivesse colocando coisas no cérebro daquele
bot, só que ele só está colocando, está só armazenando, tá? Depois que a gente coloca coisas nessa thread, a gente vai mandar rodar. que é esse run aqui, que é o próximo step, é o próximo passo. Quando a gente roda esse Assistant, ele vai pegar toda aquela thread e começar a aplicar ela, ele vai começar a rodar ela, vai criar respostas baseadas nessa thread. Beleza? Vai ficar mais claro para você daqui a pouco. Mas, por enquanto, esse desenho aqui já mostra mais ou menos como é que funciona. Então, a gente vai precisar criar Assistant, a
gente vai precisar criar Thread e a gente vai precisar rodar essa Thread, tá? Então, é colocar tudo isso aqui e traduzir no n8n, beleza? Então, vocês podem ver, né? Agora eu vou voltar aqui para nossa dashboard, que a gente vai precisar criar o nosso Assistant. Aqui na nossa Dashboard, eu estou aqui agora no Playground, tá? E aqui embaixo tem os Assistants. E aqui você pode ver que eu já tenho alguns Assistants criados, você não vai ter nenhum, tá? Esses Assistants aqui são Assistants criados lá para o curso. Então, se você estiver lá no curso, você
já tem esses Assistants. Se você não está ainda, lá você vai poder criar esses Assistants com mais poder do que esse aqui que nós vamos criar hoje, tá? Mas eu vou criar Assistant do zero aqui em cima. Você vê aqui em cima em Create. Você pode criar pela própria interface da OpenAI, tá? Ele criou esse Assistant aqui. Então, esse aqui é o ID dele, que nós vamos usar mais pra frente, tá? Vou colocar o nome dele aqui, vou colocar Personal GPT, tá? instruções. E aqui, a gente vai colocar as instruções. O que são essas instruções?
É o famoso prompt, tá? É o que a gente quer que esse bot faça. Nesse caso aqui, eu vou colocar em português mesmo, tá? Eu vou colocar... Você é Assistente... cujo único objetivo é atender o seu usuário. Só isso, não vou colocar mais nada, isso aqui já vai ser o suficiente para nós. Aqui você pode escolher o modelo. Eu vou escolher o modelo mais barato aqui para a gente testar, que é o GPT 3.5 Turbo 0125 hoje, mas pode escolher o modelo que você quiser. Nós não vamos usar o FileSearch nessa aula e nem o
Code Interpreter, por enquanto. e também não vamos colocar nenhuma função, beleza? Eu não vou mudar mais nada aqui, eu vou deixar a temperatura do jeito que está e o topP do jeito que está, beleza? Então o nosso Assistant agora está criado, tá? Se você quiser, você pode vir aqui e clicar nesse botão do Playground e ele vai agora... a gente pode conversar com o Assistant que nós acabamos de criar. Então aqui, por exemplo, Olá, quem é você? Vou mandar essa mensagem. Você vai ver que ele vai dar uns trim leaks aqui porque tá ligado uma
opção que eu odeio. não, não tá não. Então esquece o que eu falei. Ele já respondeu pra nós, tá? Olá, eu sou assistente pessoal aqui para te ajudar no que precisar. Como posso ajudar você hoje? Agora vou mudar aqui o prompt, vou colocar você é personal GPT, cujo único objetivo é atender o seu usuário, tá? Ele atualizou. Eu vou aqui em cima limpar a thread e eu vou conversar de novo. Quem é você? você? Olá, eu sou o personal GPT. Estou aqui para ajudar a responder as suas perguntas. Como posso ajudar você? Maravilha. Então agora
ele sabe quem ele é e tudo mais, né? Saber quem ele é é meio estranho, né? Mas ele tá repetindo o que eu falei pra ele, que ele é o personal GPT. E você pode ver aqui em cima que ele já criou uma thread, tá? E aqui, se você olhar os logs, você pode ver que ele criou a thread, que ele adicionou mensagens nessa thread. Ele rodou a thread. E quando ela terminou de rodar, ele mostrou o resultado. Agora nós vamos replicar o que tá acontecendo aqui, lá dentro do DN8n, integrando com o nosso WhatsApp.
microfone. Então agora, aqui no nosso Base Row, eu vou criar mais uma coluna aqui só pra mostrar pra você o que é possível, tá? Vou dar mais presentinho pra você aqui. Eu vou colocar uma nova coluna aqui, vai ser o Single Line Text mesmo, tá? E o nome dela vai ser ID, tá? Eu vou criar aqui e pronto, ele vai criar o nosso User ID, beleza? Isso aqui vai ser bom porque se você quiser colocar esse bot pra funcionar com outras pessoas, ele também vai funcionar, tá? E aqui no nosso personal GPT, a gente vai
começar... nossa primeira etapa agora vai ser criar a thread, que é a memória, que é o que está no nosso scale draw aqui, que está no nosso desenho. Criar a memória se não foi criada ainda. Então, o que a gente vai fazer? Eu vou entrar aqui no nosso personal GPT, no nosso n8n, E a primeira coisa que nós vamos fazer é ver se esse usuário que está conversando existe. Então, imagine que você colocou esse bot para funcionar para mais uma pessoa, digamos. Eu vou deixar esse bot preparado para que você consiga fazer isso. Então, a
gente precisa ver se esse usuário existe, se ele já foi cadastrado. Então, eu vou vir aqui. Logo depois desse webhook, eu vou clicar nesse mais aqui. Você vai ver no N8N que ele vai abrir monte de opções para nós. Vamos focar aqui e eu vou procurar o Base Row. Vou procurar o Base Row aqui. Ele já tem nós prontos. E eu vou pegar aqui do lado esse Get Many Rows. Eu quero que ele me traga... Cara, esse usuário existe? Existe esse usuário? E na tela do Base Roll, você vai ver que você pode mudar o
nome aqui em cima. Então, eu até vou mudar aqui. Vou colocar o Get User. Eu vou renomear ele. E agora, ele está dando erro de credencial. A gente precisa criar as credenciais aqui dentro do Base Roll. Então, eu vou clicar aqui nesse Select Credential e eu vou criar uma nova credencial. Você vai dizer... O Host, você pode deixar do jeito que está. O Username é o teu e-mail que você cadastrou lá no Base Roll. E o password também é o seu password, tá? Eu vou salvar aqui e ele... Ele vai criar a nossa credencial, tá?
Eu vou fechar aqui. Agora você pode ver que tá como base role account aqui. E aqui embaixo, inclusive, você pode mudar, tá? Eu vou até entrar aqui, que você pode mudar o nome aqui em cima. Eu vou colocar... Base Row AI Builders. Aí vai ficar mais bonitinho lá. Eu vou salvar. Pronto. Agora ele mudou aqui em cima. Está como Base Row AI Builders. aqui nada vou mudar. Eu vou pegar o database. Vai ser AI Builders. O que é isso aqui? É isso aqui. AI Builders. Aí a tabela vai ser a tabela user. Então eu quero
pegar nessa tabela user com algumas condições. Eu vou marcar para ele retornar tudo aqui. Return All. No Options, eu vou colocar uma outra opção que eu quero filtrar, porque eu quero ver se esse usuário específico existe naquela base de dados. Então, eu vou colocar filtro aqui. Esse filtro vai ser no User ID, e ele vai ser o filter equal e o value, aqui que está a mágica do N8n. Aqui do lado, você pode ver que tem vários e vários, mas eu quero ver se o ID desse sender existe. Então, eu vou pegar esse ID aqui
e vou jogar aqui no value. Então, você pode ver que ele vai trazer aqui para nós todo o caminho desse ID e já colocou o valor aqui embaixo. que isso aqui vai fazer? Isso aqui vai buscar, lá dentro da nossa base de dados, vai dizer para nós se esse usuário existe. Tem mais uma opção que nós precisamos colocar aqui nas settings, aqui do lado, que é o Always Output Data. Por quê? Porque se ele não achar nada, eu quero que ele responda com alguma coisa, eu quero que ele responda com nada. Se eu deixar desmarcado,
se ele não achar ninguém no banco de dados, ele não vai trazer ninguém. ele vai parar o nosso workflow ali. Eu quero que ele continue. Por quê? Porque se ele não achar esse usuário, ele vai precisar criar esse usuário. eu vou colocar o Always Output Data aqui. Vou voltar para o Canvas. E agora, se eu clicar em Testar Workflow, você vai ver que ele rodou. Eu não precisei mandar uma mensagem no WhatsApp agora, porque o webhook está... fixado. E como ele está fixado, a mensagem que mandei agora há pouco, ele está usando essa mesma mensagem
para rodar todo o workflow. Economiza muito tempo isso, né? E aqui no Base Row Get Users, você pode ver que ele, olha só, não tem. Ele falou sem nenhum campo. Os itens existem, mas estão vazios. E esse que a gente precisa, tá bom? A próxima etapa agora, pegar... se o usuário não existe, é criar esse usuário, tá? Então, agora, nós vamos usar nó muito famoso aqui, que é o nó de IF. O IF é C, tá? O C, ele vai fazer uma condicional. Se o usuário existe, se o usuário não existe, siga por caminho ou
siga por outro caminho, tá? E aqui nós vamos usar uma condição especial, que é essa aqui. Você vai clicar aqui em Expression, na verdade, aí você vai colocar esse Object Keys Node BaseRowGetUser, que é o nome do nosso nó anterior, BaseRowGetUser.data.length. O que a gente vai ver? A gente vai ver se o retorno daquele nó do BaseRow, se ele tem comprimento maior que zero. Eu vou colocar aqui, isEqualTo, na verdade, nós vamos colocar como Nós vamos colocar como isTrue. Então, agora esse if aqui, eu vou mudar o nome dele para... Usuário existe, como pergunta assim
mesmo. E agora, se eu testar esse step, ele vai mostrar para nós dois caminhos possíveis para seguir. é o true e o outro é o false. Nesse caso aqui, ele vai para o false porque o usuário não existe ainda. Então, o que ele está fazendo aqui? Ele está vendo se o tamanho da saída do nó anterior é falso ou é verdadeiro. Porque se for falso, ele é zero. Se for maior que zero, ele é verdadeiro. Essa é a lógica aqui. Então, se está vindo dados, ele é verdadeiro. Se não está vindo, ele é falso. Não
se preocupe que lá na comunidade a gente ensina você tudo isso, mas isso aqui você pode usar de qualquer forma. Você pode usar no teu projeto sem precisar saber a lógica por trás dele. Beleza? Então, se o usuário existe, ele vai para True. Se ele não existe, ele vai para False. O que isso significa aqui no nosso Workflow? Olha só. Está vendo que ficou verdinho o nosso False aqui? Então, quer dizer que agora ele vai seguir para esse caminho falso. Nesse caminho falso, nós vamos criar o usuário. Agora nós vamos clicar aqui, lá no Base
Row, nós vamos criar ele. Nós vamos criar uma linha, Porque esse usuário não existe. Vocês podem ver que ele já puxou o nosso Base Row AI Builders aqui, a nossa credencial. Eu vou mudar o nome para Base Row Create User. É legal nomear os teus nós, porque senão você pode se perder. Ainda mais se você vai fazer negócio bem grande. O Database vai ser AI Builders e o Table Name aqui vai ser User. E aqui o Data To Send nós vamos deixar marcado Define Below For Each Column. Nós vamos definir abaixo para cada coluna que
nós queremos enviar. Eu vou adicionar campo. E o que que eu quero mandar lá? Você pode mandar nome, se você colocar o nome, você pode mandar o nome, você pode mandar thread, você pode mandar o usuário, você pode mandar o que você quiser, tá? Nesse caso, eu só quero mandar o User ID, eu não preciso saber o nome dele, tá? eu vou clicar em User ID, e o Feed Value, ele vai vir aqui debaixo, ele vai vir do nosso webhook, do sender ID. Então, vou salvar isso aqui lá no banco de dados. Então, o ID
vai ser o número do usuário. Nesse caso, vai ser o teu próprio número e aqui, nesse caso, vai ser o meu próprio número. Mas se você quiser usar esse bot com outro número, ele vai sempre salvar o número de quem mandou mensagem para o teu bot. Então, eu vou voltar para o Canvas aqui e agora nós vamos rodar o nosso workflow completo. Olha só, o que vai acontecer aqui no nosso Baserole createUser? Ele criou uma linha lá dentro. eu vier aqui no nosso Baserole, você vai ver que ele criou o nosso usuário com o userId,
a data de criação, que é automática, não precisa mandar nada, porque o próprio Baserole já cuida disso, e a threadId que está vazia. A gente não criou a thread ainda, lembre disso. Mas o usuário está criado, então boa parte do nosso problema está resolvido. Então agora, o mais legal é que se eu testar o workflow, você vai ver que ele vai pegar o usuário e ele viu que o usuário existe, porque agora esse if aqui é verdadeiro, porque esse usuário realmente existe. Então ele viu esse número, existe no meu banco de dados? Sim, existe. Então
ele é verdadeiro, tá? Para que a gente consiga pegar os dados sem precisar rodar duas vezes esse workflow, nós vamos usar nó especial aqui que se chama o Merge. Esse Merge pega dados de dois caminhos diferentes e coloca aqui no mesmo lugar. Então, vai ser o nosso centralizador dos dados do usuário. Vou mudar o nome dele aqui para Merge User. vai ter dois inputs, tá? Você pode colocar mais aqui, mas dois tá ótimo. Então, eu vou colocar ele pra frente aqui. E o BaseRowCreateUser nós vamos colocar aqui. Por que que isso é legal? Porque, a
partir de agora, se o usuário existe, os dados que existem do usuário vão vir para cá, para esse nó. Se o usuário não existe, ele vai criar o usuário e os dados do usuário que acabou de ser criado vão voltar para cá. Então, esse merge user aqui sempre vai ter os dados mais atuais do nosso usuário. Isso que é necessário. Você vai precisar centralizar os dados do usuário justamente por causa disso. O usuário já existe, os dados precisam vir para cá. Se o usuário não existe, vai criar e os dados dele vão vir para cá.
se eu testar o Workflow, você vai ver que aqui no Merge User, ele vai estar com os dados do nosso usuário. Agora, só para testar, eu vou apagar o nosso usuário aqui, vou deletar essa Row, essa linha. Agora, aqui eu vou rodar de novo no Workflow, ele vai ver que o usuário não existe, ele vai criar e aqui no nosso Merge User, ele tem os dados do usuário. Então ele passou pelo caminho de baixo e centralizou aqui, tá bom? Então esse nó aqui sempre vai ter os dados mais atuais do nosso usuário, beleza? Agora, nós
vamos precisar ver se a memória existe, e se ela não existe, ela precisa ser criada. E aqui é que fica legal. gente vai colocar mais if aqui agora. Sempre que eu preciso fazer C, vai ser if. A memória existe, o usuário existe, e assim vai. Então, esse if aqui, eu vou mudar o nome para possuiThread. Possui Thread. Esse possui Thread, ele vai ter dois caminhos, verdadeiro ou falso, porque o usuário pode ter ou não ter a Thread, que é a memória do bot. O que nós vamos fazer? Nós vamos pegar aqui lá do Merge User,
por isso que é importante ter nó só com os dados do usuário, porque esse nó do Merge User aqui é o nó que vai ter todos os dados desse usuário. gente vai pegar essa ThreadId, colocar aqui, E aí, esse isEqualTo eu vou mudar para string. e vou colocar isNotEmpty. Agora você vai ver que eu vou testar esse step e ele vai mandar para o falso. Por quê? Porque o JSON ThreadId é vazio, isNotEmpty. Aqui, qual é a validação que eu estou fazendo. Se o ThreadId não é vazio. Se ele não for vazio, ele é verdadeiro,
quer dizer que possui thread. Se for vazio, que é o caso aqui, ele vai para o falso, porque quer dizer que o usuário não tem a ThreadId ainda. Super simples. Você vai ver que o N8N é só jogo de lógica e ficar analisando dados e colocando os dados para frente e para trás. É super simples. Aí você vai ver que agora, pela primeira vez, nós vamos usar a API da OpenAI para criar uma thread. Dentro da comunidade, dentro do curso, a gente vai a fundo explicando o que é uma API, como que ela funciona, tem
desenhos lá e tudo mais. Aqui o objetivo é fazer você criar o bot, então eu não vou entrar tanto em detalhes assim, mas eu vou mostrar para você o processo para você entender como é que funciona. Então aqui, como eu falei para você, Nós temos, dentro da OpenAI, nós temos a documentação, que é superimportante, e eu vou entrar nesse API Reference aqui. Aqui do lado, nos Assistents, você pode ver que tem vários Endpoints DPI. Você pode criar Assistents, pode listar os Assistents, buscar, modificar, deletar, enfim. Aí nós vamos aqui nas Threads, porque nós queremos criar
a nossa primeira Thread, beleza? E aqui eu vou em Create Thread, e agora você vai ver que aqui do lado ele está dando alguns exemplos para nós de como criar threads. Aqui ele está dando exemplo em Python, mas eu vou buscar aqui, eu cliquei em Python, eu vou buscar o curl. O curl aqui código que você pode colar lá no seu terminal, por exemplo, e ele vai rodar. Você só precisa configurar ele para algumas coisinhas, mas ele vai rodar. A gente vai pegar esse curl aqui. É uma chamada lá para o servidor do OpenAI, beleza?
E a gente vai voltar aqui no n8n. E aqui no false, eu vou adicionar campo chamado, nó chamado HTTP request, tá? E esse HTTP request eu vou mudar o nome dele pra criar thread. Beleza? Eu posso configurar manualmente os campos aqui, mas eu vou ser mais esperto. Eu vou vir aqui nesse botão import curl, E aqui você vai colar aquele comando que você copiou lá da OpenAI. Então, eu vou importar ele aqui. E você vai ver que ele já configurou tudo para nós. Então, vai precisar mudar poucas coisas aqui dentro agora. Beleza? Então, o método
é get, a URL já copiou do nosso curl. O header, ele está mandando a autorização com a tua chave de API da OpenAI. e com o nome OpenAI beta assistants igual o v2. Então, deixa assim, não precisa mudar mais nada. O body, nesse caso aqui, você pode desmarcar ele, que você não vai precisar mandar o body de forma nenhuma. O body é o corpo da requisição, você não vai precisar mandar nada. Tem só uma coisinha que a gente vai mudar aqui. Ao invés de a gente usar a chave de API da OpenAI aqui no header,
eu vou deletar isso aqui. E agora, aqui em Authentication, nós vamos colocar Predefined Credential Type, o credencial pré-definida. Então, eu vou clicar aqui. Aí, aqui, eu vou escolher OpenAI. Você vai escolher aqui, OpenAI. Não é OpenCTI, não é Azure OpenAI. É OpenAI, tá? E você vai selecionar credencial. Nós não temos ainda. Então, de novo, vamos criar a nossa credencial. Eu vou mudar o nome dela para AI Builders API. E aqui você vai colocar a sua chave DPI. André, eu não criei a chave DPI. Tá bom, não tem nenhum problema. Vamos lá. Lá no atual dashboard
da plataforma da OpenAI, você vai ver aqui embaixo, em API Keys, e você vai criar... e você vai criar uma nova chave DPI, tá? Então, você pode ver que eu já tenho algumas aqui criadas, né? Você vai criar uma nova chave DPI, aí você pode dar nome nome para ela. Vou colocar aqui, ó, Abuilders Masterclass. Eu vou deletar ela depois, tá? Então, não tente usar a mesma. Você vai criar uma nova chave secreta e essa chave secreta você vai copiar ela, tá? Você vai copiar ela e não esqueça que se você... é perder ela você
não tem mais acesso a ela tá você só pode ver ela agora nesse exato momento então salva ela no lugar seguro mas copia ela e aqui na no nosso n8n eu vou colocar o API aqui tá colei aqui eu vou salvar E você vai ver que ele deu certo. Connection tested successfully. Então, ele conseguiu fazer a conexão com a nossa chave DPI e pronto. Então, agora, se eu testar esse nó aqui, o que vai acontecer? Olha só, eu tava tentando criar a thread aqui e deu esse erro, tá? Só pra mostrar pra você o que
acontece às vezes. O método aqui tá get, tá? Mas se eu olhar aqui a definição de criar thread é post, tá? Então o curl não muda esse método, então lembre-se disso. E olha aqui em cima, tá? O método é post. Então agora, se eu voltar para o nosso n8n aqui, eu vou mudar esse método para post, eu vou testar o step. O que vai acontecer aqui? Ele está mandando uma mensagem lá para o OpenAI falando, cara, precisa que você crie uma thread, tá? Essa thread precisa ser para essa credencial aqui e tem que ser para
os assistentes v2, beleza? E aí o PNR vai trazer para nós essa thread. Essa thread que ele trouxe, a thread blá blá blá, beleza? E tem até a data de criação dela aqui. Agora que a thread foi criada, a gente pode usar ela e salvar no banco de dados do nosso usuário, tá? Então, o que vai acontecer aqui? Eu vou voltar para o Canvas, vou jogá-lo aqui para baixo e eu vou, mais uma vez no Base Row, eu vou dar Update. Por que Update? Porque nós vamos só atualizar uma linha. Eu não vou criar uma
nova linha nem nada. Eu quero pegar a linha desse usuário e colocar essa thread que eu acabei de criar para ele, tá? Que vai ser a memória desse usuário. Então, cada usuário vai ter uma thread no nosso bot. e cada thread vai ter o contexto daquelas mensagens daquele usuário. Então aqui, de novo, já está com o nosso credencial correto, o database é AI Builders, a tabela é User, e o Row ID vai ser o ID lá do Merge User, que nós vamos pegar, e é esse primeiro ID aqui. É o ID único daquela linha. Então,
nós vamos voltar lá para o Merge User, vou puxar o id tá? E agora, no DataToSend, que são os dados que nós vamos enviar para o BaseRow, gente precisa especificar a ThreadId. Então, eu vou colocar aqui ThreadId, e o FieldValue vai vir do CreateThread aqui em cima, e é esse id aqui, tá? Beleza? Então, essa Thread acabou de ser criada pela OpenAI, eu vou mudar o nome desse aqui para BaseRowUpdateThread, beleza? Eu vou testar esse step e o que vai acontecer aqui? Agora, os dados desse usuário, lá no base row, agora tem que ter o
id dele, que é o número, tem que ter a data de criação que já tinha antes e tem que ter a thread que nós acabamos de criar. aqui no base row, você pode ver que tem a thread agora. Acabamos de criar essa thread. O final é adj7. O final é adj7. Com essa thread criada, agora o nosso usuário tem uma memória, o nosso bot tem uma memória para aquele usuário. Termina por aqui? Não, a gente precisa voltar isso aqui para o merge user. Você pode ligar aqui no input 2 que não tem nenhum problema. Por
que é necessário fazer isso aqui? Como eu falei para você, a nossa regra é que o merge user precisa ter os dados atualizados do usuário. Então, como ele não tinha thread antes, se eu entrar aqui, Você vai ver que ele não tinha Thread, né? A Thread de hoje em dia tá vazia. Mas eu vou precisar usar essa Thread daqui pra frente. Como eu acabei de criar ela, eu preciso que ele volte pra cá e que daí sim ele passe aqui no Possuir Thread de novo e siga o próximo caminho. Beleza? Beleza? Então olha só, eu
vou fazer o seguinte pra gente testar. Eu vou deletar essa linha toda aqui. E agora o nosso bot vai precisar passar por todo o processo de criar o usuário, criar a thread e aí seguir aqui para cima. Então, eu vou testar o workflow. Criou o usuário. Ele fez o merge aqui. Se eu jogar aqui no merge, na primeira vez que ele rodou, ele não tinha nenhuma thread. Aí ele veio aqui para baixo, ele criou a thread. Ele deu update no base row. Você pode ver que já criou uma nova thread com o final 1HHK. E
aí ele voltou para o Merge User. Então, aqui no Merge User, na segunda vez que ele rodou aqui em cima, você pode ver, ele agora está com a thread. Então, agora sempre que eu precisar pegar a thread desse usuário, está aqui. Beleza? Então, beleza. Agora nós precisamos... A gente já tem a thread criada, tá? Agora nós precisamos colocar essa mensagem na thread. Porque se você olhar aqui de novo... Vamos olhar aqui nas documentações. e vamos ver a documentação dos Assistents. Então, vamos entrar aqui, Assistents Overview. Então, a Thread é isso aqui. Dentro da Thread, nós
precisamos adicionar as mensagens, porque, por enquanto, ela está vazia. Por enquanto, essa Thread só existe. Ela é uma caixinha que nós acabamos de criar, só que ela está vazia. Agora, nós precisamos colocar as mensagens dentro dessa caixinha para depois mandar para a OpenAI para ela rodar essa nossa caixinha. Então, vamos voltar aqui no nosso N8n, e agora você pode ver que ele veio para o true. Por quê? Porque agora ele possui uma thread. Então, se eu entrar aqui agora, nós vamos usar de novo o nosso nó HTTP request, e nesse nó HTTP request, nós vamos
chamar de novo a API da OpenAI para falar para ela. Beleza. Eu tenho essa thread e agora eu quero colocar essa mensagem dentro da thread, tá? Então, vamos voltar aqui na nossa referência da API. Agora, aqui em messages, você vai vir aqui em create message e aí você vai copiar de novo aqui o curl, né? Vai copiar ele e vai colocar lá dentro do nosso HTTP request. Lembre que é é post, tá? Então, não cai na armadilha, é post. Então, vamos voltar aqui para o nosso n8n e aqui nós vamos Eu vou mudar o nome
aqui para criar mensagem. Aqui no import curl, nós vamos colar o curl que eu acabei de copiar lá. Então, eu não vou mudar nada dele, eu só vou dar import aqui. E aqui é engraçado que ele mudou para post. Eu não precisei fazer nada e ele mudou para post. Não sei por quê. Mas vamos lá. Talvez pode ser porque o body está apopulado aqui. Pode ser isso. Mas enfim. O que acontece aqui? A URL da OpenAI... Vamos voltar aqui para a documentação. A URL aqui, você pode ver que é api.openair.com.v1.threads.threadid.messages. Esse threadid aqui é o
ID da thread que a gente quer criar a mensagem. Então, é aquela caixinha que eu quero colocar as mensagens dentro dela. Então, aqui dentro do nosso N8n, eu vou precisar mudar essa URL aqui, porque ele está com threadabc123. Nesse caso aqui, pela primeira vez, eu vou mudar para expression. Por que expression? Porque na expression eu posso colocar variáveis. E aqui eu vou abrir, deixar maior essa nossa expressão. E esse thread abc123 aqui eu vou substituir pela ideia da thread do nosso usuário. Então eu vou deletar ele. E aqui embaixo eu vou em nodes, eu vou
lá no merge user, eu vou lá em output data e eu vou pegar a thread que ele tem. que é esse Threaded aqui, tá? Eu só cliquei aqui no Threaded e ele já apareceu aqui pra mim. Só que ele tá dando erro, ele não consegue determinar qual item usar, tá? Por quê? Porque esse nó aqui, eu vou fechar aqui e vou mostrar pra você. Esse nó aqui, do Merge User, tem dois, duas vezes que rodou nele. Então quer dizer que tem dois itens armazenados nesse nó aqui, tá? Quer dizer que em deles, até você pode
ver aqui, em deles a Thread tá vazia e no outro a Thread tá populada, tá? Como é que a gente pode resolver isso? Aqui no criar mensagem, ao invés de usar o mergeUserItem.json, nós vamos, ao invés do item aqui, eu vou usar o last, dois pontos, dois pontos não, perdão, last abre e fecha parênteses. que isso aqui vai fazer? Ele vai sempre pegar a última, a última vez que aquele nó rodou e vai pegar aquele item e vai colocar a thread.id daquele item. Pode ser last, pode ser first, só que nesse caso aqui, A última
é que vai ter as informações da Thread que nós precisamos, beleza? Resolvido. Você pode ver que a thread, que a URL agora está bonitinha, né? api.open.ai.com, blá, blá, blá, thread, blá, blá, blá, barra messages. Beleza? Authentication. Eu vou voltar para a nossa pré-definida aqui. Vai ser a OpenAI e vai ser a nossa AI Builders API. Então, a gente não precisa ficar criando de novo, tá? Authorization. Como já está aqui na nossa credencial, eu posso deletar a authorization. Posso deixar só a OpenAI beta aqui. E no body é onde a gente vai mandar a mensagem que
nós queremos adicionar na thread, tá? Então o role aqui é o papel, é quem tá mandando a mensagem. É o assistant, é o sistema ou é o usuário. Nesse caso aqui é o usuário, tá? Então o usuário eu vou deixar do jeito que tá aqui e o content aqui embaixo não vai ser isso aqui. Eu vou de novo deletar, eu vou colocar expression. Isso aqui vai ser a mensagem do usuário. Onde que tá a mensagem do usuário? Tá lá no webhook. É o nosso texto, tá? O nosso texto que nós mandamos em algum lugar. Aqui
ó, o texto tá aqui. Beleza? E aqui também, você pode ver que ele não tá conseguindo saber qual ele tá usando, qual texto que eu vou usar nesse nó. Porque, na verdade, anteriormente naquele nó do merge, ele acaba duplicando algumas coisas. Então, a nossa automação acaba se perdendo em qual item que eu vou usar. Aqui nesse caso, você pode usar também, em vez do item, você pode usar o last, tá? E ele vai pegar da forma correta, beleza? Você pode usar last ou first aqui sem nenhum problema. Beleza? criou a mensagem, ele vai criar a
mensagem aqui. Até posso testar esse step para você ver o que ele retorna, tá? Eu vou testar todo o workflow aqui para você ver o que vai acontecer agora. Então, ele não vai precisar criar o usuário, ele não precisou criar a thread, porque a thread já existe, e ele criou a mensagem aqui para nós. Essa mensagem, você pode ver que ele já trouxe aqui alguns dados. Ele trouxe o ID da mensagem, ele trouxe o ID da thread que nós adicionamos, o tipo também e o value. Beleza? Agora, nós vamos continuar com o nosso Assistant para
ele rodar. Então, agora, se a gente voltar aqui na nossa documentação da OpenAI, você vai ver que agora que nós temos a thread e colocamos a primeira mensagem, a gente precisa mandar para a OpenAI rodá-la, precisa executar essa thread, tá? Que é o nosso run aqui. Aqui no nosso personal GPT, no nosso N8n, a gente vai usar uma... De novo, a documentação da OpenAI, aqui nas referências, a gente vai em runs e a gente vai em create run, tá? Então, ele vai criar essa run aqui, vou de novo aqui em curl, eu vou copiar ela,
e lá no N8n eu vou criar de novo nó HTTP request, e esse nó aqui eu vou run thread, mudar o nome dele para run thread aqui, e na importação eu vou colar o novo id que eu acabei de criar, o novo id não, perdão, o novo curl, né, que eu acabei de copiar. Então, eu vou importar aqui, ele já mudou pra post pra mim, Aqui de novo na URL, nós vamos mudar Thread Expression aqui. Eu vou mudar ela. Ele não vai ser Thread ABC123. Ele vai pegar os dados. Aqui você pode pegar até do
último dado, porque o dado anterior já traz para nós a Thread que foi gerada a mensagem. Então, eu vou clicar aqui. Ele já pegou a Thread correta aqui. Fecha. Autenticação, eu vou colocar de novo a OpenAI. Então, você pode ver que é bem repetitivo. no headers, eu vou tirar o authorization, vou deixar só isso aqui. No body, nós vamos precisar colocar qual que é o id do assistant. Onde que está esse id do assistant? Lá no teu playground aqui, eu vou voltar. Assistents, Personal GPT, esse aqui é o ID do teu Assistant. Então, eu vou
copiar ele, copiei aqui, CTRL C, voltei aqui e pronto. Eu coloquei o ID do nosso Assistant aqui. Então, agora para aquela Thread, para esse Assistant, ele vai rodar essa Thread. Detalhe, você pode criar Thread independente de Assistents, E você pode rodar uma Thread em vários Assistents. Então, fica presentinho para você pensar em alguma coisa para fazer com isso. Antes de rodar a Thread aqui, eu quero colocar mais alguns campos. Aqui dentro da documentação da OpenAI, você pode ver que... Deixa eu ver se ele vai mostrar aqui. Ele vai mostrar aqui nessa parte da documentação. a
OpenAI retorna A run, quando você está executando uma thread, ela tem alguns passos. Eu vou mostrar para você aqui no Playground mesmo. Porque aqui fica fácil de ver. Então, vamos lá. Eu vou colocar teste aqui. E aqui nos logs, você vai ver que está acontecendo uma coisa interessante. Então, ele cria a thread, que nós já estamos fazendo isso no nosso bot. Ele adiciona a mensagem na thread e ele roda a thread. Então, isso aqui nós já estamos fazendo. Mas ele tem esse getRunSteps. Por quê? Porque quando a OpenAI está rodando, está executando uma thread, ele
tem alguns passos, tem alguns status. Então, o que acontece é que uma run tem vários status, tá? Entre eles tem o Completed, que é o final, é o status final. Tem o In Progress, que quer dizer que aquela run ainda está rodando. cancelada, tem failed. Então, essa run tem vários status. Só que a OpenAI não fala para nós ativamente quais são esses status. Nós precisamos checar esses status de tempos em tempos. é que acontece? Nós precisamos rodar, nós precisamos buscar essa run e ver qual é o status dela naquele momento. E se aquele status não
for completed, por exemplo, ele vai precisar buscar de novo o status da run até que ele seja completed. Então, aqui nós vamos precisar criar loop para ficar checando esses status da run, beleza? Então, olha só, se eu voltar aqui, a gente já está rodando a thread agora. Eu não testei ainda porque eu quero testar com você daqui a pouco. E agora, nós precisamos pegar o run status. Quando a gente começa a rodar ele, a gente já precisa ver. Beleza, a gente precisa perguntar para o OpenAI. Cara, qual que é o status dessa run aqui que
eu acabei de rodar? É super simples fazer isso, tá? Então aqui dentro da... Tudo é super simples, né? Mas aqui dentro da documentação da OpenAI, nós temos esse retrieve run, tá? Esse retrieve run, eu vou entrar aqui no curl, e ele basicamente traz para nós o status daquela run, daquela execução, para que a gente consiga tomar alguma ação dentro dela, dentro do N8n. Então, eu vou voltar aqui, vou criar de novo HTTP request, você pode ver que é o nó que a gente mais usa mesmo. Eu vou pegar aqui, get run status, o nome dele,
eu vou importar o curl novo e eu vou importar aqui. Nesse caso aqui, Ele é GET mesmo, tá? Então, não precisamos mudar para POST. Então, preste atenção nisso. na URL, nós vamos mudar. A thread aqui vai ser outra, né? Deixa eu ver se tem a thread aqui. RunThread. A thread, vamos pegar lá do usuário, lá do... do output data do usuário, pegar a thread que está lá, tá? No lugar desse item, coloca a last aqui, que ele com certeza vai saber qual que ele vai usar, tá? E na run, tem esse run abc123 aqui, é
o id da run, tá? Esse id vem do nó anterior, Nesse caso aqui, a gente não começou a rodar ainda a run, eu vou rodar ela, só para mostrar para você. você. Eu vou rodar todo o workflow aqui. Ele vai criar a thread e aqui vai dar erro, não tem nenhum problema. Aqui ele começou a rodar a thread, e essa thread tem id agora, essa run, na verdade, perdão, tem id. E esse id é o id que nós vamos usar aqui para pegar o status dela. Então, de novo, eu vou entrar aqui. Eu vou, dentro
da run, desse id, eu vou pegar o id que saiu da última, que é esse id aqui, tá aqui. Então, ele trouxe o id dessa run que nós acabamos de criar. E se eu testar, e eu vou tirar a authorization aqui também, E Authentication, eu vou colocar a nossa famosa OpenAI aqui, AI Builder API. Então, eu vou testar esse step e vou rodar de novo o workflow. Agora, ele vai mostrar para nós qual é o status dessa run que ele acabou de criar. Então, ele criou uma nova run. Então, esse id aqui é outro. E
essa run aqui, Ela tem status que ele vai mostrar aqui para nós. Olha só, o status está em progress. Então, nós vamos precisar ficar verificando esse status o tempo todo. Qual que é o status dela? Enquanto ela não estiver completa, nós vamos ter que testar de novo. Então, sempre vai ser assim. Então, agora que nós estamos pegando o status da run, nós vamos precisar usar nó novo aqui. esse nó novo é o switch. S-W-I-T-C-H. O que é switch? Se você já é programador, você já deve saber. Mas o que é switch? O switch é tipo
if, que nós já estamos usando aqui na nossa automação, só que ele te dá mais caminhos para você seguir. E nós vamos precisar ter bastante caminho aqui dentro. Nós vamos precisar ter bastante caminho aqui dentro, porque são vários status dentro dessa run e a gente precisa tratar cada desses status. Então, o que a gente precisa fazer? Eu vou pegar aqui do nó anterior tem o status aqui em algum lugar, né? Aqui, o status. Então, o value 1 vai ser o status. Aí, eu vou ver se ele é igual a... Eu vou copiar aqui porque eu
tenho uma colinha, tá? Queued, tá? Queued quer dizer que o Torrent nem começou a rodar ainda. Ela está na fila da OpenAI para começar a rodar. Geralmente, ela não fica muito tempo nessa fila, tá? Então, ela é executada rapidamente. Eu marquei aqui para renomear Output, porque eu quero mostrar o nome lá dentro do nosso N8n. Eu já vou mostrar para você o que acontece. Então, eu vou colar aqui também queued. Eu vou voltar para o Canvas aqui e você vai ver o que aconteceu. Então, agora nós temos o Switch e o Switch já tem campinho
saindo aqui, que é o Queued. Então, tem caminho para sair. Agora nós vamos colocar todos os caminhos, a maior parte dos caminhos que são possíveis aqui dentro. aqui de novo, JSON status. Vamos colocar uma expression e colar o JSON status aqui. is equal to in progress, nós vamos renomear para in progress, tá? Mais uma regra, vai ser de novo json.status aqui como expressão. IsEqualTo e o outro vai ser Failed. Failed também é importante, tá? Vamos renomear para Failed. Outro caminho importante é... Vamos de novo colocar aqui uma nova rota, JSONStatus como expression. E aqui vai
ser... Deixa eu pegar a minha colinha aqui. Completed. Completed é onde a gente quer chegar. No final das contas é lá que a gente quer ir, né? Aí mais uma rota, você vai ver que vai ficar bem cheinho, né? Mas isso aqui vai ser o roteador do nosso Assistant, tá? Aqui, por outro caminho que nós temos também, é... Tem mais dois aqui, tá? Eu vou colocar. Não vai ser necessário aqui pra nós, mas eu vou colocar. Tem o Expired, que eu vou renomear como Expired aqui. e aqui em cima também como completed eu não posso
esquecer e por último isso aqui realmente não vai acontecer agora tá não vai acontecer nessa aula mas tem mais status que é bem especial que é o Requires Action, tá? que é esse Requires Action? Nós podemos dar ferramentas, nós vemos isso lá no curso, tá? No curso completo lá na comunidade. Nós podemos dar ferramentas para o nosso Assistant usar. Então, por exemplo, salva o número de dados ou chama uma outra API ou conecta com outro Assistant. A gente dá ferramentas para o nosso Assistant poder usar. para tomar ações. Então imagine que nós temos lá na
comunidade, por exemplo, uma automação busca livros do banco de dados e retorna a lista de livros para o nosso usuário, para o nosso usuário poder comprar. Tem vídeo no canal sobre isso também, mas o que acontece? Quando você fala, por exemplo, eu quero livros de ficção científica, o nosso bot vai entender o que você quer, Só que ele vai usar essa Requires Action porque ele vai chamar uma função dentro do nosso N8n, então ele vai chamar Workflow dentro do nosso N8n. E esse Workflow, o único trabalho dele é buscar livros de ficção científica. Então ele
vai lá buscar no nosso banco de dados os livros de ficção científica. e vai retornar para o nosso usuário. Então, é para isso que o Requires Action funciona. Então, não vai usar ele aqui, como eu disse, vai ser bot mais simples, mas é legal você já saber que existe essa possibilidade. Se você quer tudo completo, quer ter quatro ou cinco automações completas, bonitinhas, para você colocar no mercado, entra na comunidade e não perca tempo. Então, nós temos essas rotas aqui agora. E agora você vai ver que o nosso switch ficou cheio de regras. Nosso switch
aqui ficou bem grandão, ele tá cheio de regras. Beleza? Quando ele tá esperando, quando ele tá em progress ou quando ele tá killed, que tá esperando na fila, a gente precisa só esperar que uma hora ou outra vai mudar de status. Então, o que vai acontecer aqui? A gente vai precisar checar isso aqui de tempos em tempos. eu vou aqui embaixo, no in progress, eu vou colocar nó chamado wait. Esse wait aqui você pode colocar, sei lá, 4 segundos. Coloquei 4. Aqui você pode colocar segundos, minutos, horas, dias. E esse wait, eu vou deixar ele
aqui embaixo, ele vai esperar 4 segundos e depois ele vai checar novamente o status daquela run. É assim que vai funcionar. Então, o que vai acontecer? ele está em progresso? Beleza. Então, ele vai esperar quatro segundos e vai perguntar de novo para o OpenAI qual é o status da run. Ainda está em progresso? Beleza. Ele vai esperar mais quatro segundos e vai perguntar de novo o status da run. Se ele está queued, ele também pode ir para baixo. Então, o in progress e o queued, eles podem ir para espera. Eles podem esperar. Eu até vou
deixar aqui em cima. Não, vou deixar aqui embaixo que vai ficar mais bonitinho. Eu não vou tratar o expired nem o failed aqui, e nem o requires action. O failed não tem nenhum problema, o completed é o que nós queremos chegar no final das contas, e o expired é se a sua run demora muito para rodar. É raro isso acontecer, mas pode acontecer. A gente trata desses casos dentro da comunidade, dentro do curso, mas não se preocupe com isso aqui agora, nesse exato momento. Beleza? eu vou testar o workflow novamente. Vamos ver se não vai
dar erro aqui. Olha só, o que aconteceu? Ele viu que o status da run é in progress, não, estava killed, na verdade. olha só, primeiro ele estava killed, ele esperou 4 segundos, ele mandou para o OpenAI de novo, ele mandou de novo, perguntou qual que é o run status dela, e aí ele viu que está completa. Então, ele nem entrou no in progress, mas foi tão rápido que ele já completou na segunda vez que nós passamos pelo switch. Então, agora você está vendo que ele já traz o nosso completed aqui. Agora nós precisamos pegar essa
mensagem da OpenAI e mandar para o WhatsApp. Só falta isso. Então, a gente já criou a memória, a gente mandou para a OpenAI, agora a gente precisa responder a mensagem. Então, o último passo aqui do nosso bot, aqui no completed, nós vamos criar HTTP request para buscar as mensagens. Então, eu vou buscar aqui HTTP request. Eu vou mudar o nome aqui para... getMessage. O único objetivo disso aqui é pegar a mensagem que foi gerada pela OpenAI. Por que nós precisamos disso aqui? Porque ele não manda no getRunStatus. O getRunStatus, que é o último nó que
nós executamos antes do switch, ele só pega o status da run, mas ele não traz o resultado daquela run. Então, nós precisamos pegar a mensagem e ele vem daqui. listMessages, é get e a gente pega as mensagens dessa thread aqui. Eu vou entrar no curl aqui e eu vou copiar ela. Aí lá no n8n vou colar esse curl aqui. Colamos, é get mesmo. Aqui na thread, a gente vai abrir ela. Eu vou marcar como expressão. Eu vou abrir a URL e eu vou tirar essa thread daqui e vamos pegar o nó anterior. Talvez o getRunStatus
tenha a nossa thread id. GetRunStatus tenha a thread id. Então, vai ser esse aqui. No lugar do item, eu vou deixar o last também, como padrão, para ele sempre pegar a última execução. vamos colocar mais uma coisinha aqui. Nós vamos colocar aqui no final da URL ponto de interrogação, order igual a desk. Para que serve isso aqui? Serve para ele trazer as mensagens sempre ordenadas da mais atual para a mais antiga. Ele já vai entender o porquê. Então, eu vou voltar para o Canvas aqui. Vamos ver se ele vai funcionar. Vou testar o workflow. Ele
deu problema aqui ainda. Por quê? Porque eu esqueci de mudar a authorization. Eu vou tirar a authorization aqui debaixo. Na authentication eu vou colocar a nossa querida OpenAI. Aqui também como AI Builders API. E agora o body também é desnecessário. O body a gente não precisa mandar. Então, desmarca o body e arruma a tua credencial aí. Então, vamos testar o Workflow novamente. E agora vamos ver se vai dar certo. Beleza, funcionou. Vamos ver o que tem nesse nó getMessage. Esse nó getMessage, vocês podem ver que ele já tem algumas mensagens aqui. Por quê? Porque ele
rodou várias vezes. mas a gente só vai pegar a última. Então, olha só, ele está rodando faz tempo já. Essa thread tem várias mensagens. Você pode ver todas as mensagens retornadas do usuário. Você pode ver que a primeira aqui foi há 16 iterações atrás. A primeira mensagem foi test, que fui eu que mandei. Role, user, value, test. Daqui também de novo. Aqui de novo. não. Aqui foi a resposta dela. Olha só. Type text, o value, olá, como posso ajudar você. E o role é assistant. Daqui de novo, eu mandei teste e aqui o Value que
o Assistant respondeu. Esse é teste de repetição. Como posso ajudar você hoje? Então, essa thread, como ela já está rodando faz tempo, ela tem histórico já mas é pela primeira vez que nós estamos pegando a mensagem dessa thread. Então, para você ver como ela guarda a memória, é assim que ela guarda a memória. a gente sempre vai pegar o data zero. Então, o data zero sempre vai ser a mensagem mais atual da nossa thread. Então, não precisa tratar array, não precisa tratar absolutamente nada aqui. A gente vai pegar essa mensagem e vai mandar no WhatsApp
da pessoa, tá? Mandar a mensagem no WhatsApp da pessoa. microfone. Então, agora, para mandar a mensagem no WhatsApp da pessoa, a gente vai usar uma outra API, que é a API da Zapster. A gente só estava usando a API da OpenAI por enquanto, mas nós vamos usar a API da Zapster, que é onde está a nossa instância. O nosso bot está lá na Zapster. Então, aqui na própria Zapster, se você entrar aqui, tem a documentação. E a documentação da Zapster é super simples, tem que entrar aqui de novo, na verdade. É super simples, é super
fácil de entender. E o que você precisa é vir aqui em Zapster API, mensagens, enviando mensagens. Então, esse aqui vai ser o que nós vamos usar para mandar mensagens lá para a Zapster. Eu não vou ficar muito tempo aqui na documentação da Zapster, depois você pode dar uma olhada lá. Eu vou mostrar para você nó para você mandar a mensagem para a Zapster aqui já pronto. Então vamos lá, eu vou criar HTTP request, e vai ser padrão, tá? Sempre que você quiser mandar uma mensagem para a Zapster vai ser assim. Então vou colocar, ó, envia
a Zapster. O método aqui vai ser post e a URL vai ser essa aqui, tá? Vai ser new-api.zapsterapi.com.v1.wa.messages. De onde que veio isso? Veio daqui, tá? Aqui, post nessa API, nesse endpoint da API, beleza? Autenticação, não precisa de nenhuma, tá? No headers, nós vamos ligar ele aqui, porque nós vamos mandar headers dois headers, na verdade. Nós vamos mandar esse accept e o value vai ser application barra json, tá? Isso aqui é padrão, tá gente? Não se preocupe. Nós vamos acionar mais parâmetro aqui dentro do header. Nós vamos colocar o authorization, tá? E o authorization, ele
precisa começar com better. Então, presta atenção no jeito que você vai escrever isso aqui, ó. É B E A R-E-R, tá? Porque a maior parte dos erros que o pessoal tem aqui é porque escreve errado essa palavra, tá? Para quem fala só português é difícil, né? Para quem não é fluente, sim, quem não é nativo inglês é difícil de falar. Então é B-A-R-E-R, tá? E aqui nós vamos colocar nossa chave DPI, da Zapster, tá? Não da OpenAI, da Zapster. Lá no painel da Zapster, você vai vir aqui em meus tokens, tá? Meus tokens. Você vai
criar novo token, Você vai dar nome para ele. Vou colocar aqui Master Class. E esse nó, eu vou, de novo, é igualzinho a OpenAI. Você só pode copiar agora. Você não vai ter acesso a ele novamente. Então, guarda ele em lugar seguro aí. Então, aqui no Better, eu vou colar ele, tá? E agora no Body, eu liguei o Body aqui também, porque a gente vai precisar mandar o Body. E a gente vai mandar os campos Instance ID. E eu vou colocar mais parâmetro aqui. O outro campo vai ser o recipient e mais parâmetro vai ser
o text. Dando que vão vir essas informações aqui. O instance ID, se você voltar aqui no painel da Zapster, em instâncias, o instance ID é isso aqui. você pode copiar ele e colocar aqui no instance ID. Ou, se você quiser, lá no webhook, aqui no header, em algum lugar, tem instance ID, está aqui. Então, fica a teu cargo. Você pode colocar a variável que vem do header do webhook da Zapster ou colocar o valor da instância aqui mesmo. Eu vou deixar o valor da instância mesmo por padrão, tá? Porque eu quero, na verdade. O recipient
aqui vai ser quem vai receber essa mensagem. Não é você, é a pessoa que vai receber. Nesse caso específico aqui, o recipient e o sender são as mesmas pessoas, né? Então, aqui nós vamos pegar o recipient. Colocar aqui o id do recipient. E o text é o valor que nós queremos retornar para esse usuário. É o texto que vai no WhatsApp do usuário. Então, esse texto está onde? Ele está aqui no getMessage. E é esse data0, content0. TextValue, tá? Então, eu vou copiar ele aqui, vou jogar. Você vai ver que agora esse texto aqui vai
ser enviado para o nosso usuário lá no WhatsApp, tá? Então, vamos lá. Quase terminando o nosso bot, quase terminando o nosso bot, hein? Você vê que não é bicho de sete cabeças, né? Então, eu vou testar o nosso workflow aqui e vamos ver se ele vai funcionar. Agora é a hora da verdade. verdade. Olha só. Então, ele mandou para a Zapster e a Zapster vai mandar para nós aqui, ó. Olha só. Olá, como posso ajudar você hoje? Foi a Zapser que me mandou esse vídeo. Esse vídeo não, perdão. Esse texto, tá? Então agora, vamos lá.
Eu vou... Entrar aqui no nosso subhook. Quase terminou da aula. Segura os pontos aí. Eu vou desfixar essa mensagem aqui, porque agora eu quero testar o workflow com uma mensagem que eu vou enviar. Então, eu vou testar o workflow aqui. Enquanto eu não mandar nenhuma mensagem para mim mesmo lá, ele não vai executar esse workflow. Ele está esperando. A anteninha está ligada. Agora eu vou mandar uma mensagem aqui. descobriu o Brasil? Pergunta bem tosca, né? Olha só, ele começou a rodar com a mensagem nova agora. Ele mandou para o OpenAI e o OpenAI vai retornar
para nós. Olha só, agora vamos ver se aqui no WhatsApp ele vai mandar para nós. Olha só. Beleza. Tá vendo? O Brasil foi descoberto pelos portugueses em 1500 liderados por Pedro Álvares Cabral. Maravilha. Vamos para a penúltima etapa do nosso bot pra ele ficar completo. Tem problema aqui que eu vou explicar pra você. Tem problema aqui, que quando eu colocar isso aqui em produção, como eu estou mandando mensagem para mim mesmo, quando ele receber essa mensagem aqui, o bot vai responder essa mensagem. Então, você vai ter bot conversando com ele mesmo loucamente aqui, você não
vai conseguir fazer nada. Para resolver isso, nós precisamos colocar tratamento na mensagem que chega. Então, olha só, antes de qualquer coisa, aqui no webhook, eu vou adicionar campo aqui ó, cliquei aqui no maizinho, eu vou colocar if, tá? Aqui ó, if. Então, aqui nesse if eu vou checar o tá? Que que é esse comando? Você lembra bem que eu falei pra você, né? Aqui no scale draw a gente vai precisar ter comando para ele... não coloquei aqui. Mas a gente vai precisar ter comando para ele só responder quando tiver esse comando na frente, tá? Porque
aí quando a OpenAI responder, esse comando não vai estar lá e ele não vai fazer nada, tá bom? você já vai entender melhor como é que vai funcionar isso aqui. Então, o que eu tenho que fazer? Eu quero ver se o texto que a pessoa mandou, que é esse text aqui, em algum lugar... Aqui, ó. Esse text... Eu quero ver aqui, se ele começa, starts with, eu vou colocar aqui, barra. Então, ele só vai responder se começar com barra a pergunta. eu vou voltar para o canvas aqui. E olha só, se for verdadeiro, ele vai
continuar. Se for falso, ele só vai ignorar. Então, a nossa automação vai morrer aqui. Se não começar com barra, ele vai morrer. Vamos testar isso aqui. Eu vou testar o workflow de novo. Agora eu vou mandar uma mensagem para mim mesmo aqui, né? Eu vou mandar... Beleza. Olha só, morreu. Por quê? Porque não tem a barra no começo. Então agora eu vou testar o Workflow novamente, eu vou entrar no WhatsApp, eu vou mandar... Quem foi? Pedro Álvares Cabral. Agora sim. Por que que funcionou? Porque tem a barra na frente. E o mais legal é que
agora, quando a OpenAI responder, ele vai mandar senha barra, então ele vai vir aqui, ele vai mandar senha barra, resposta, e quando ele receber essa mensagem, ele não vai dar pau, ele não vai ficar entrando no loop infinito aqui. Olha só, então ele trouxe aqui para nós o nosso chat IPT pessoal. Maravilha, quero colocar isso aqui em produção, quero usar esse bot aqui todo dia na minha vida. Perfeito, vamos para a próxima etapa. Colocar isso aqui em produção é super simples, tá? A primeira coisa que nós precisamos fazer, e talvez a única, se eu me
lembro bem, aqui no webhook, lá no comecinho dessa aula, nós vimos que tem duas URLs, né? Tem a URL de teste e a URL de produção. única coisa que você precisa fazer é copiar essa URL de produção, voltar lá na Zapster, configurar a tua instância aqui, tá? tô aqui no webhook sabendo que eu já tenho né eu não consigo adicionar outro aqui deixa eu ver se consigo adicionar na verdade eu vou criar novo eu vou colocar Masterclass Prod, e a URL vai ser essa aqui, a URL de produção. Não é a de teste, é a
URL de produção lá do N8n. Aí aqui eu vou colocar só mensagem enviada e eu vou salvar. Eu acho que ele não vai deixar, porque a versão gratuita da Zapster só pode colocar webhook por instância. Então, o que eu vou fazer? Eu vou vir aqui, eu vou excluir esse webhook, sim, excluir. Aí sim, eu vou adicionar novo. Aí eu vou criar novo webhook, aí eu vou colar aquela URL, eu vou em mensagem enviada e eu vou salvar. Agora sim, eu vou salvar alterações. Beleza, primeiro passo completo. Para terminar, você vai vir aqui no teu workflow
e aqui em cima você vai ativar ele. Então, você vai ativar ele, ele vai aparecer como active e agora eu vou mandar uma mensagem lá e você vai ver o que vai acontecer. Então, eu vou entrar aqui. Eu não mandei testar o workflow, então vamos lá, vamos voltar. Não está testando o workflow, olha só. Não estou tocando no teste workflow. Eu vou entrar aqui no meu WhatsApp e eu vou mandar a mensagem para mim mesmo. quem é você? Beleza, como é que eu sei que tá funcionando ou não? Aqui em cima você vai em Executions,
tá? Aqui em Executions ele vai trazer todas as execuções do teu bot, testando ou não, tá? Essa última aqui ó, que você tá vendo, foi a que a gente acabou de executar, foi a mensagem que eu acabei de mandar, tá? E olha só que legal que eu vou mostrar pra você aqui. Ele recebeu, ele rodou a nossa thread, ele me respondeu aqui já no WhatsApp, tá? Sou personal GPT. E olha só o que aconteceu. Se você entrar aqui no N8n, você vai ver que ele rodou mais uma, mais uma execução. Por quê? Porque ele mandou
mensagem pra ele mesmo. Então, ele disparou o webhook da Zapster com a mensagem enviada e ele ia entrar no loop. porque ele mandou uma mensagem, ele disparou o webhook, mas como não tem o comando na frente, ele cancelou a workflow. Então, é por isso que nós colocamos esse comando na frente, senão a gente estava ferrado. Ia entrar no loop infinito ali e nunca mais ia acabar. Então é isso. Eu espero que você tenha gostado dessa aula, dessa masterclass. Agora você tem bot pessoal para você usar aí. E o mais importante é que você já tem
a base para você criar mais bots, mais automações no WhatsApp ou em qualquer lugar que você quiser para começar a criar produtos com o IA. Por que eu estou falando isso? Olha aqui na minha tela de novo. Essa automação que eu estou mostrando para você aqui, ela parece a que nós acabamos de montar, mas ela não é. Ela é a automação que nós usamos no curso. que é a base para mais projetos. Vocês podem ver que ela é quase igual à que nós acabamos de montar aqui. a mesma estrutura, mas ela tem também a chamada
de função. Aqui é que está o segredo. Aqui é que nós chamamos funções, salvamos o banco de dados, buscamos o banco de dados. Aqui é que dá mais inteligência, mais ferramentas para nossas automações. Então entenda que o que você acabou de ver aqui nessa aula é a fundação para que você consiga crescer mais, para que você consiga criar mais automações e começar a dar mais poder para ela. Para você, óbvio, para que você consiga ir mais rápido, você pode fazer parte da nossa comunidade. Lá nós temos essa e mais automações. Nós temos automações completas para
você usar. Nós temos automações completas para você baixar e vender, se você quiser. Inclusive, já tem alunos nossos vendendo automações baseadas nas automações que nós criamos dentro da comunidade. já estão ganhando 60, 70 mil reais por mês. dos nossos membros criou uma agência de automações também e sendo bem legal a experiência. E lá na comunidade é onde você vai ter o network para você criar automações, para você ter todo o framework para você criar essas automações também, contatos para que você consiga vender esse tipo de serviço. E lá é onde nós expandimos esse conhecimento. O
que mais você vai ver lá? Para você não precisar ficar usando o free trial do N8n aqui, a gente mostra para você desde o começo como que você pode auto-hospedar. o N8n no Railway, por exemplo, numa plataforma sua, para você não ficar dependendo e tendo que pagar R$125 por mês lá na plataforma do N8n. Nós também ensinamos você a engenharia de prompt, como que você pode criar instruções melhores para o teu... Assistente, tá? Nós também ensinamos aqui no próprio Assistents, né? Nós também ensinamos aqui, ó, eu vou abrir o Bookkeeper para você ver, esse assistente
aqui é o mesmo que roda aqui, tá? Esse assistente aí, você pode ver que ele tem prompt bem maior, Ele também usa o GPT 3.5 Turbo aqui, mas ele tem funções que podem ser chamadas. Essas funções buscam livros do banco de dados, pegam os dados do usuário e salvam os dados do usuário do banco de dados. Isso aqui pode ser usado para várias coisas. Tem pessoas criando bots de captura de leads em cima disso aqui. SDR de desenvolvimento de vendas também são sendo criados em cima disso aqui. Outra automação que nós temos também é o
HGuru. No HGuru, nós temos busca em arquivo. Então, o nosso cliente pode subir arquivos e o bot faz busca nesses arquivos. Ele também chama funções, ele também tem prompt muito rebuscado aqui para que ele obedeça as instruções. Então, a gente passa tudo isso, engenharia de prompt e tudo mais. Então, nós temos várias e várias automações que englobam várias, assim, 90% das necessidades dentro da comunidade. Você vai aprender do zero, tudo isso aqui que eu mostrei para você. Nós vamos nos aprofundar mais em APIs lá dentro da comunidade. Nós temos mais... Nós temos mais de 15
horas de aula lá dentro da comunidade, tá? Então a gente, mesmo que você não saiba nada, você vai sair da comunidade com pelo menos uns 4 bots ativos pra você conseguir vender e o networking que a comunidade traz pra você, né? Então o objetivo lá é fazer com que você crie produtos rapidamente e que consiga colocar no mercado rapidamente pra começar a criar business em cima disso. Não só a ganhar dinheiro rápido, mas a criar negócio, tá? negócio sustentável, não negócio que você vende e não consegue mais vender depois, tá? Então, essa é a ideia
da comunidade. Eu espero ver você lá, onde nós nos aprofundamos muito mais dentro desses bots aqui, tá? Inclusive, tem microsalas lá dentro da comunidade, que foi criada pelo Felipe Raitano, meu sócio, que ele te mostra do zero como que monta, como que integra com o Stripe, como que você recebe, como que você gerencia usuários. É super completo. e super legal, tá? Então espero ver você lá. Não deixe de aproveitar essa oportunidade. Geralmente todo mês a gente acaba aumentando pouquinho o preço, porque a gente coloca mais e mais conteúdo lá dentro, tá? Além também das lives,
né? Nós temos lives toda semana. com membros da comunidade que já estão ganhando dinheiro para compartilhar a experiência e tudo mais. E comigo e com o Felipe também, que a gente faz tipo mentorias em grupo, tá? Que a gente chama de office hours lá dentro. Então, pelo menos uma vez por semana nós temos isso. Beleza? Então aproveite, faça parte da comunidade. Aproveita que o preço atual é o menor preço que vai estar talvez pelos próximos 30 dias, tá? Fica esperto nisso. Entra na comunidade, aproveita lá os 7 dias que nós temos de garantia e vê
o que você acha, tá? Eu tenho certeza que a tua vida vai mudar quando você entrar lá dentro. Beleza? Qualquer dúvida, estamos à disposição. Deixa o comentário aqui embaixo e bora lá.