2022-01-13 02:25:30 UTC - Matt Welke: Got my first taste of the OpenWhisk programming model tonight. Up until now, I've only been using it as FaaS where I just create web actions. Or the simple version of the bot above where I have an action that isn't a web action but is just triggered by a periodic trigger (aka alarm), runs, and doesn't trigger any events of its own. But now, I got to play around with triggers and make an event based system.
The bot I described above was originally set up as a periodic trigger linked to a single action which did the web scraping and sent data to the Twitter API. I now want to expand it to do that, but also stream a row into BigQuery on Google Cloud Platform so that I can build a public dataset on BigQuery for myself and others to use. The docs on triggers were a really good read and the JavaScript OpenWhisk client had good docs in its README to help me get up and running invoking a custom trigger. +1 : Rodric Rabbah https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1642040730003200 ---- 2022-01-13 02:25:41 UTC - Matt Welke: My new architecture to enable my use case looks like this: https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1642040741003500 ---- 2022-01-13 02:26:17 UTC - Matt Welke: Legend: Green oval = trigger Blue rounded rectangle = sequence Purple rectangle = action Grey rectangle = action yet to come https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1642040777004200 ---- 2022-01-13 02:28:23 UTC - Matt Welke: I wanted to use Java because I like the dev experience having a compiler to help me (and I need to practice my Java for work anyways), but I noticed there wasn't a Java OpenWhisk client published. If I wanted to manually invoke my trigger, I'd have to write low level Java code to interact with the OW API. But I was able to grab the Node.js code from the README for the JS client and make a little "glue" action. It may as well be a pre-built action for this use case. It just passes params through while invoking a custom trigger: ```var openwhisk = require('openwhisk'); async function main(params) { const triggerName = 'free-ebook-of-the-day-released'; try { var ow = openwhisk(); const triggerResult = await ow.triggers.invoke({ name: triggerName, params, }); <http://console.info|console.info>(`invoked trigger "${triggerName}"`, triggerResult); return {}; } catch (err) { console.error(`failed to invoke trigger "${triggerName}"`, err); return {}; } }``` https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1642040903006500 ---- 2022-01-13 02:28:40 UTC - Matt Welke: Now, I'm well-positioned to build the action to also save the data in BigQuery later. https://openwhisk-team.slack.com/archives/C3TPCAQG1/p1642040920006900 ----