Fala galera eu me chamo Manuel sejam muito bem-vindos ao meu canal e esse canal que foi criado com intuito de e abordar as ferramentas open source aí né atualmente no mercado são ferramentas e gratuitas né você tem ali algumas limitações e uma e outra mas a maioria dá para usar de boa hoje a gente vai abordar aqui o chat que é um um Omni Channel né então é um sistema para você fazer atendimento e você consegue ali conectar várias caixas de entrada diferent você consegue conectar um telegram um WhatsApp um Messenger e outros né e-mail
Por exemplo também e é isso a gente vai utilizar aí o Type bot também o n8n e a Evolution Api para fazer essa conexão aí entre o chatu e o WhatsApp e o Type bot também com WhatsApp né Eh se vocês gostarem do conteúdo já se inscreve no canal tá é ativa os sininhos aí para não perder nenhum vídeo novo vou deixar aqui na descrição também é o link aí do nosso canal do telegram então vocês entrem lá participem dê sugestões de nov vídeos de novos vídeos tá e eu quero postar aí pelo menos aí
dois vídeos na semana então tem bastante conteúdo legal aí pra gente abordar Então bora lá pro vídeo tá o intuito aqui não é mostrar a instalação tá é somente ali como é que você consegue fazer as coisas como é que você utiliza a ferramenta em si né E hoje aqui na automação a gente vai ter um bot ali para fazer o primeiro atendimento no WhatsApp e e depois ele vai transferir para um agente tá eu tentei até gravar esse vídeo aqui de forma eh passo a passo ali bem didático mas o vídeo acabou ficando muito
longo né passando aí de uma hora e pouco e acaba ficando um pouco massivo tá então eu vou resumir bastante aqui no vídeo mas tiverem alguma dúvida é só mandar lá no no telegram Beleza Vamos embora lá pro vídeo aqui a gente tem o nosso bot tá é um bot bem simples tá galera fiz uma coisa bem basicona só pra gente entender a lógica aqui como é que a gente pode fazer essa aí um agente lá dentro do chat tá então vamos lá vou fazer aqui nosso teste eu já T com meu chat conectado meu
Type conectado tá então aqui dentro do manager da Evolution a gente conecta aqui o tye bot e conecta também o chat beleza vamos lá vou dar um oi aqui no bot então bot já fez aí nosso primeiro atendimento Olá tudo bem seja bemvindo tá legal nome é um bote bem simples tá galera então eh tem nada demais aqui nele né só para vocês verem então a gente já recebeu aqui no chat último a conversa né porque ele tá integrado você vai conseguir ver toda a interação do bot aqui também só que a conversa chega não
atribuída tá atribuída a ninguém Beleza então a partir do momento que eu falo que quero prendente ele gera aqui pra gente um número de protocolo né e ele já atribuiu aqui pra gente a conversa então se a gente V aqui o agente atribuído e ele já também coloca o protocolo da conversa e o status do bot né bot aqui ele tá como pausado se a gente entrar aqui na sessão de Type bot e ver as sessões abertas né a gente entra aqui a gente vai ver sessão pausada tá galera Então se né o atendente aqui
tomou a conversa né o cliente recebeu que o cliente respondeu o bot não faz nenhum tipo de interação mais por quê Porque ele tá pausado tá então é isso Ah agora vamos Então vamos PR parte das explicações tá vamos voltar lá no Type bot então aqui galera a gente começa aqui com fluxo simples tá para essa automação que funcionar no mente de vocês vocês T que utilizar a variável remote jid para quem não conhece essa variável aqui é uma variável que você declara aqui dentro tbot desta forma aqui mesmo cria a variável o nome da
variável e embaixo você bota a variável em si tá é ela é uma variável da Evolution api que faz essa parte aí de e identificar o número do do WhatsApp de forma dinâmica sem a necessidade de você perguntar o número do cliente tá E aí aqui a gente botou aquela mensagem né coletamos o nome aqui mas a gente nem tá utilizando o nome só para exemplificar mesmo aí aqui a gente já faz a pergunta se ele quer utilizar quer falar com atendente e a gente faz a condicional aqui da resposta que ele deu né a
gente coletou a resposta dele aqui e fizemos a condicional com a resposta dele né se no caso for um ele gera o número de protocolo né E já vai fazer a parte aqui da automação aqui embaixo esse protocolo galera eu fiz com JavaScript tá ele gera um número aleatório aí de zero até até 999 999 tá e se vocês não souberem fazer JavaScript Enfim vocês podem em vez de fazer assim Vocês pode até utilizar aqui uma função no próprio Type bot que é o Random ID então ele gera pra gente aqui se a gente for
executar aqui is aqui aqui deu erro porque ele processa todos os outros eh todas as requisições estão aqui embaixo tá vendo ele gera aqui pra gente um um Random ID só que esse Random id não é muito né amigável digamos assim com o número de protocolo então eu fiz aqui um Java aqui bem basicão mesmo o nosso o nosso Deixa eu tirar aqui só pra gente executar aqui nosso protocolo aqui com JavaScript bem simples tá de seis dígitos Então vamos lá ah Seguindo aqui né explicações primeira requisição aqui eu vou alterando o nome aqui para
vocês pausa o bot na Evolution tá essa primeira requisição aqui vai pausar o bot na Evolution Então a gente tem aqui esse end Point aqui da Evolution tá vocês vierem aqui Evolution colocar lá no Google Evolution po ele vai trazer aqui para vocês o todos os end Point disponíveis que tem na Evolution api e aqui ele faz por versão tá aqui a gente tá utilizando a 1.7.1 então você seleciona aqui a versão que você tiver utilizando que a base a base é praticamente a mesma tá só mais aqui na 2.0 e 8.1 que mudou algumas
coisas mas os são praticamente os mesmos vocês V aqui integrações Type vocês V esse Change session status status eh então você pega aqui esse status aqui essa URL desculpa e vocês colocam aqui né só que não vou copiar e colar que já tá aqui a minha certinha mas ela vai vir aqui para vocês assim vai vir para vocês assim aonde a base URL essa daqui e instance é o nome dessa distância aqui que nós temos Então essa daqui no meu caso a minha tá E aí vocês alteram tá só isso é do tipo post no
header você vai passar sua P né lá da pode passar a p tanto da distância quanto tambémm da Evolution ap como um todo Então beleza aqui no bar a gente vai enviar essa requisição aqui copia e cola aqui colar aqui aonde no remote deid gente vai passar o valor da variável a gente criou e noat vamos utilizar o beleza vez executado vai vir aqui nas nossas acho que tá sem sessão nenhuma aqui ele tá com a sessão aqui né aqui a sessão vai vir como vai estar Como ativa e quando ele eh executar isso aqui
ela vai ficar de ativa para pausada que é o que tá aqui tá então beleza Eh uma vez o pote pausado O que que a gente precisa né a gente precisa eh a gente precisa vir abrir aqui e consumir lá api do chat apiat que gente vai utizar primeiro é end de Procurar contato abr aqui documentation documentação aqui da noss api a gente vai precisar primiro buscar um contato então aqui vocês V documentação S proc no Google também vopi essa ur L aqui tá copia essa URL e vocês vão colocar aqui tá aqui se vocês
tiverem utilizando chatu oficial essa mesma URL Mas se vocês tiverem hospedando né Vocês vão alterar aqui para essa URL aqui para essa base dessa URL aqui tá eh e ele deixa voltar e ele pede para passar um count a account ID que é justamente esse aqui ó tá vendo aqui se você tiver na página inicial account e logo em seguida vem o ID tá então você coloca você vai substituir isso aqui pelo id da conta já tô com a minha pronta aqui então vou voltar o tipo do o método é o do tipo get tá
aí a gente vai precisar aqui usar o o query eh a a quer aqui para fazer essa busca né no contato então aqui dentro do typeb e a gente pode usar esse q aqui né para buscar o nome desse contato o identifier desse contato o e-mail ou então o número de telefone tá nosso caso aqui a gente vai usar o identifier beleza porque no chat útil o nosso identifier é justamente o nosso remote de ID da Evolution se vocês abrirem aqui tá vendo identifier é justamente o Remote de identificador então a gente usa ele nós
já temos ele vamos utilizar ele aqui tá então colocamos aqui o e colocamos a variável aqui n já vai pegar dinamicamente PR gente beleza vez que a gente você poderem fazer aí de vocês se vocês utilizarem isso aqui certinho né já vai est mapeado Mas se vocês quiserem mapear n mudar nome de variável e tudo mais que vocês precisam fazer né Vocês precisam trabalhar com esse se eu der um test request aqui ele funcionou tá vendo mas no de vocês vai tá não vai funcionar vai acontecer isso aqui tá vai trazer ninguém por porque a
gente tá tentando fazer uma busca lá com remote de vazio né a gente tá passando só isso aqui mas a variável mas a variável tá vazio quando é que essa variável ela é populada quando a gente começa uma conversa lá no WhatsApp que ele pega da Evolution tá não é o nosso caso aqui então a gente precisa fazer o seguinte né a gente vai aqui em variável de valor de variável para teste e coloca aqui a variável Rem de que a gente botou aqui e vamos colocar o nosso identificador aqui tá então coloca aqui e
dá um test request Aí sim aí né vai trazer certinho tá e aqui a gente vai salvar na variável legal que que a gente precisa salvar aqui na variável é o ID do contato que é ele vem aqui depois do e-mail tá no payload É esse aqui então você apaga aqui aí vai aparecer para vocês selecionarem então data payload ID tá e a gente cria uma variável aqui e salva dentro dessa variável eu já tenho criado aqui então não vou criar tá beleza Eh uma vez com o ID do contato salvo né gravado dentro de
uma variável a gente precisa fazer outra chamada de api que é essa daqui eh eh contact conversations né né que seria qu eh conversa do contato a gente vai copiar essa URL aqui tá é a mesma coisa copia e cola aqui eh aqui muda para sua URL account ID você vai colocar lá da sua do chatot e aqui esse ID é o ID da da conversa que Nós salvamos aqui dentro dessa variável tá anteriormente então eu vou puts botar tudo aqui esqueci de salvar então vou botar aqui account ID tá E aqui no nesse ID
aqui a gente tem que passar a variável que nós gravamos lá que é o ID contato tá então ID contato no qu não precisa de nada o rer é a mesma coisa token lá da acabou que eu nem falei do Token né o token tá aqui é o Api access token tá vocês pegam lá esse a ap access token onde é que você pega você vem aqui no chat configurações do perfil token de acesso você copia esse token aqui e taca aqui que vai funcionar que é esse to que ele precisa para fazer requisições aqui
o meu já tá gravado aqui tá vendo eu vou apagar aqui E a mesma coisa vai dar um request não vai funcionar aí se vai precisar né passar o ID do contato aqui de novo a gente viu lá naquela hora que era o oito então ele trouxe aqui pra gente beleza ã aí aqui que que a gente vai precisar salvar aqui a gente vai precisar salvar o ID da conversa tá Então a gente vai aqui em save né salvar aqui data payload ID É esse aqui aqui o Sender né É ess aqui message é esse
daqui tá tem o message ID que não é é Nossa ID mesmo tá que é o ID da conversa não é da mensagem ele tem tanto o da da mensagem que é esse 63 e o da conversa que é o 8 tá então a gente gravou aqui também dentro de uma variável no caso aqui foi de conversa beleza aí agora a gente que que a gente vai fazer aqui a vai chamar outro end Point que agora é o endp de conversas né mais de contato conversations e a gente vai chamar o endp aqui de atribuição
tá cadê na verdade esse aqui ó conversation assignment tá então você tem aqui o assign conversation mesma coisa copia essa URL n faz as devidas alterações aqui deixa copiar aqui didático cola aqui vai alteração ele aqui account ID aquele lá conversation ID né ae já salvou mesma coisa a gente vai trocar aqui né colocar o valor da variável não conversei shid foi a gente salvou ID conversa e ID da conta agora a gente vai fazer e uma chamada do tipo post tá método post e vamos enviar aqui no bar o que a gente quer que
é o assign ID tá ele já dá aqui para você o exemplo você pode copiar aqui e colar aqui tá eu não tô usando aqui Team no chat você tem essa opção de criar times aqui tá mas eu não tô utilizando só vou botar aqui só atribuir pro para esse ID aqui toma muito cuidado quando vocês forem copiar lá né Se for usar não for usar o team ID você tira e apaga a vírgula aqui tá porque como você não vai passar Mas nenhum nenhuma informação ali el não precisa dar vírgula você já encerra aqui
a requisição essa nid aqui tá zero o nosso é o um por que o um porque o nosso usuário é o um se eu vier aqui nas configurações do perfil eh quer dizer do super admin aqui ó supor que você tenha um monte de usuário né então você vi aqui em users você vai ter o ID aqui do user você entrar nele aparece o ID dele tá vendo ID de um o nosso aqui no caso vai ser o um tá atribuir aqui um a atribuiu legal a conversa agora a conversa já está atribuída pro nosso
agente e aqui a gente precisa fazer só um fazer o é o mesmo end Point anterior Tá mesmo então você pode copiar e colar o mesmo igualzinho a única coisa que muda aqui em vez de ser esse assignments você vai usar aqui o Custom atribut dessa forma aqui mesmo tá só vocês alterarem lá b c atribut aqui você vai vir em bar a mesma coisa Ah onde é que eu pego esse cust atribut tá o chat também tem errado também tem o post aqui os end então você pode também tem até mais end Point disponível
aqui na própria documentação então vocês podem entrar aqui e e consumir esses end points aqui tá bom eh vamos lá aqui seria conversations aqui ele tem um add Custom attributes então vocês vão é a ul é aquela mesma que eu já falei para vocês só muda aqui o final e Aqui vocês têm o exemplo tá então vocês copiam aqui o exemplo né coloca aqui aí aqui você vai passar né Eh a gente Primeiro vai tá esse exemplo aqui primeiro a gente tem que criar aqui no chatu eh atributos personalizados Tá eu já tenho aqui criado
atributo personal tem o de contato tem o de conversa no nosso caso a gente vai utilizar o de conversa e aí a gente precisa criar como é que você cria você clica aqui para criar né conversation dá um nome para ele eh D um nome aqui é teste ele já cria a chave aqui automático tá vocês bota a descrição tipo pode ser texto mesmo você salva né E aí depois a chave é isso aqui pra gente poder utilizar na api Exatamente esse campo aqui então a gente copia aqui está que a gente quer né Vamos
tirar esse product name aqui tiramos aqui a gente vai passar aqui o status de pauses né que a gente já tinha pausado anteriormente com com a Evolution ap e e o outro que a gente tem aqui é o protocolo tá então eu vou também colocar esse protocolo lá dentro da conversa tá então aqui a gente pode apagar o restante muito cuidado com a vírgula aqui tem que apagar que a gente não vai mais usar aqui a gente precisa botar aqui ele tá enviando um número né então seria um inteiro em número você não precisa botar
ali as aspas né a gente tá tá enviando inteiro a gente precisa enviar uma string aqui então a gente coloca entre aspas então a gente coloca aqui o nosso protocolo que é Nossa variável tá aí é mesma coisa fazer o teste só utilizar aqui a variável de teste né como eu exemplifiquei anteriormente então basicamente isso tá aqui eu coloquei isso aqui no final só pra gente fazer um teste aqui para verificar se tá validando ou não tá a gente já no no início do vídeo já validei que tá funcionando ele não falou mais nada mas
eu vou tirar aqui por exemplo a parte que ele faz a requisição de pausar o bote e vamos eh Vou apagar aqui conversa apaguei ali pra gente exemplificar se por algum motivo PR gente verificar M se tá funcionando né se não tá então a gente não vai fazer a parte que chama o bot para pausar então a gente vai clicar vai mandar um oi lá pro bot né já criou nossa conversa no chat não está atribuído fal com atendente já atribuiu aqui pra gente então agente atribuído protocolo status do bote pausado Só que nesse El
ele tá pausado aqui porque aqui dentro né no quando a gente botou aqui o cust atribute ele tá fixado então ele tá S pausado mesmo que eu não tenho percorrido aqui o caminho de pausar o bot ele vem com aquele status ali né então Eh lembra que eu falei aqui no final que ele caiu aqui por quê Ele tá esperando uma mensagem minha vamos supor que o atendente aqui né mandou uma mensagem e pegou á oi né aí o cliente vai responder aqui oi aí O bot mandou mensagem aqui Tá vendo porque o bot não
tá pausado né a gente não fez a requisição para pausar o bot se a gente olhar aqui a sessão o bot tá aberto né então a gente viu que tá funcionando legal a automação tá então Vamos retomar aqui ligar aqui novamente salvar aqui vamos apagar essa conversa Beleza então a gente já viu o que que tá funcionando só vou executar aqui de novo porque eu fiz aqui também uma automação de bônus aí para vocês tá então aqui a gente fez Só usando Type bot não tem n8n mas vamos usar o n8n para poder fazer a
parte de e reativar esse bot né que assim existem negócios que você só precisa do atendimento do bot uma vez depois não precisa mais quem vai atender é é o humano ali né mas tem negócio que não o bot sempre tem que fazer o primeiro atendimento e né Eh fazendo essa atribuição depois tá então eh Vamos colocar aqui a gente precisa reativar esse bote depois de um tempo senão ele vai ficar pausado ali e a pessoa não vai ser mais atendida pelo bote tá gira o nosso número de protocolo aqui eh já tá atribuído aqui
com o nosso número de protocolo estus pausado Se eu mandar outra mensagem agora o bot não fala nada tá é esse comportamento que a gente quer e beleza agora aqui no no n8n eu fiz uma uma automação bem basiquinha aqui também só para terar aqui o nome aqui só para reativar esse bote né Eh então a gente tá vendo aqui a gente tá com esse bote pausado Tá eu vou rodar a automação aqui para vocês verem desculpa preciso resolver essa conversa porque aquela automação ali ela eu vou explicar para vocês como é que ela funciona
mas precisa est com tick resolvido tá então rodar aqui ele rodou se a gente der atualizar uma atualizar aqui a sessão já sumiu Se eu mandar outra mensagem aqui o bot retoma né E mais uma vez temos uma sessão criada tá como é que funciona essa automação aqui do do do n8n a gente tem aqui Um sched Trigger né que ele vai executar essa automação aqui A cada 30 minutos Esse foi o intervalo que eu botei vocês podem colocar qualquer intervalo depende muito aí de vocês a gente precisa agora consumir um end aqui de conversas
que é esse endp aqui ó conversations conversation list tá então vocês vão colocar o URL de vocês aqui o account ID aqui e dar um get lá mas antes vocês vão precisar fazer um filtro qual filtro status resolvido n são os status aqui ó que ele dá aqui na api a documentação aqui ó status ele tem o o open o resolved p sno né aberto resolvido pendente e adiado tá E nesse cenário aqui a tá a gente tá levando em consideração que o atendente fez o atendimento né e resolveu tudo para resolver finalizou e vai
finalizar a conversa pro atendente não ter que ficar lembrando de ligar e desligar esse bote tá a gente faz essa automação aqui para rodar A cada 30 minutos resolver aqui a conversa para rodar A cada 30 minutos tá resolvido e aqui eu botei mais um filtro de inbox ID que você pode ter várias caixas de entrada aqui vários WhatsApp conectados e às vezes o teu aquela tua automação tá por uma caixa específica então se você clicar aqui na caixa de entrada você tem aqui o ID do inbox tá então você pode também fazer isso aqui
senão ele vai listar todas as conversas de todas as caixas de entrada nesse endp aqui se você não filtrar pela caixa de entrada então é interessante filtrar também pela caixa de entrada até para diminuir o Range ali de conversa que ele vai trazer se você tiver muitas caixas de entrada tá E muitas conversas e aqui na a gente via aqui normal no tudo mais ele trouxe aqui pra gente a conversa no caso só tem uma Tá mas de vocês ele vai trazer todas as conversas que estão comatus de resolvida aí aqui a gente faz um
if que esse if faz precisam colocar aqui do tipo Expression aqui nos parâmetros vocês vão precisar mapear aqui deixa só rodar aqui de novo rodar aqui para ele pegar pra gente aqui eh vocês vêm aqui vocês vão mapear resolvidas tá aqui nesse if a gente tá verificando aqui o status do Type bot aqui dentro dessa conversa aqui resolvida aqui ele tá sem status nenhum tá por isso que ele não tava quando eu puxo aqui ele não tá trazendo mas eu vou botar aqui ele não tá com estatus que a gente rodou automação ali ele apagou
Tá eu vou mostrar para vocês Ah então aqui Ele trouxe pra gente então a gente precisa aqui fazer o seguinte vi aqui em noes request n que é o primeiro lá output data data payload item cust attributes então aqui você vai est vazio você clica aqui já vai mapear e aqui no valor Vocês precisam Colocar assim pa né que é justamente o que tá aqui E aí você testa daqui ele vai trazer um falso tá vazio que a nossa condicional aqui ela não é falsa ela é verdadeira então a gente Segue o fluxo Qual é
o próximo passo aqui chamar de novo né O end Point lá da Evolution para agora fechar aquele bot encerrar aquela são sessão Então a gente vai usar aqui o status Close it tá não é mais paused Close tá beleza a gente faz isso aqui eu não vou fazer porque acho que já não tem mais nenhuma sessão aberta aqui é não tem eh vou fazer aqui para vocês verem né ele sumiu tá aqui na minha conversa eu ainda tô com o status do bot tá então aqui no Custom attributes é aqui vocês vão passar aqui o
vazio tá vocês vão chamar aquele mesmo end Point aqui esse aqui deixa eu botar aqui corrigir aqui para vocês ó e aqui vocês tiram tá deixa vazio e aqui no protocolo vocês vão precisar mapear também o protocolo né então request output data Porque se vocês não passarem o protocolo aqui eh ele vai acabar removendo também o protocolo ele vai ele não tem um update lá no no chatot na documentação Ele só tem um post Então quando você faz só um post não passando o protocolo ele vai só criar o status aqui e não vai vai
deixar o status vazio e não vai ter protocolo também tá então aqui no protocolo vocês vão mapear aqui também vai vir em payload item eh message item vocês vão vir aqui [Música] em Cadê é no próprio Custom atributs mesmo aqui de novo Custom atributs é porque aqui tá vazio né Deixa eu botar aqui tá vazio porque a gente apag que ele apagou botar aqui protocolo aleatório aqui de executa aqui novamente executa aqui novamente só pra gente poder mapear tá então V mapear aqui de novo ép request outp data data cust atributos tá e a gente
passa o protocolo aqui para poder o protocolo não ser apagado somente o status do Type bot tá bom se eu nós executar aqui de novo ele vai dar falso porque o nosso Type board status está vazio tá então é isso galera não tem muito é um bote simples tá não não fiz muito nenhum cenário assim absurdo mas só para vocês entenderem como é que vocês podem fazer a automação de vocês e aí esse n8n aqui ele vai executar cada 30 minutos vai trazer quem tá resolvido e vai fechar a sessão da pessoa é rea fechar
a sessão para poder criar nova sessão tirar do pausado e depois vai remover lá Oat bot esse cliente né se ele voltar se ele voltar ali ele vai continuar a conversa Ali vai gravar um novo do Type bot Tá bom então é isso galera o vídeo de hoje foi esse se vocês gostarem gostaram do conteúdo no comentário e sugestões aí do que vocês querem ver aqui no no canal Valeu rapaziada Até a próxima