{"flow":{"id":51,"summary":"Watch Slack posts containing a given word and send all new ones per email","versions":[200,201],"created_by":"henri186","created_at":"2023-12-26T10:41:37.055Z","votes":0,"approved":false,"apps":["slack,","gmail"],"value":{"modules":[{"id":"a","value":{"tag":"","lock":"{\n  \"dependencies\": {\n    \"@slack/web-api\": \"latest\",\n    \"windmill-client\": \"1\"\n  }\n}\n//bun.lockb\nIyEvdXNyL2Jpbi9lbnYgYnVuCmJ1bi1sb2NrZmlsZS1mb3JtYXQtdjAKAgAAADaxqPRaos59H7au7h3rv37dLhGIXbLo59pacc9Q1xtNUSYAAAAAAAAaAAAAAAAAAAgAAAAAAAAACAAAAAAAAACAAAAAAAAAADIaAAAAAAAAAAAAAAAAAAAAAA4AAAAPAACAAAAAAA4AAIBwLXJldHJ5AHJldHJ5AAAANgEAAAwAAIBwLXF1ZXVlAOUBAAAJAACAKAIAAAkAAIDWAAAADQAAgPcAAAAJAACA7AAAAAsAAIDjAAAACQAAgG4DAAAKAACAbWltZS1kYgBfAwAADwAAgDIEAAAOAACAYXN5bmNraXTWAAAADQAAgGF4aW9zAAAA4wAAAAkAAIAxBQAAEAAAgMsAAAALAACAuwAAABAAAICvAAAADAAAgKIAAAANAACAAAAAAAAAAACZDWdj94+o/2poHKY+6dhONUo9nTjFUbcB0Gjgshevg1lToXz8YYpoe4PfaSuRldWo3/Pn8bjwMeD1JL8Ze8xnp4ntZSZhKEfWTkan64/hNGu5NYjDck+ej5lHaPIbqi8vAZOXXsth9MPFpPH9xqVuT3cqnzXRr/4UeH4bJKDgnM6tZTKjLb6Kp4ntZSZhKEc4sP2Qx8mZ94+ZR2jyG6ovGyIDn1GgNOWRL1qNJrU9OSztl33bB5K+OkmZS/G7IBngXd5zAAcd+AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAB0AAABIAACAAQAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAABlAAAAPQAAgAYAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAADYAAIAEAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAEIBAAAzAACAAAAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAB1AQAAOgAAgAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAArwEAADYAAIAGAAAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAO4BAAA6AACAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAxAgAAOgAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAawIAAEIAAIAEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAK0CAAA6AACAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADnAgAAPgAAgAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAJQMAADoAAIACAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAHgDAAA9AACAAgAAAAEAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAC1AwAANwAAgAEAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAA7AMAAEYAAIABAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAEAEAABEAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAACEBAAAOAAAgAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAvAQAAEIAAIADAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAP4EAAAzAACAAAAAABsAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAABBBQAAOgAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAewUAAEkAAIABAAAADwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAMQFAAA4AACAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAD8BQAAQQAAgAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAPQYAADkAAIACAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAHYGAAA7AACAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAALAAAADQAAAAIAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAIAAAARAAAAAQAAABIAAAAAAAAAEgAAAAAAAAASAAAAAAAAABIAAAAAAAAAEgAAAAMAAAAVAAAAAQAAABYAAAAAAAAAFgAAAAEAAAAXAAAAAAAAABcAAAAAAAAAFwAAAAAAAAAXAAAAAgAAABkAAAADAAAAHAAAAAAAAAAcAAAAAAAAABwAAAABAAAAHQAAAAAAAAAdAAAAAQAAAAAAAAACAAAAAgAAAAAAAAACAAAACwAAAA0AAAACAAAADwAAAAAAAAAPAAAAAAAAAA8AAAACAAAAEQAAAAEAAAASAAAAAAAAABIAAAAAAAAAEgAAAAAAAAASAAAAAAAAABIAAAADAAAAFQAAAAEAAAAWAAAAAAAAABYAAAABAAAAFwAAAAAAAAAXAAAAAAAAABcAAAAAAAAAFwAAAAIAAAAZAAAAAwAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAQAAAB0AAAAAAAAAHQAAAAEAAAAAAP4P/gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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cGl3aW5kbWlsbC1jbGllbnRodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aW5kbWlsbC1jbGllbnQvLS93aW5kbWlsbC1jbGllbnQtMS4xODAuMC50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9Ac2xhY2svd2ViLWFwaS8tL3dlYi1hcGktNi45LjAudGd6QHNsYWNrL2xvZ2dlckBzbGFjay90eXBlc0B0eXBlcy9pcy1zdHJlYW1AdHlwZXMvbm9kZWV2ZW50ZW1pdHRlcjNmb3JtLWRhdGFpcy1lbGVjdHJvbmlzLXN0cmVhbWh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3AtcmV0cnkvLS9wLXJldHJ5LTQuNi4yLnRnekB0eXBlcy9yZXRyeWh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JldHJ5Ly0vcmV0cnktMC4xMy4xLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0B0eXBlcy9yZXRyeS8tL3JldHJ5LTAuMTIuMC50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wLXF1ZXVlLy0vcC1xdWV1ZS02LjYuMi50Z3pwLXRpbWVvdXRodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wLXRpbWVvdXQvLS9wLXRpbWVvdXQtMy4yLjAudGd6cC1maW5hbGx5aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcC1maW5hbGx5Ly0vcC1maW5hbGx5LTEuMC4wLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2V2ZW50ZW1pdHRlcjMvLS9ldmVudGVtaXR0ZXIzLTQuMC43LnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1lbGVjdHJvbi8tL2lzLWVsZWN0cm9uLTIuMi4yLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjUuMS50Z3pjb21iaW5lZC1zdHJlYW1taW1lLXR5cGVzaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjM1LnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbWUtZGIvLS9taW1lLWRiLTEuNTIuMC50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1zdHJlYW0tMS4wLjgudGd6ZGVsYXllZC1zdHJlYW1odHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWxheWVkLXN0cmVhbS8tL2RlbGF5ZWQtc3RyZWFtLTEuMC4wLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAudGd6aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXZlbnRlbWl0dGVyMy8tL2V2ZW50ZW1pdHRlcjMtMy4xLjIudGd6aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXhpb3MvLS9heGlvcy0wLjI3LjIudGd6Zm9sbG93LXJlZGlyZWN0c2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS00LjAuMC50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb2xsb3ctcmVkaXJlY3RzLy0vZm9sbG93LXJlZGlyZWN0cy0xLjE1LjMudGd6aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvQHR5cGVzL25vZGUvLS9ub2RlLTIwLjguMi50Z3podHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9AdHlwZXMvaXMtc3RyZWFtLy0vaXMtc3RyZWFtLTEuMS4wLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BzbGFjay90eXBlcy8tL3R5cGVzLTIuOS4wLnRnemh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL0BzbGFjay9sb2dnZXIvLS9sb2dnZXItMy4wLjAudGd6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","type":"rawscript","content":"import { WebClient } from '@slack/web-api';\nimport { getState, setState } from 'windmill-client@1';\n\ntype Slack = {\n  token: string\n}\n\nexport async function main(slack_resource: Slack, channel: string, keyword: string) {\n  const web = new WebClient(slack_resource.token);\n\n  // Get the last state\n  const lastState: any = await getState();\n\n  // Get the list of messages in the channel\n  const result = await web.conversations.history({\n    channel: channel\n  });\n\n  // Filter the messages to only include new ones with the given keyword\n  const newMessages = result.messages.filter((message: any) => {\n    return message.text.includes(keyword) && (!lastState || message.ts > lastState.latestMessageTs);\n  });\n\n  // Update the state with the timestamp of the latest message\n  if (newMessages.length > 0) {\n    await setState({ latestMessageTs: newMessages[0].ts });\n  }\n\n  return newMessages;\n}\n","language":"bun","input_transforms":{"channel":{"expr":"flow_input.channel","type":"javascript"},"keyword":{"expr":"flow_input.keyword","type":"javascript"},"slack_resource":{"expr":"flow_input.slack_resource","type":"javascript"}}},"summary":"A new Slack post with a given word in a given channel (both gave by the user). Only return new posts that were not in last state","stop_after_if":{"expr":"result == undefined || Array.isArray(result) && result.length == 0","skip_if_stopped":true}},{"id":"b_loop","value":{"type":"forloopflow","modules":[{"id":"b","value":{"lock":"{\n  \"version\": \"2\",\n  \"remote\": {\n    \"https://deno.land/std@0.82.0/encoding/base64.ts\": \"b1d8f99b778981548457ec74bc6273ad785ffd6f61b2233bd5b30925345b565d\",\n    \"https://deno.land/std@0.82.0/encoding/base64url.ts\": \"4a876fd1d44cc9d373f4eca5ec6ddab372bab3ca51f021c87ddedda677724286\"\n  }\n}\n","type":"rawscript","content":"import { encode as base64UrlEncode } from \"https://deno.land/std@0.82.0/encoding/base64url.ts\";\n\n/**\n * @param user_id User's email address. The special value `me` can be used to indicate the authenticated user.\n */\ntype Gmail = {\n  token: string;\n};\nexport async function main(\n  gmail_auth: Gmail,\n  to_email: string,\n  subject: string,\n  message: string,\n  user_id: string = \"me\",\n) {\n  const token = gmail_auth[\"token\"];\n  if (!token) {\n    throw Error(`\n    No authentication token was found.\n    Go to \"https://app.windmill.dev/resources?connect_app=gmail\" to connect Gmail, \n    then select your token from the dropdown in the arguments window.\n    (Click \"Refresh\" if you don't see your resource in the list.)\\n`);\n  }\n\n  const text = `From: <${user_id}>\\nTo: <${to_email}>\\nSubject: ${subject}\\n\\r ${message}`;\n  const textEncoder = new TextEncoder();\n  const email = base64UrlEncode(textEncoder.encode(text));\n  const body = JSON.stringify({\n    raw: email,\n  });\n  const SEND_URL = `https://gmail.googleapis.com/gmail/v1/users/${user_id}/messages/send`;\n\n  const response = await fetch(SEND_URL, {\n    method: \"POST\",\n    headers: { Authorization: \"Bearer \" + token },\n    body,\n  });\n\n  const result = await handleSendEmailResult(await response.json(), to_email);\n  return result;\n}\n\nasync function handleSendEmailResult(result: object, to_email: string) {\n  if (Object.keys(result).includes(\"error\")) {\n    return Promise.reject({ wm_to_email: to_email, ...result });\n  }\n\n  return result;\n}\n","language":"deno","input_transforms":{"message":{"expr":"flow_input.iter.value.text","type":"javascript"},"subject":{"expr":"flow_input.subject","type":"javascript"},"user_id":{"expr":"flow_input.user_id","type":"javascript"},"to_email":{"expr":"flow_input.to_email","type":"javascript"},"gmail_auth":{"expr":"flow_input.gmail_auth","type":"javascript"}}},"summary":" Send Email (gmail)"}],"iterator":{"expr":"results.a","type":"javascript"},"parallel":false,"skip_failures":true}}]},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["channel","keyword","slack_resource","gmail_auth","subject","to_email","user_id"],"properties":{"channel":{"type":"string","format":"","default":null,"description":""},"keyword":{"type":"string","format":"","default":null,"description":""},"subject":{"type":"string","format":"","default":null,"description":""},"user_id":{"type":"string","format":"","default":"me","description":""},"to_email":{"type":"string","format":"","default":null,"description":""},"gmail_auth":{"type":"object","format":"resource-gmail","default":null,"description":""},"slack_resource":{"type":"object","format":"resource-slack","default":null,"description":""}}},"description":"https://www.windmill.dev/docs/flows/flow_trigger \n https://www.youtube.com/watch?v=4HTIKOAyVIg","recording":null,"vcreated_at":"2023-12-26T10:43:27.142Z","vcreated_by":"henri186","comments":[]}}