Introdução
Para quem não conhece, o Pipedream é um serviço de cloud functions com autenticação gerenciada. Pensa num IFTTT, só que com a flexibilidade do Javascript e a geração de segredos simplificada do IFTTT. É bem interessante para usos simples como bots básicos do Telegram. Se a sua automação lida com Webhooks e ações simples o Pipedream quebra um galho.
O seu código é uma função assincrona javascript vanilla que recebe alguns parametros:
- event: dados da requisição
- steps: pega dados de algum passo anterior, eu não recomendo usar multipasso por que fica lento e meio zuado.
- auths: objeto com os serviços autenticados e suas respectivas credenciais
- params: argumentos passados para a automação e que não é uma boa colocar direto no código
Além dos parâmetros existem outras variáveis especiais como:
- $checkpoint: variável que é persistida entre invocações, basicamente salva valores javascript serializáveis (objetos, arrays, strings e números).
- $respond: função que retorna uma resposta para a requisição.
- require: mesma função do NodeJS
Cada invocação tem limite de 30s, não sei por que mas o tempo de execução das invocações não tem lá muita consistência, varia de algumas dezenas de milissegundos até uns 5 segundos por mais trivial que seja o programa.
Cada invocação gera um evento que pode ser reproduzido, os eventos ficam salvos em um tipo de linha do tempo.
Ao salvar o código de um programa ele ainda não é aplicado então você precisa dar deploy para aplicar.
A cada dia o plano gratuito oferece 1800s de tempo de execução, meia hora, ou 3333 invocações. Assim como operadora de telefone eles mandam email avisando se você chega a consumir 80% dos recursos, geralmente é sinal de bug no código. A pouco tempo lançaram o plano pago a 10 dólares por mês que é sem limites, assim como a zoeira.
NÃO USA A FUNCIONALIDADE DE CHECAR POR EVENTOS DELES (event source): O checador de eventos vai consumir tua cota perguntando por novidade de 15 em 15 minutos. Para isso o IFTTT quebra um galho, como eu fiz essa gambiarra eu conto ali em baixo.
As automações
Já tenho algumas automações por lá, coisa simples só para fazer o meio de campo ou só reagir a um evento.
Request Inspect
Esse programa simplesmente retorna o objeto event como JSON
Achei Por Ai bot
Esse programa recebia requisições do IFTTT de posts do Twitter do Achei por Ai. Não uso mais depois que descobri o RSSHub, o que então resolveu com um bot de RSS.
Gato Curioso
Um programa que eu não to usando mais, ele enviava os dados de um email para um chat do Telegram.
To Sem Sinal da Tim
O bot que controla o ntemsinaltimbot. Ele recebe os eventos pelo IFTTT, o IFTTT fica de olho por novos tweets por palavra chave e manda o link do tweet para o endpoint HTTP, o bot então deixa acumular alguns tweets e quando fecha n tweets responde numa tacada (fiz isso só pra reduzir uso de cota usando Promise.all
).
Hoje Handler
Esse ai faz a distribuição do Actionsflow.
Artigos que eu dou estrela no Pocket, vídeos que eu dou like no YouTube, estrelas no GitHub e outros textos que eu mando usando uma automação usando Automate vão para esse programa que basicamente manda para um canal fechado do Telegram e cria uma nota para editar depois no RemNote. Acho que o investimento de tempo valeu a pena hehe.
Automation bot
Esse ai tem coisas bem específicas e eu não quero expor, mas é basicamente um bot para chamar de forma mais facilitada algumas automações sem ter que abrir o site tal e mandar rodar. Agora não to usando tanto por que tem ações que eu mando rodar no meu notebook mesmo usando o nixgram.
Youtube like4me bot
Esses dias o meu Vanced deslogou e não queria logar mais de novo, curiosamente o Youtube Music continua normal. Isso ia dificultar um pouco a minha automação do like do YouTube. Esse bot da like com a minha conta em todos os links do YouTube que eu mandar para ele.
Acumulador do RandomTube
Para quem não sabe eu fiz um esquema que gera vídeo de compilação no YouTube com vídeos encaminhados em um grupo, esse bot é o que acumula os file_ids com seus tamanhos em segundos para o gerador de compilação. Deu um trabalho dexar redondo por que dependendo onde o agente que gera vídeo rodava essa chamada dava erros 503, coisa que eu resolvi fazendo o agente video conversar diretamente com o Telegram e gerar um link clicável que remove os vídeos usados da lista quando clica.
Considerações finais
É difícil fazer um código estável em JS, a tipagem dinamica não checa nada e você tá meio que sozinho. Felizmente o pipedream manda email quando o código lança uma exception. E como deu para perceber, tem um certo boilerplate nos códigos, quem sabe com uma biblioteca de suporte dá para mitigar isso.
Não esqueçam de esperar todas as Promises antes de finalizar a função.
Se alguém souber algo tipo Pipedream mas usando Go me avisa.