E aí automatizador tudo beleza seja muito bem-vindo ao canal da aoti meu nome é Hugo eu sou consultor em automação de Mark e nesse vídeo eu vou te ensinar como você pode recuperar de forma automatizada Todas aquelas mensagens né que tiveram falhas nos envios durante ali sua automação seja por exemplo uma notificação de WhatsApp e-mail ou qualquer outro evento ali que você acaba perdendo né por conta de uma indisponibilidade eh do serviço da P que você tá utilizando tá especificamente nesse vídeo nós vamos mostrar um exemplo prático envolvendo uma automação de WhatsApp né ou seja
um envio de mensagem automática ali no WhatsApp do Lead tá então desde já se você gosta aí dos nossos vídeos se você apoia aí o nosso trabalho se inscreva no canal e dê um like aí nesse vídeo para que ele possa alcançar o maior número de pessoas possível aqui no YouTube Tá bom então antes de a gente entrar aqui né na explicação do workflow né Eh eu gostaria de fazer uma breve explicação sobre a diferença né do Rabbit MQ né que no caso será o serviço eh que vai gerir essa fila né que vai recuperar
essas mensagens que às vezes eh se perde né Por indisponibilidade do serviço fazer uma breve comparação com o ntn no modo fila tá infelizmente tem muitos usuários que acabam confundindo né acha que o fato de estar utilizando Rabbit MQ significa que o ntn dele está escalável né ou seja o ntn ntn dele está pronto para poder lidar com milhares e milhares de execuções e não é bem assim tá eu vou explicar o porquê Então como você pode ver aqui eu fiz esse essa representação aqui né esse gráfico aqui e só para explicar mais ou menos
o conceito tá então de um lado aqui nós temos um workflow né do ntn usando o Rabbit MQ tá Que nada mais nada menos que é um serviço ali e dentro do workflow tá ou seja tem um node Nativo do rabit MQ onde você vai fazer o tratamento ali da recuperação das mensagens tá então eh workflow só vai conseguir fazer Essa gestão de fila se ele tiver o node do Rabbit MQ por isso que eu coloquei aqui workflow específico Então não é algo que se aplica a todos os workflows de forma automática não você tem
que especificar qual workflow Você vai querer que que tem tratamento adicionando os nodes do Rabbit MQ tá E aí nesse workflow o que que vai acontecer você pode determinar ali uma regra né para poder encaminhar a mensagem work do Rabbit MQ tá esse work ele é único né que é o próprio serviço do rabit e ele vai simplesmente receber essa solic do workflow e vai devolver PR pro workflow por meio do gatilho tá então ele vai ficar nesse ciclo aqui até conseguir entregar aquela mensagem que outrora havia apresentado fal tá agora já no ntn modo
fila né e o conceito já é um pouco diferente por quê Porque não se trata necessariamente de recuperação de mensagens tá mas se sim uma estrutura eh escalável por contar aqui com vários works né então cada work aqui seria eh uma Instância ali trabalhadora né uma Instância que vai processar as suas execuções e as execuções vão sendo delegadas a cada um eh de forma aleatória por meio do Heads tá que é um outro serviço também relacionado aí a fila de mensagens como se fosse o rabit MQ tá E então o Reds ele vai ficar orquestrando
esses works aqui que pode ser coners ou servidores né voltados aí para instâncias trabalhadoras né e ficarão responsáveis e pela execução dos seus work flows Tá e isso é aplicado em todos os workflows do seu ntn de forma automática por qu porque é algo que tá é imbuído ali na configuração a nível infraestrutura do seu ntn tá algo que tá definido ali na nas variáveis de ambiente digamos assim tá então se aplica todos os workflows Ok e aqui no modo fila você não tem necessariamente a recuperação ali eh de mensagem né Por exemplo vamos dier
que deu um problema em um serviço né Sei lá uma API WhatsApp ou então num smtp e o Lead não recebeu ali o WhatsApp não recebeu o e-mail ou não recebeu SMS né enfim eh o modo fila ele não vai ele não vai conseguir fazer a recuperação dessa mensagem tá mas o que que acontece aqui se porventura o seu ntn a Instância principal ela ficar indisponível né ou cair as suas automações elas continuarão funcionando porque a execução fica por parte aqui das instâncias trabalhadoras e não mais da sua Instância principal diferente que do rabit MQ
ok que depende da instância principal para que ele possa fazer essa recuperação de mensagens tá então é basicamente essa diferença aqui um voltado paraa recuperação de mensagens em caso de falhas aí dos serviços das apis e o outro é a estrutura escalável do ntm para poder lidar com milhares e milhares de execuções já que conta com múltiplos works eh de forma independente ou seja não precisa da instância eh principal estar ali no ar para que as suas automações possam estar funcionando Tá bom então é basicamente essa a diferença Então se alguém a partir de hoje
chegar para você e falar assim ah meu ntn está no modo fila né Eu tô usando Rabbit MQ mostre esse vídeo para ele para ele entender de uma vez por todas que uma coisa não tem nada a ver com a outra tá é claro Claro é interessante que você use as duas coisas tá a gente recomenda que seu esteja no modo fila e você também use aí o Rabbit MQ na nos seus workflows tá bom bom Depois de toda toda essa explicação extensa aqui vamos direto ao ponto né que é principal aqui do nosso vídeo
bom eu criei aqui um workflow que ele basicamente faz a recuperação ali de mensagens que foram que tiveram falhas né Eh ali no WhatsApp talvez por indisponibilidade da api ou por qualquer outro fator que impediu ali da mensagem chegar tá Não pelo fato do número ser inválido ok a gente não vai ficar reenviando mensagem para número que não é válido aqui a gente tá considerando que o número existe né até porque a gente vai estar enviando pra própria pessoa que mandou pra gente tá então dificilmente vai ser por motivo de número inválido mas geralmente é
porque a api ali ficou alguns segundos alguns minutos fora isso eh é até comum de acontecer tá então mediante a isso você não vai eh ter o risco aí de perder as mensagens né de perder a oportunidade de notificar o seu contato seu Lead ali e a venda né porque uma mensagem que não é entregue muitas das vezes é uma venda perdida tá então como é que funciona aqui nesse exemplo tá eh primeiro eu vou explicar aqui a parte de cima tá e logo em seguida a parte de baixo tá então como você pode ver
aqui nós temos dois gatilhos tá o primeiro é o Web Hook e da o Zap tá que vai estar monitorando e as mensagens recebidas no nosso WhatsApp tá Inclusive eu já estou até conectado aqui na usap já informei os parâmetros de conexão aqui no no no workflow tá eh e aí o que que vai acontecer quando alguém mandar a mensagem eu vou receber esse evento né que aí vai vir tudo vai vir a mensagem da pessoa o nome dela telefone dela o horário que ela mandou o tipo da mensagem se é texto se é imagem
se é vídeo Ok eh vai vir várias informações tá E aí essas informações né que na verdade é a mensagem eu vou encaminhar para a fila do Rabbit MQ Ok então só para você ver aqui como é que é por dentro eh eu simplesmente apontei aqui a minha credencial tá a operação eu deixo aqui como send a message to rapit MQ ou seja Enviar mensagem para o rabit MQ o modo fila tá e o que né né que seria a fila eu coloquei ntn tá que é justamente a o nome da fila que tá lá
no meu rmq eu já vou te mostrar no painel tá E aí mantém essa opção send input data habilitado tá E aí coloca apenas dois apption aqui né que seria o argumento eh x que Type né onde você vai informar o tipo quum tá e você vai habilitar também o outro apption chamado n para que o r possa entender que aquela mensagem tem que ter tentativas e mais tentativas de entrega até ela ser entregue de fato tá então por isso que a gente coloca durable PR a tentativa durar ali até conseguir enviar bom E aqui
euo um de 10 segundos pouquinho e para você ver a mensagem e entrando ali na fila de espera do do Rabbit né e em seguida já sendo processada tá eh Então essa aqui é a primeira parte ok uma vez que a mensagem é entregue pro Rabbit esse gatilho aqui né que é o segundo gatilho da automação ele vai pegar essa mensagem que entrou aqui pra fila tá E vai acessar ela ok E aí mostrando aqui por dentro conceito É bem parecido né eu apontei aqui para uma credencial informei a fila que é ntn tá e
coloquei o argumento né que é o tipo da fila o tion durable né para ele ficar numa tentativa ali constante até conseguir E aí eu coloquei esse tion aqui também chamado Jon per Body né ou seja para que quando ele receber ali né um um a mensagem né que vem no formato string ele possa pegar esse Jon que tá no formato string e colocar ele no formato de objeto né Para quê Para que você consiga referenciar os dados né os campos aqui desse Jon eh nos seus demais nodes aqui da do do fluxo tá e
o último apption que eu coloquei aqui foi do do paralelismo né ou seja Quantas mensagens né você quer que seja processada ali simultaneamente né Por padrão né a gente coloca aqui um mas se você tiver muitas mensagens entrando ali em fila né Você pode aumentar esse lote aqui para 10 ou para 100 né dependendo como é a a a sua demanda aí de execuções Tá mas eu coloquei aqui um beleza OK E aí o que que vai acontecer esse trig aqui vai receber eh essa mensagem né que entrou perfilo aqui deedo vai aguardar aqui 15
segundos e aí em seguida a gente vai verificar se na mensagem da pessoa tem a palavra cupom por quê Porque a ideia aqui é que ah seja garantida o envio da mensagem né com o código do cupom para pessoas que viram algum anúncio seu numa rede social dizendo que você tem um produto um serviço que tá com desconto com 20% de desconto e que a pessoa que te chamar no WhatsApp vai receber o cupom né ou seja tem aquele botão ali saiba mais pessoa clicando ali ela já cai no WhatsApp e aí já manda essa
mensagem padrão né Por exemp pode ser quero cupom Então gostaria de mais informações sobre o cupom qual é o código do cupom tá você define a palavra-chave ali do anúncio E aí o que vai acontecer eh a gente vai verificar tá eh se nessa mensagem tem a palavra-chave a keyword né chamado cupom Se tiver vai ser verdadeiro e aí vai enviar um WhatsApp com o código do cupom tá então eu defini aqui um http request tá usando aqui o send Tex d o Zap Ok você pode conferir depois aqui na documentação como é feito esse
request tá E aí ele vai enviar para esse contato tá e chamou no WhatsApp né falando que quer saber mais sobre o cupom ele vai enviar o código do cupom tá E aqui eu consigo mencionar o nome dele né para ficar uma uma mensagem ali dinâmica tá informando aqui o código do cupom tá essa informação aqui ó tanto né do nome dele quanto do do telefone dele tá vendo ó é o telefone de remetente tudo isso vem do webhook d o Zap que encaminha para a fila do Rabbit e o Rabbit eh recupera essas informações
tá então isso aqui ele ele ele está vindo aqui do gatilho do Rabbit tá e outrora pegou lá da fila de mensagens e referente ao web Hook aqui da usap que foi acionado Deu para entender então esse node insere a mensagem na fila né geralmente a gente coloca ele depois ali do Web Hook né E esse node aqui é para poder extrair essa mensagem da fila para processar ela e aqui no no fluxo tá bom E aí ao tentar enviar né a gente vai verificar se a mensagem ela foi enviada com sucesso tá E aqui
nesse if a gente coloca aqui um equal 200 né para saber se o campo result né ali do do post do do envia texto dapp retornou 200 se retornou é Porque de fato a mensagem foi entregue né então não apresentou falha e aí não tem o que fazer tá mas se retornar qualquer código diferente do Vamos considerar que houve falha na tentativa de entrega e aí a gente coloca esse outro node aqui do Rabbit MQ é igualzinho esse aqui ó ou seja ele simplesmente pega a mensagem né que não conseguiu ser entregue e manda ela
novamente pra fila de espera lá no Rabbit MQ tá a diferença é que aqui desabilitamos essa opção send input para colocar aqui no campo mensagem uma referência eh livre digamos assim tá essa referência ela está vindo do conteúdo aqui do do Trigger tá Então como aqui ele encaminhou os dados do Web Hook para o trigger é do Trigger que eu vou eh pegar o conteúdo né para poder reenviar novamente paraa fila de espera que vai acabar sendo reprocessada né pelo Trigger bom então é basicamente essa lógica aqui tá sendo o que eh como o Trigger
lembra que eu informei aqui ó ele gera um objeto Deon Ok e aqui no Message a gente tem que passar o valor no formato string Então como ele retorna para mim uma objeto Jon eu tenho que usar essa função aqui ó chamado Jon stringy tá E aí entre parênteses eu coloco referência né do do meu Jon objeto aqui ó que vem do Trigger do rabit MQ tá E aí ele vai de fato gerar uma string ali do Jon que vai enviar pra fila de de mensagem do Rabbit tá bom o restante é tudo a mesma
coisa tá E aí basicamente Essa é a estrutura tá então vai receber a mensagem do do contato tá só reformulando reformulando não só explicando aqui novamente tá vai receber a mensagem do contato no WhatsApp vai mandar pra fila do Rabbit vai processar essa mensagem ok E aí processando ele vai verificar se tem mensagem de cupom se tiver manda a mensagem manda o código do cupom pra pessoa e se houver falha nessa tentativa de entrega do cupom manda a mensagem novamente pra fila para que seja feito uma nova tentativa de envio tá então é como ficasse
no loop até esse env aqui dar certo é basicamente assim e aí antes de a gente executar aqui pra gente ver isso funciona na prática só te mostrar aqui o painel é o do nosso Rabbit MQ tá lembrando que nesse vídeo aqui né eu não vou mostrar como instala e configura aqui o Rabbit até porque o vídeo ficaria muito extenso e também não é o foco do vídeo tá mas se você quer aprender como instalar e configurar o Rabbit MQ né a criar uma fila aqui e e já conectar ele integrar ele ao seu ntn
você pode estar conferindo isso no próprio intensivão ntn tá que é o nosso curso mais completo de ntn né para quem quer desenvolver workflows de forma profissional tá então um dos módulos do curso é o Rabbit MQ tá onde a gente ensina desde a instalação ali do Rabbit até o o teste né da da fila de mensagens tá bom então aqui é o painel né eu tenho aqui já a minha fila chamada ntn que eu criei tá E aqui eu vou ter três Campos né eu vou ter o Red né que significa as mensagens que
estão na fila esperando serem processados Tá eu vou ter o o necked tá oct é basicamente as mensagens que já estão em processo de execução ou seja saíram aqui da fila que é Red né e passaram a ser processados Ok e e o total é basicamente as mensagens que estão em espera e as que já estão sendo processadas Beleza então basicamente vai entrar aqui logo em seguida né Por exemplo quando a gente manda mensagem por aqui ó pelo envi mensagem pra fila ele entra aqui ó tá quando eh o Trigger né Reconhece que tem uma
mensagem ali na fila de espera e ele processa essa mensagem ela já vai cair aqui tá então é basicamente assim Beleza deixa eu fechar aqui tá então vamos fazer o teste deixa eu verificar aqui se tá certinho tá ó então por exemplo aqui já tá ativado o workflow aqui está o WhatsApp né a qual estou conectado que é o meu WhatsApp pessoal eu estou com a conversa da Auto aberta tá então é como a auto fosse o Lead né o cliente e eu sou a empresa né o WhatsApp do hug aqui é como se fosse
a empresa e aí por exemplo se eu chegar aqui por exemplo vou mandar qualquer mensagem tá vou mandar aqui por exemplo um Olá ó mandei um Olá aí a ideia é que não mande nada porque a automação ela tá esperando a keyword a palavra-chave cupom Ok então ó basicamente não vai fazer nada é claro que os workflows foram executados né porém e não não não fez nada né não processou nada porque não atendeu ali com a palavra-chave tá até verificar aqui se a ZAP está conectada ó tá conectado tá agora se eu chegar aqui por
exemplo e digitar cupom ou então vou botar assim ó e quero cupom ó mandei aqui ó quero o cupom vamos ver se ele vai responder ó respondeu tá vendo ó mandou aqui a mensagem né de boas-vindas ó chamando o cliente pelo nome e mandou aqui o cupom tá é claro não deu pra gente ver aqui porque a gente tava monitorando aqui a conversa né mas por exemplo se eu chegar aqui ó eu acessar aqui vou acessar aqui o AB executions tá então por exemplo se eu chegar aqui e mandar uma outra palavra chave por exemp
Vou botar aqui ó botar aqui uma pergunta Tem cupom de desconto ó mandei repare que iniciou as duas execuções né é uma do Web Hook e a outra do Rabbit MQ Trigger tá então basicamente a mensagem entrou aqui na fil E aí foi processada Ok e agora ó concluiu o processamento e Zerou a fila Por que Zerou a fila que a mensagem foi entregue tá então como a api está funcionando perfeitamente ele tá entrando aqui na fila uma única vez e ele não entra novamente porque não está dando Fale aqui no envio tá tá dando
aqui ó sempre sucesso ó Ok ó código 200 beleza agora vamos simular um cenário aqui onde a api estivesse fora tá então por exemplo se eu chegar aqui eh e por exemplo eu não sei se pausar vai dar certo é a gente pode pausar deixa eu ver aqui ó desativei tá tá E aí novamente ó eu vou chegar aqui e vou mandar uma outra mensagem sobre o cupom né ó Qual é o código do cupom ó mandei aqui ó foi executado aqui ó repare que a mensagem ela já caiu aqui na fila e já começou
a ser processado tá porém como o node aqui né do do htp request tá desativado ou seja comoi tivesse fora ele vai ficar numa espécie de loop tá então repar aqui ó ele nunca acaba eh esse ciclo aqui ó ele vai tentar enviar não vai conseguir ó 15 segundos ó ó não conseguiu tá vendo ó e aí ele sempre manda o ele sempre manda aqui a mensagem paraa fila tá então a mensagem ela ela fica aqui sendo reprocessada diversas vezes até conseguir e ser entregue E aí sim a fila é zerada tá então se eu
chegar aqui agora por exemplo eu vou desativar tá ó vou desativar o workflow workflow tá repare que a mensagem que tá aqui e em processamento ela vai voltar aqui pra fila como não vai ter nova tentativa de envio né ó voltou aqui pra fila ok por porque eu desativei meu workflow então não tá sendo feito novas tentativas então a mensagem ela não se perde ela fica aqui em memória do Rabbit MQ para ser entregue assim que a automação for ativada novamente tá sendo que dessa vez eu vou ativar a nossa api aqui ou seja como
a api voltasse ao ar Ok E aí Se eu ativar aqui novamente repare que automaticamente ó essa mensagem que havia apresentado falha ela vai voltar ser processado Tá mas eu acredito que dessa vez vai conseguir entregar ó tá vendo que o cliente ficou um bom tempo sem resposta porque a pi tava fora quando a pi Voltou ao a ó ele conseguiu entregar mensagem e a fila Zerou aqui tá incrível né então é para isso que serve o rabit MQ Ou seja você ter a garantia de que todas as notificações serão entregues para os seus clientes
para os seus contatos mesmo que a api que você está utilizando ali fique alguns momentos fora tá então é uma forma profissional de você e fazer automações aí de notificações Tá beleza então é isso aí Espero que você tenha gostado aí desse tutorial se você ainda não deixou um like no vídeo deixa agora ficou alguma dúvida com relação a isso pode deixar aí nos comentários também tá bom E não se esqueça de se inscrever no canal para poder apoiar o nosso trabalho tá bom Um grande abraço e valeu