Overview

About this video

What You'll Learn

  1. Build and run a local n8n workflow using HTTP Request, Cron, Set, Function, and Webhook nodes.
  2. Use webhooks as lightweight API endpoints, switching between test and production modes safely in n8n.
  3. Connect external services like Philips Hue, OpenWeatherMap, and Telegram with credentials and triggers for real automations.

Tanay Pant walks David through n8n, building workflows in the editor UI with HTTP Request, Cron, Set, Webhook and Function nodes, then wiring up Philips Hue, OpenWeatherMap and a Telegram bot via BotFather.

Chapters

Jump to a chapter

  1. 0:00 Introductions
  2. 0:50 Who is Tanay?
  3. 0:54 Guest Introduction (Tanny Pant)
  4. 3:00 What is n8n?
  5. 3:35 No Code and Extensibility (Using Code)
  6. 5:59 Real-World Use Cases (Internal Automation)
  7. 9:50 Installing n8n
  8. 11:08 Running n8n (--tunnel)
  9. 16:10 Simple HTTP workflow
  10. 16:12 Exploring the n8n Editor UI
  11. 17:41 Demo: Sending Data with HTTP Request
  12. 21:39 Workflow Execution, Saving, and Settings
  13. 22:59 Trigger Nodes (Cron Example)
  14. 28:45 Working with JSON from HTTP
  15. 28:48 Demo: Getting Data from an API
  16. 30:54 Processing Data with the Set Node
  17. 34:14 Implementing a Webhook Endpoint (Cloud Function Question)
  18. 38:00 Philips Hue integration
  19. 38:03 Demo: Interacting with External Services (Philips Hue Example)
  20. 49:30 OpenWeatherMap integration
  21. 49:31 Demo: Using an API with Webhook Input (OpenWeatherMap)
  22. 54:10 Handling Input and Logic (Function Node)
  23. 1:12:00 Writing a Telegram bot
  24. 1:12:02 Demo: Building a Telegram Bot
  25. 1:18:10 Connecting Telegram to an API
  26. 1:23:05 Conclusion and Future Plans
Transcript

Full transcript

Generated from the English captions. Timestamps jump the player to that moment.

Read the full transcript

0:00 Introductions

0:10 I'll fix that later. Please remember to subscribe to the channel as well and thumbs up that video if you get an opportunity and you enjoy it. It really helps other people discover and find this content as well. Today we're gonna take a look at n8n and to do that I am joined by Tanny Pant. Hello Tanny. How are you? Very well. How are you doing today? Yeah, I'm alright. I did pretty well. The weather's nice in Scotland which is a rare feat especially at this time of the year. And this is my last day of work

0:42 this week. I'm just gonna give you far too much information though. My last day of work this week there's no streams tomorrow, I'm off for my birthday so I'm quite happy about that too and of course I'm very happy to be joined by you to cover n8n. Do you wanna just take a moment to tell us about you, who you work for, and and then we'll dive into the to today's content. Sure. So I'm Tane, and I'm the head of developer relations at n a ten. And what that entails is, like, I have been working on several exciting things recently, like helping

0:54 Guest Introduction (Tanny Pant)

1:13 our community automate a lot of really cool stuff and help them unleash their productivity. I've been involved in the world of open source and DevRel for almost six years now. And before this, I've been involved with the Mozilla Foundation on several tracks. And I've also published books on some of my favorite topics like Firefox OS, WebVR, and virtual assistance on Raspberry Pi. And since I have a background in computer science, I'm very familiar with programming and software development. And a while back, I learned about the LEGO programming language. Have you heard of it, David? I

1:49 mean, I consider myself quite well versed when it comes to esoteric programming languages, but I must say I did not know the LEGO programming language. Okay. So what they do is they use it in their Mindstorms products, and, those robots can be move made to move in certain patterns by connecting these preprogrammed blocks of movements. So when I saw that, I recognized the value it provides in reducing the effort of doing things by abstracting the complexity of making a robot physically move. And then last year, I came across n a 10, and something clicked in the back

2:23 of my head. I could totally see the genius of having a node based system with nodes for concepts like conditional logic along with products and services to automate things. And, this for me was like finding Lego for the real world. So as a developer advocate, a tool like n8n provides immense value to me to be able to build real world scalable demos so quickly. And as an educator, I need to be able to teach newcomers into tech about how things work with the support of node based thinking. And for me, no code is about empowerment,

2:57 and n eight n allows me to do just that. So I can introduce n eight ten, shortly. So n eight ten is an extendable workflow automation tool, and it has a fair code distribution model, which means that n a n a 10 will always have visible source code, be available to self host, and allow you to add custom functions, logic, and apps. And its node based approach makes it very versatile, enabling you to connect anything to everything. And our mission is to give everyone who uses a computer technical superpowers. Okay. So there are a few words there

3:35 No Code and Extensibility (Using Code)

3:38 that I heard that kinda give away a lot of flavor about what any n is then. So I'm gonna try and pick a few out. Like, you mentioned no code. Can we just talk about what no code is? Sure. So no code is the ability to build services, products, or or workflows without writing any code. So let's say I don't know, like, every what happens to me often living in Berlin is I go out, I forget my umbrella, and it rains, and I arrive in the office drenched. So, you know, having something as simple as,

4:14 you know, running a cron job every morning, let's say, at eight, and getting weather information and getting a text saying, like, hey. You should take an umbrella today because it's gonna rain. So even as simple as workflows like these, you can completely build them without writing any code. Okay. So that's really cool. People that not guess, people don't need code to build these workflows, which great. But you also the other thing that stuck out to me when you mentioned this was you said extendable workflow automation. So I'm assuming I have the option to write code

4:47 as well? You do. You do. So extensible actually covers different facets of n a 10. One of them being, yes, we have a function node so in that you can write JavaScript code. So in case there's something that isn't available in n eight n, you can write JavaScript code for making that happen, be that data transformation or something else. Then also, like, as I mentioned, n eight n is on GitHub. It's source code visible, and you can write your own custom notes if you know TypeScript. I've been doing that since the last week and it's a lot of fun I must

5:25 say. Okay. Cool. Let me pull up the the website then. Though right away I can see, you know, the fair code, the extendable workflows. I can see the number one product of the week. So you know, people are obviously liking this and then using it and that's backed up by you know, you've got 10,000 stars and a quite a high ratio of forks as well. So it sounds like it's maybe a really good project for people to contribute to as well and I'm just gonna make that assumption based on that like, and JavaScript is such a prominent language in

5:56 TypeScript, so that's pretty cool too. Now, what are some of the I'm assuming that you use any n on a daily basis, I'm assuming that your colleagues use any n on a daily basis. Can you maybe just give us a little bit of insight into some of the tasks that you're automating with this tool? Sure. So we're using n eight n in quite a lot of different ways. So we use this chatting platform called Mattermost. So for those of you who are unaware, it's an open source alternative to Slack, and they allow you to create custom slash commands

5:59 Real-World Use Cases (Internal Automation)

6:33 similar to the Slack ecosystem, I'd say. So we have a lot of different things like we use a slash call command that sends the other people in the company the link to the whereby room of the person who issued the command, and, whereby is a video conferencing service that we use. Then we have a slash GitHub command. So sometimes, you know, there's people contributing to the project or, making some pull requests and so on. And this helps us get information about the GitHub users, like, maybe their Twitter or their email so, you know, we can reach out to

7:09 them and thank them for supporting us. It also helps us, like, reduce unnecessary communication at times. Like, one of our colleagues is working on the n eight n cloud. It's the hosted version of n eight n. And, you know, we used to ping him from time to time, like, hey. How's it going? How many people have signed up? And this is unnecessary overhead. Right? And what we did was we created a slash SaaS command, which gets all the metrics about n eight ten cloud. So, you know, the conversations have to be more meaningful, like, oh, I have a specific question.

7:43 And, like, something really interesting we did recently, was so I'm working on me and my team is working on creating the documentation for different nodes in n8n. And so when we started doing this, n8n already had somewhere around 30, hundred and 40 nodes. And we add notes rather quickly. Like, if you take a look at our change talk, we have been adding notes at a great velocity. So, you know, like, we are creating documentations, but new notes are getting added. And sometimes, like, you're going on vacations and you have no idea, okay, which ones have been documented,

8:19 which ones haven't. So what we did was we also created slash docs command, but this also runs as a cron job every Monday. So what it does is it, gets information on what are all the nodes in n eight n through a GraphQL endpoint, and that data is being fed fed through Strapi. We get that data, and the name of the nodes sort of correlates to the doc URL of the documentation. So we use HTTP request node to see if we get a four zero four. If it did, then that documentation doesn't exist. So it sort of gives us a list. Okay.

8:54 These nodes need to be documented. So that's like one of the ways like some of the ways that we have been using in it and for. Nice. There's there was a lot of practical examples there. Things that I can immediately relate to and I'm thinking, wow. Like, I could we could use that in in in our team for sure. So pop quiz then. You mentioned there were a 30 nodes. How many are there today? That's a good question. I'd I'd take a chance and say around 200. Okay. So if I had I'm just gonna click around on the docs now because I'm

9:31 I'm I'm curious. This is the node library here. Yes. This one? Yeah. Alright. Okay. There's a fair few and I'm not gonna count them. I'm not gonna count them. I'll just say you're close enough that it seems plausible. Alright. I think what we should do is just get hands on it and start and start playing with n8n. So as a newcomer to the project how I was gonna say how they get started but as always there is a getting started part of the documentation. I'm just gonna assume and click please feel free to say stop, you're going the wrong

9:50 Installing n8n

10:09 way or whatever but MPX. No. I'm I'd say I'm comfortable writing JavaScript but the tooling has always kind of eluded me. I believe MPX is just a way to execute random, not random, but you know, some arbitrary package from NPM as long as I provide the name is that's that's correct. Right? Yeah. And once you close it, all the data would be lost though. So it's it's sort of like running on a docker container without any persistence. Okay. And I can see we have docker as an option too and we have the ability just to globally install it with npm.

10:43 Alright. Yeah. I think I may actually had done this at some point when I was curious. So let me grab my terminal. Move over here. Thank you. So let's see what happens. Okay. Maybe I haven't done it because the list is installing. We put out a release yesterday, so perfect. You'll have the latest version. Oh, wow. So we're playing with bleeding edge as well. Excellent. And I'm very exciting because I I added three nodes to yesterday's release, so hey. Three new nodes. Alright. I mean, when you say that it's easier, right, to add a new node.

11:08 Running n8n (--tunnel)

11:37 What do you mean? So let me me actually rephrase that question. How simple is it to add a new node? Are we talking like 10 lines of code, 50 lines of code, any dependencies? I guess it all depends on the node. Can you maybe just pick one of the ones that you released yesterday and tell us how you went about it? Alright. So yesterday we released Orbit. Do you know about Orbit? Yeah. The DevRel kind of metrics community Yes. Exactly. Yeah. Exactly. So I'd say, like, my first node was for Apache Kafka. And, like, that took me around three hours

12:15 to build it. And there was a reason because, like, I hadn't written JavaScript in around one and a half or two years. I have never worked with TypeScript before. And so Like, that was a bit of a bit of an effort there, but like it really depends on yeah. I mean, I'm hearing such contradictory stuff there. You haven't written JavaScript or TypeScript in a year and a half. Kafka is a bit complex, but a software and you're saying that three hours was long for implementing that. I mean, seems really quick. Like if I were able to build a

12:51 node for any end in under three hours, I'd be pretty shocked for myself. And you seem to be like, no, it should have been faster. So yeah. Like, it really depends on two things. It's like how familiar are you with this whole JS ecosystem. So TypeScript was a bit new for me. So that could have definitely increased the speed of development there. And second is the API or the service that you are implementing, how well documented it is. So just as an example, what we did so I I created this over the weekend. Right? And

13:25 I was implementing it using the Kafka JS library. So I was having a chat with one of my colleagues in the office, and I was telling him, like, hey. I did this on the weekend. Really excited about it. And he was like, oh, how long did you take? We had the same conversation. And then he said, like, can we should take shall we take a look at how quick it can be? And I was like, okay. We should definitely do that. So we picked up Google Translate. Right? And also depends on how complete the note is.

13:53 So Kafka, for instance okay. Like, you just send data to it, to a Kafka broker, but Orbit, for instance, had a lot of different endpoints. You can create crew member, crew to node, post a lot of different things. So translate, we said, okay. You put in a text query, it translates it to the target language. That's it. It does one thing. Right? That took me about twenty minutes to implement. So, like, at that point, I had played a bit around with n eight n, was a bit familiar with, like, how the notes look like. And,

14:27 yeah, like, basically, how how TypeScript essentially works. So it can be very quick. But then, again, like, I've heard from my colleagues who have been working on this is, like, it really boils down to how well documented, implemented the API itself is because that can make a lot of difference in the development time as well. Yeah. That makes sense to me. Definitely. Okay. We can talk more about the, you know, contributing notes a little bit later. Let let's cover some of the basics first. So I've done that install. Does that mean I can just run n a n?

15:00 Yes. So there's two ways that you can do that for sure. You can this will run n a 10, and there's another way of writing running n a 10. Is it and that's with tunnel. So, basically, that is n a 10 space start space hyphen hyphen tunnel. And what that does is oh, it start without the hyphen. Dash dash tunnel. And then hyphen hyphen. Yeah. So what this would do is is, like, if you are using a trigger node, which so, like, if you're using a Telegram trigger, for instance, or a GitHub trigger, your n eight

15:34 n instance needs to be accessible from the Internet. So this will use the local tunnel and make it accessible to the Internet. But this is really for development and testing purposes. Great. Okay. So we're anticipating that we may do something that requires something on the internet to speak back to our n a n, so we're adding the tunnel parameter. Yes. I think I understood that right. Okay. So waiting for tunnel, I suppose I should let on the network. I can just push oh, I bet it opens over here. Oh, it didn't. Wow. That was good. Okay.

16:12 Exploring the n8n Editor UI

16:12 No, I'm just every time I've opened a browser when I'm on the stream it moves over there and I have to go and fetch it but we're good. Anyway, not important. Awesome. So what do we have here? I see a draggy thing. I see yeah. I figured that was gonna do something there. Oh, code that. I'm assuming with my naive knowledge here, this is an empty workflow. It is an empty workflow. So this is a new workflow. And what we are looking at this whole screen is called the editor UI. So it's essentially an empty canvas for you to design your workflows.

16:49 Yeah. Alright. I'm just gonna keep executing that because it's cool. Like alright. So I So we start off Sorry. On your go, Tanny. Yeah. I I was mentioning, like, we start off with the start node. Like, all workflows would have a start node even if it's used or not. So in case you're using a workflow that's being called with a trigger node, you can safely ignore it. Okay. But if you are manually executing workflow, the first node needs to be connected to the start node. Right. Okay. So that so when I drag this over here, I get to create a

17:27 node thing and I can just pick any of these that I want. Right? And it's gonna Yes. Do something. Okay. What is a a good note then for us just to do something that is visual and we can see it working? Okay. That's a very tough question. Let's do HTTP request node. I was just thinking that so good. So we have my friend wrote this app and I've used this a few times now on a stream called Rbox.app that just gives us a web hook endpoint. So I guess we we can send something to this.

17:41 Demo: Sending Data with HTTP Request

18:02 Yeah. We can for sure. We can. Let's do it. See plans coming already. So let me see if I can work this out. So no authentication. I am gonna send a put because why not. I'm gonna drop in that URL. I'll just ignore that for now. I don't know if it I don't think it will do anything. Can I send? Yeah. Okay. So I can just click add parameter. Can I just send JSON? You can. So you can send so this would basically create a key value pair in body parameters if you use this. But also if you click on JSON

18:54 yeah. So you could also then add JSON in there in the body parameters. Yeah. You can enter add JSON there. There we go. Now I feel at home. Right. Cool that tab key worked. There's a feature request. Name, David. Let the it's gonna be my birthday. I'll add my age and we'll see website. I know this is completely unimportant, but I'm just gonna do it. So I just click close. Yeah. If I'm not mistaken, you'd probably have to send that as parameter because this is like, send that as a JSON object and this right now is like a string.

19:54 But let's see what the notes says if you execute it. So I I was just under the assumption and when I click this Mhmm. I was just gonna do raw JSON which this let's try it. Alright. Well, I think it can happen it can break. Now I also see settings. I always like to click buttons so oh, I can pick the color. I'm a sucker for these weird tweaks as well. Let's go with that. Execute once, retry and fail. Cool, that sounds good. Continue and fail. I guess that will become more prominent or important when we have more than one step

20:29 to our workflow. So am I done? Can I just close this again? And this is that's it, right? That's my workflow. Okay. Yeah. And I just click go. Nice. So you can Okay. Tada. Alright. I'm easily easily pleased. Perfect. Cool. I like it. Okay. So that was easy. So what the HTTP request is quite useful for is basically, like, it's we used to call it the Swiss Army Knife node for n a 10. So, like, we have nodes for a lot of services. But let's say you have a service with the rest API, and we don't have a node for that.

21:23 You can always use the HTTP request node. You can make authentication with it, send it different parameters, even some binary files, and so on. So if we don't have a node for something, you can always use the HTTP request node for making that happen. Okay. So should we add another node or do we save this workflow? Like, right now it says workflow is not saved. So I'm assuming if I close this and go away, it it disappears like If I give you a warning and if you still leave, then it goes How confident are you just

21:39 Workflow Execution, Saving, and Settings

21:58 gonna give me a warning if I had closed tab, will it warn me or I'd I'd I'm very confident here. Hitch. Yeah. Oh, yes. Okay. Yeah. Cancel. Okay. So can I save the how do I save it? Let's see. If you go on on the extreme left workflows. Save it. Okay. So basic h t t p So this feature with if your workflow is not saved, it gives a warning. It was implemented in the latest version. No. Really? Last week. The version last week. Yeah. Point nine one. And you were still confident that it was

22:40 gonna give me a warning. Nice. Okay. Yeah. I was I was told I I I tried refreshing page after it was released. I closed on tabs. I've lost a couple of workflows because it didn't give me a warning before. So I was I tried it all the different ways and yeah. Like Alright. What what's this active button for? So active button is useful when you are using a trigger note. So in n8n, you have essentially two different kinds of notes. So it's like trigger notes and regular notes. And I feel a bit bad about calling

22:59 Trigger Nodes (Cron Example)

23:12 them regular notes. They're quite extraordinary. But yeah. Okay. So the trigger notes essentially start a workflow and supply initial data. So a workflow can contain multiple trigger nodes, but with each execution, only one of them will execute. So this is because the other trigger nodes would not have any input as they are, like, the nodes which are which are the starting of a workflow's execution. So an example of that could be a cron node. So cron node, if you say, run every Monday or, like, the example I gave in the beginning, like, run every morning at 8AM.

23:49 So there's a couple of if you click on add cron time, there's a couple of options you can choose. Like, every day, you can select every minute. And, like, you can also add a custom cron expression, I suppose it's called. I always use a website to build them if I need to do that. But yeah. Does this zero zero just mean every error, every minute? No. So it says every day at zero. So Ah, okay. 12AM. Twelve AM. Yes. Can I just star? Like, the actual oh, no. That didn't work. Okay. Yeah. Maybe I should just do

24:27 oh, there we go. Every minute. It was easier than I thought it was gonna be. Alright. Let's just So yeah. So these are like the trigger notes. Go ahead. Go ahead. Yeah. Is that enabled now? No. So you need to like, if you click on active, you don't need to connect it. So it's the it would be the first node in a workflow. So you can now connect it to the HTTP request node or to the small box on the left of the node. To the left. Yes. You can actually disconnect it with the start node

25:08 or you can keep it. Doesn't wouldn't matter. So I guess what I what I'm thinking here then is that with I can add multiple trigger nodes and they will all be responsible for checking off this HTTP request when they get triggered. Right? So I can say Yes. Send this HTTP request when all of these when any of these things happen, and I could just be any arbitrary number of trigger notes that I want. Right? Yep. Yep. But, like, only one would execute at a time, but, yeah, you can have multiple triggers as well. So now that you activated the

25:40 workflow, this would, trigger this query every minute, I suppose. That's the setting you you added. Yeah. Well, I don't know why this isn't refreshing. Try again. Well, I don't think it's just it's just not saying anything yet. Okay. So I guess how okay. There's there's my next question then. Can I view the events or soon as I said that, I've seen that? I'm assuming that's execution. It's just gonna show me. Yes. Okay. So this was my was this my manual trigger? No. Yes. So if you take a look at this so more this trigger. So before this, like, I'd show you one

26:24 thing. Oh, yeah. Sure. Go for it. Sorry. I'm getting scatterbrained here. No worries. If you go on the left side, under workflows, there's a setting there's settings. So you can have settings for each workflow. So you can send, like, your time zone. You can also set what sort of data executions would be saved. So it's like, error as execution or success. So, like, you'd have to specify. So the a lot of defaults is yes. Yep. So it says basically here, save manual executions. Default, it's set to no. So that was the cron node trigger that.

27:12 Oh, okay. Alright. So if I click save on that and do a manual execution, that means then I come here. Yeah. We see the manual and I'll see that my cron one then has run twice at twenty nine zero seven and twenty eight zero eight. So yeah, roughly a minute apart. So let's see if I can. Oh yeah. Okay. It's working. I was thinking you for some reason that you said every second, but it was every minute. So checks out. Yeah. Yep. And there's another one off. Right. Okay. I could probably turn that off now.

27:45 Yep. Click this. Or you can also deactivate the workflow on top right. You don't need to disconnect it. Because this would still trigger the workflow every minute, but nothing would happen because nothing is connected to the current node. Oh, like, oh, I can turn off the trigger with that little pause thing. Right? So this deactivates the node. So to, like, turn off the active state of the workflow on the top right, you have the active button. You can toggle that. Alright. Okay. So I can turn off the entire workflow, but I can also just pause

28:26 and turn off individual triggers as well if I want. Yep. Alright, save. Okay, cool, I like it. I can already start to see how this is forming the building blocks of like the bigger automation or workflow things that I would probably wanna do with this tool. That's really cool, I'm happy. What do we what should we take a look at next? Should we get data from a rest endpoint and do something with it? I mean, it's as difficult, but I'll give it a shot. It's easy. Alright. So So New workflow. Teach me. So let's use this API I discovered a

28:48 Demo: Getting Data from an API

29:05 few months back. It's called the cocktail d b API. Let's let's learn to make some cocktails while we are learning about n a 10 as well. Alright. Cocktail d b API. And if you search for random on the page, command f. Look up a random cocktail. So let's copy that. Alright. Okay. So we get some JSON back. So I'm assuming you're gonna want me to add HTTP request? Exactly. And we're gonna do a get request to that URL and I hook this up and then hit execute. Okay. So You can double click it? Double click it?

30:02 Alright. That was my next Okay. So we can actually see the JSON. Ah, there we go. That's much better. Nice. Okay. So I'm assuming in fact, why don't what what do we do next? I I don't wanna assume. I'll get it wrong. Okay. So what we can do is shall we create we can do a lot of things with this. Should we play around with Telegram maybe? Or or would you like to us to make a graphic for this? So What should we do? I mean, well, right now, I want a cocktail, but I'm assuming any n can't do that.

30:45 Why I mean, what I think what I'm okay. I can see use cases where I wanna had an API, I wanna fetch some data. How do I pack out bits of this data that I think are important? Is that just a new node? How does any n help me dissect that JSON? Cool. So what we can do is add a set node after this. Okay. So I can just go boop and then You can also press on tab that opens up the Nice. Okay. Can what's what's the what's the set node? So set node, can set different variables.

30:54 Processing Data with the Set Node

31:30 These could be new variables, like new JSON entry points. But also you can click on keep only set. So only the values that you set in this node would be passed forward in the workflow. So all the data that's being passed to the workflow is in JSON. So CocktailDB returned a lot of things, a lot of values. So all of that would be passed along in the workflow, but we can change that with a set node. Can also use a function node, but easier the no code way. Okay. So just add value. I say I want

32:07 a string and then the proper name. Is that gonna help me fill in that property name? Like You can call it whatever you want. Let's maybe like cocktail name. Yeah. Let's take the cocktail name. Yeah. That makes sense. Okay. And how how do I propagate that value from that JSON we got in the previous node? Right. So on the gears icon next to the value field, if you click on it, add expression. So it's gonna be a dynamic value which is gonna change every time you execute the workflow because it's a random API. And I'll let you find that.

32:47 I'm just clicking away here. I'm I'm quite happy. So let's see. ID drink. Oh, no. That's not a category. Okay. So we have a category and we got this drink here. So let's get the name. I think, yeah, rum server. That's the name. Click close and I'm gonna just run this because I like clicking that. Double click this. So it still returns all the information. So we'd have to click on keep only set inside the node. You can also execute the note from execute note button on the top on the right. Yeah. So it just returns this. Alright.

33:30 Let's get the description. I'm gonna change this actually. That seems a little bit redundant. Now we're gonna add the expression and I'm gonna just jump through. Category actually was what I want, wasn't it? Not descriptions. Let me fix that. I'll call it I'm gonna call it type of drink. Let's see what happens. Alright. I win a party drink called as the Madori Zinger. I'll take two. Thanks. Alright. Nice. That's nice. I like it. So let's tackle, we have a viewer question which I'll pop up on the screen. So SM has asked, is it possible to

34:14 Implementing a Webhook Endpoint (Cloud Function Question)

34:22 implement cloud functions? Basically you call an endpoint, execute a workflow and return the final result to the original API call. Let me Yeah. Okay. So I think I understand the question. If you understand it, by all means go because you I I do. Alright. Cool. So yes, we can do that. Should we do that? Yeah. Let's do it. Cool. Okay. So what we do is we add a webhook node and we haven't talked about it before, but let's add it. So it's a Let me save my working The cocktail. Alright. So we're gonna add a

35:05 web hook. Oh, is that actually It should be in the trigger. Yeah. Yeah. So what we can do here is okay. Let's take a look at this first. There's a couple of options. So if you click on the webhook URLs on the top, it's a pink color, orange. And we have two different webhook URLs, so production and test. So the difference between the two is a test webhook URL is to register the webhook, you click on execute workflow. The webhook stays active for hundred and twenty seconds, and then it stops. So the benefit of using a test

35:47 webhook URL is essentially you get to see all the data that's coming in and it helps you design your workflow. So when you're done designing, then you use the production webhook and set it to active. So Got it. Okay. So that okay. That's got this comes back to that dash dash tunnel we used. Right? So what that dash dash tunnel was doing, I think I understand a bit more now. It's opening a connection to n8n cloud, which is giving me the ability to do this kind of thing. Got it. Okay. So what and like we have different authentication

36:21 options if you wanna password protect your endpoint and like a bot as well. So let's do one thing. On the response mode at the bottom, let's set it to okay. Let's let's not do anything. That's fine. Let's copy the test webhook URL. You just click on it. Yes. Perfect. You can close this or click on execute node. Or can I just curl this? You can. Yeah. Or you can also open it in your browser, whichever way you prefer. But you'll have to execute workflow first because we're gonna be using oh, you'd have to save the workflow first.

37:01 My bad. So whenever you're using a trigger node, it saves the ID. And for that, we need to save the workflow first. Alright. I'll call that fast. I'll pop this open again. We hit execute. And now you can make a code request. Let me close that. Or yeah. So you got the message. Workflow got started, and you get the data from the endpoint. So now what you can do is essentially, for instance, copy the STDP request node which got the cocktail information, connect that to webhook, add a set node, and in the response type, we add

37:47 last node. So every time you execute it, it's gonna send the data that you sent in set node, and that way you create a sort of API endpoint with an a d m. Okay. Right. So let me try and stitch something together here then. We received a request. I'm gonna do something with that request. Right? So let me see what what have we got? Weather information maybe? Need to get API key for that though. That's We spoke about it here. Right? That's that's here. So can I Yep? Send a curl request with a color code and have it

38:03 Demo: Interacting with External Services (Philips Hue Example)

38:32 change the color of my lights behind me then? Yep. Then respond with we'll we'll add something that responds with to satisfy that functions of the service thing as well. Perfect. Secret stuff, hold on. Let me move to my secret layer. Alright. Please standby. I should have like some hold music available shouldn't I for for a moment like this. What do I need? So in case you're having troubles finding where to get the credentials, there's also a link to our documentation which tells what credentials you need to get and where you'd find them. So I think

39:38 I I think I got them right. Hold on. Let's test it. So can I what the what is the late ID? Can I get different So this probably isn't connected correctly because this should auto populate? Oh, right. Okay. So you can press the pencil button next to it. So then need to Oh, it's popping up something. Yeah. I trust you. Did you set the URL for the redirect URI in Philips Hue? Because you'd need to use the Oh, it's an n a m r okay. Sorry. Because you're running with the tunnel right now. Okay. So

40:48 let me try one more time. So for generally, for authentication or authentication and so on, you don't use to need need to use tunnel. But since you're using tunnel, crashed n a n. So I just re there we go. Okay. So we're back to this bit. That's changed again, hasn't it? Probably. Alright. Hold on. One more update. Save. Okay. That's saved. So I'm gonna pop this thing open again. If this doesn't work, I might just drop the tunnel thing for a second. Why is that not working? So is is this is the or or three direct URI that you get

42:00 is same in Philips Hue when you created the OAuth app? You know, I'm just gonna do this on the screen so that you can see because I'm sure it's me that something wrong. And then what I'll do is I'll just delete that little secret tokens later. If Venom does decide to change the color of my bulbs then so be it. Let's see. Okay. So create new year two and my client ID. So my client secret. Rawkode live. I had copied this. Should this be changing every time I restart or is that just static? Generally, no.

42:55 But if like you started an instance when the other one wasn't properly closed, the previous one would still be occupied, so then it would give you a new one. But if you close n8n and restart it, it shouldn't change. Not yet. So oh, did you already paste the or it's called back URL in your Philips Hue app? Yeah. So I updated Philips Hue to this URL. So next to OAuth where it says not connected in the OAuth section. Mhmm. Yes. Yeah. You need to click here. Okay. Alright. So we think this is a tunnel bug

43:47 potentially or I've just broken it during the initial setup. I'm not really sure. So what I'm gonna do is cheat. Not cheat. I'm gonna spin it up a third. Let's try that again. Reload. Okay. So now I've got a different OAuth callback. Save. And go. Hey. Okay. That works. Now, ah, there we go. So I can do my office. We'll do the office strip lates. And I guess hue would be the color. Hue would be the shade. I I imagine. Okay. Let's take a look. Yeah. I'll just pick a number. Okay. Did it change? No. I think, like, some shading change.

45:22 Let's take a look at the ad field. What do we have here? So do we have alert effect? Let's try alert effect maybe first. Which one? Sorry? Alert effect. If you go on the top, yeah, you can try this and execute node. Oh, it's flashing. Cool. Let me change this. I don't really know what this number is. So I think let me take a look at the I can pop open the Philips Hue documentation. The link was right there in front of me. Mhmm. I try it again. Alright. Okay. That works. I'm happy with that.

46:33 So Okay. So it's a value called hue that you have to add to change color. Yeah. I added the hue, but the color I mean, it seems to be numeric. So it's a value if you click on the tooltip next to the field, it will mention like is wrapping value between zero and sixty five thousand five thirty five. Oh, so my technical numbers probably just weren't doing anything. Yeah. Zero is red for instance, if you wanna try that. What blue? Blue. 46920. 4 9 10. 4 6 9 2 0. Alright. Okay. It's not changing the color.

47:36 So I think we should turn off the alert effect. So that would go to yeah. Let's try a different light. Maybe it's just that. Let's see. Update. Let's try it. So I'm reading 25500 as green. Okay. Let's let's move on. The the key thing is cool. I like the alert. I'll play around with that color thing for sure. Now We use this for yeah. We use it for when we got 10,000 get up stars to flash the lights around the office. Nice. Now what does that mean for this web hook then? Now that I'm not in tunnel

48:30 mode, should I go back to tunnel mode? You don't need to. You could still make calls locally because you'd be calling to local host. So if you open the webhook URL, you just notice the name changed. Let's just add a new one to trigger webhook. And what do I get now? Oh yeah. Never on local host. Okay. So test, copy, execute and then that should just work as last time. Yeah. Okay. Cool. Yes. But of course, this time it wouldn't be reachable from the internet because you're running it locally. Yeah. Yeah. Okay. Yeah. I understand the trade

49:17 off I've just made there by removing the tunnel thing. Got it. But that's fine. Yeah. I'm okay with that. So we now have this web hook or the ability to start something here and then we wanna do something. So How about getting weather details? Weather sounds good. Oh, so I need credentials. So do you have a API key for this? For open weather map? For open. Let me quickly take a look. I can send you one. I'll send you in the chat. I'll move it over here and then bring it back as if nothing happened.

49:31 Demo: Using an API with Webhook Input (OpenWeatherMap)

50:07 So open weather map. The terminal is acting like a curtain here. Alright. There we go. So I now have that credential say thank you for that. That allows me to oh, let's do a forecast. That looks cool. Kelvin or met let's go by metric. Okay. So setting name, I live in Paisley, just outside of Glasgow. Yeah. Okay. So let's see. Can I let me see if I can work this one out? So let's use this webhook to receive a parameter. Okay. I don't know how to do that. But it won't matter, will it? Right? I

51:06 can do that here and if I remove the paisley, add an expression and the nodes web hook output data. So I'm do I need to send a payload to that so it knows that that's a potential field? Yes. Alright. Okay. So let's just use a query parameter and say set it equals I'll send main for now. So you need to execute the workflow so that the web hook registers again. Okay. So click and then send. Okay. So now it knows there's this potential field that it's gonna receive and the query setting. Okay. And now I'm hoping if I come back

51:56 to this expression thing You could just click on it on the city field. Yeah. Then we can see. There we go. See, I knew it was gonna work like that. Alright. So that sets it to whatever I send and then I can execute. And that's gonna get me the weather forecast for that set as it gets passed in. Okay. So now back to the question that we received then is how do I respond to this webhook with the weather forecast information? So now if you go on the webhook node, what we've the webhook node, if you open it again

52:38 Yep. Yep. For the response mode, now we wanted to send the data from the last node that executed. So that's fine. First entry JSON is okay. Oh, yep. And we execute it. And let's do in the other browser window. And we can, of course, use set note to clean this information, so we are only sending out what is actually needed. But yep. So to answer some question, like, you can use any 10 workflows as an API endpoint as well. Okay. So so far when I've been running this, I've had to execute for that to work. Like, so this won't

53:28 work now. Is that right? Yes. It wouldn't because we haven't activated the workflow. Ah, so two things. First, we'd activate it and now you'll yep. Go ahead. And now you'll need to make calls to the production webhook URL. So if you open the webhook node again, webhook URLs, let's use the production now. So now you wouldn't have to press execute anymore. Okay. So that error is expected because I never sent one, but let's talk about how we fix that too. Let's do Paris. Okay. Can I make it handle the the error better and return something to

54:10 Handling Input and Logic (Function Node)

54:11 the user that says, hey, you you need to provide a query parameter here? Sure. So what we can do is place a if node in front of it. So we can say, you know, if there is no query then prior given error. Okay. So I guess what we're looking for is if string I'm just gonna keep using this cog thing because it seems quite handy. Okay. So I'm assuming let's see if I got this right. So this is in if city, How would I do not contain? No. How can I check for the existence of

55:01 it? So what you can do is use Okay. With a blank. Would that work? Let's try that. I haven't tried it before. Let's try it. You'd need to, yeah, close this. Oh, yep. Oh, so not equal, it says. Yeah. Okay. Oh, so now I can just add a false. Okay. So that So that could be a set node. So I think what I need to do is remove this. So because I've got ever equals blank. So if that is false, I've probably done that the wrong way around now. And then here, so how can I just return

55:46 a random string? We use the set node again. Set node. Yep. And let's add a that's yep. Perfect. String. It's called the name. It's the header. And then we can say You're a city. There's no city. I'll be about Amigo. There we go. Close. So let's see if I've broken it first. Right? So let's You'll have to see if the workflow again. Oh. Thanks for keeping me honest. Let's see. Save. And it's active. Okay. Let's do London. Sorry. Let's get that the wrong way around. I'll need to I don't know. I'll check my logic on that to make sure I

56:47 understand that correctly before we and that crossing the streams will annoy me, so let's do this. Right. Save and then hopefully London works. Yes. And then let's remove it. Okay. It didn't like that. Okay. So I think we should activate the workflow again. Let's deactivate and activate it again. Okay. Let's try that out. Try again? Yeah. Error. Okay. So It seems like I think it it's expect I'm assuming right now that it expects its value to this. Maybe I just so I just get something wrong. Let's delete this. Right? Let's try. Well, there's an option. Right? So we have

57:55 the continue and fail, retry and fail. Maybe there's something I could do there. But let's see if I can get this working. String. So one thing we haven't chatted about in the expressions, like we have been like selecting outputs. But if you use something within double curly brackets, you can use JavaScript in there. So we could also say, you know, if the value is null or something like that. Alright. Walk me through that. So try just to string again? Yeah. And then add expression. Because the thing is if we are adding an expression here, like there is nothing to compare there.

58:48 Right. Okay. Let's you mentioned earlier, I can take code. Can we do that? Yeah. We can use a function node for that. Function? Yes. It's a function. So the difference between function and function items is the function nodes takes all the data that's coming inside and does something with it. Function item takes all the items that are being provided to it individually and acts on that each time. Oh, okay. So I I know that I'm in code mode. I'm feeling a little helpless. I've lost my ad expression with all the nice clicky clicky stuff. So

59:36 I'm not really sure what I would add here. Okay. So just as an example, all the data that's being passed throughout the workflow is in the variable called items. Can we confirm that? Or is there is there a way to debug what items is? Sure. Let's do it. Console log items. Okay. So console log, you'd have to go into the terminal where you're running n a 10. Also, probably doesn't have any data right now. Yeah. That's what I was thinking. So alright. So I see the Oh, the big console log. Is gonna be activated. Right. Because

1:00:31 I could just return items and that will show me everything when I hit it. So That's true. Yeah. Now what happened is I think you used the production webhook URL and you manually executed it so it wouldn't show the data there. Oh, was it because I had to save it. No. So whenever you execute, man so all the data that's coming in through n eight n while the production while the workflow is active, the data that passes through is invisible in the editor UI. The data coming in from webhook is only visible, if you are using the test webhook.

1:01:16 So you would use test webhook to debug your workflows and then set it to active to sort of move it to production, so to speak. Okay. Well, we kinda got what I needed to guess. Right? Because even by just running that on that empty code one, which is returning items, that's just being dropped into the body of this request here. So I can actually see that probably what I'm looking for is actually just inside the query object. So if I do if query dot city is undefined, then return false. Otherwise, I can return query dot city.

1:02:08 So the thing is like how you are handling data in n8n, it always have to be an array. So the function always returns an array. So you would have something like an array, like, two brackets, square brackets. Mhmm. No. No. At at return or it could be here. And then you'd have sort of braces inside it because that's gonna be a object. And JSON, You'd have to write JSON. So the thing is how the data structure of n8n is is particular. Alright. I think I understand. So let's assume I do this and then down here

1:03:01 I do because we know it exists here. I do query dot city. So based on my naive understanding right now, this this code note and I'm gonna just test it. This one worked though. Yeah. It won't work. No. I didn't save it. So let me save and oh yeah, that's the test mode. Let me run it here. Well, workflow to there. Yeah, you're right. Okay. I should have listened to you the first time. So what did I get wrong there? Because my understanding is if query dot city is undefined, which means it's not been specified,

1:03:44 then I can return. You said I should return an array and then I've got JSON inside of that, but I must have misunderstood. Right. So you have the array brackets like the square brackets. Mhmm. Inside it you have to type JSON colon and then whatever is in front of it is fine. Oh. Do I need to does it have to be like like that? No. Just JSON is fine. Oh, yeah. I guess actually JavaScript doesn't care. Right? So Okay. Alright. I understand. And also, is it so JSON also needs to be under braces? Of course.

1:04:30 Alright. So let's get that fixed. Like that, right? Yeah. I'm having fun. Okay. So I'm gonna run this again. What did I get wrong? Okay. Let's use the test one, right? Because that gets us the debug and stuff that we need. Yeah. Oops. So test, copy and So if you on the bottom, you can stop the current webhook. If you go out. Yeah. And at the bottom. Yeah. Okay. So if I had execute here, that's waiting for me to have the test endpoint. That's right? Yes. Okay. That's Send that with nothing. Query is not defined.

1:05:28 So it would be if query equal to undefined. But query was defined. So if I pull this back, let's comment all that out. I wanna understand what I got wrong there because when we did return, oh it's items dot query. Okay. I was gonna return items but that the existence I've been able to do that means that what we actually wanted was that. Items dot json item zero dot json dot query dot city dot yeah. Okay. Let's try that. That's the worst that could happen. Okay. So I execute test URL. Where did that come from?

1:06:29 So it returned to default which is good. Did the test URL change? Oh, yeah. It returns a default because you have something outside. Yeah. If you open that up. Open what up? Sorry. Sorry. The code. Up. Yeah. In the function node? Yeah. So here you say, like, if item zero dot JSON dot query is undefined, then it sends city as it's a Glasgow. And irrespective of whatever the result is, you're also returning JSON dot query dot city. So like that is in inside the if if block. Yeah. But I never had the web. So that's what I don't understand there. As I

1:07:24 had execute here and that's supposed to wait for a request. Oh, I see what you're Okay. No, I've got it. Yeah. So what I should have done is to execute here. I was just triggered in the wrong node. There we go. Right. Because what happens is you all your webhook node already has data. So if you're executing the next node, it's just using the data it already had for you to model the data. Yeah. And now if I pass Berlin. Oh, I broke it again. Okay. So I got query Berlin. Oh, yeah. I've not hooked it up to

1:08:04 anything. Although But if you open it up, query is not defined. Yeah. Okay. So it's just me being really crap that is continually breaking this. So let's fix that and then hook this up. Right? So I can now go here and then this could no. We just return that. Right? So Yeah. I'm gonna feel confident. I'm gonna hit save and I'm gonna go back to production and just ship this. Activated. So let's do nothing. I I thought I had it. What did I get wrong? This is I think error from the old old execution, but now we can't. So we

1:08:51 can check the error if you click on executions on the left, extreme left. So it says error. Now you can open on the on the right side of the folder icon. Yeah. Oh, yes. We didn't save and activate. Okay. So it shows you what the error is. Ah, because the set node was referenced to the wrong expression. Right. So I'm dropping with the map node. Okay. So can I just go back to our fast example? Right? So we'll just forget that. Let's fix this, which is now actually looking for yeah. It's already telling me it's broken. So

1:09:32 we want the function where's my city? So the function doesn't have any output right now. So which is why we should first build it in test and then move to production because we need the function node to output data to reference it. Alright. So I thought the return here was me returning data. Oh, no. But it doesn't have any data right now. Right? Because it's not been executed. So all the data that's visible in the editor UI, it's it's gonna happen when we are using the test webhook URL. Correct. Right. Okay. So So we need to give it data first

1:10:19 and then model it. Okay. So test, copy, execute, jump over here, city, Berlin, which now has that information. So I'm assuming if I remove expression, add expression, No, it's function. Yeah. Okay. See you just gotta learn the learn the way of it. Okay. So I'm definitely confident that I'm just gonna save it to go to production. Are you sure? Yeah. Yeah. Yeah. Let's do it. Let's do it. Let's do Paris. Alright. Yep. That is Paris. Let's do the set. Glasgow, perfect. You did it. Yay. Okay, I understand so much more how this all connects together now and the web of

1:11:21 test and production why they're important. Like it's all it's all starting to make sense to me a bit more now. I like it. Awesome. And I actually see we have a comment with Harshil telling us how to do it with the F block. Would have been lot but I feel like I actually I just I understand how this is working now by going through that that process and connecting the dots so awesome. Thank you for the telling us how to do that and at the same time I'm glad I I kind of persevered and worked

1:11:56 my way through that. That was great. Alright. Alright. What should we do next? Yeah. Let's do one more thing. If you got a suggestion or should I just pop open a sidebar and start scrolling? What what do you think? Should we do a telegram bot? Yeah. How's that? Yeah. New workflow? Yeah. Let's do a new workflow. Do you use Telegram? I do. I think I even have it running on this Mac. Let me check. Perfect. Yeah. I do. Okay. Yeah. Just make sure I can hide all my contacts and stuff. Okay. Okay. So what I do?

1:12:02 Demo: Building a Telegram Bot

1:12:44 So yeah. Let's open the telegram window then. We can create a new bot on telegram first. Okay. Is that fine? Yeah. I've never done this before and I don't wanna reveal my number but we should be okay. Okay. So we need to start a chat with bot father. Okay. Let me. So Oh, it's updating. That's okay. It's just web. That's fine. Oh, no. It's not. Oh, we're good. Okay. So let's start a chat. New secret chat. Normal chat. Normal chat. What's the name? Botfather. Okay. Start. Cool. So we do start. So I think it shows you the slash

1:13:47 commands. So there's one for new bot. I was gonna see if I could make this bigger, but I don't think we can. We should be alright. Okay. So I do slash bot. Oh no. No. You take a look look. Yeah. Okay. So Rawkode live. Choose a username. Oh, Rawkode bot. Okay. Okay. So you can click on the token so that it copies it. Yep. Perfect. And let's go to n a 10. Alright. So we'll start a trigger node. Oh, trigger trigger. Yep. I'm on it. Perfect. And we create the credentials for it. Okay. So Rawkode

1:14:42 bot access token allow do I need to drag this over? Sure. I don't know anyway. And star. Let's do star. Let's get everything we sent to this bot. Uh-huh. And similarly, like the concept we talked about production. So here, we don't need to provide any URL because, like, if this node takes care of it for us. However, if we click on execute node, it still stays active for hundred and twenty seconds. We'll need to save it first. And if we set the workflow as active, then it will automatically be in production mode. But we don't need to do it now

1:15:24 because we need to see the data for modeling our workflow. So let's execute this and go back to the Telegram window. Oh, failed. Because we aren't running with tunnel. We need the n a 10 instance to be reachable from the web. So n a 10 needs to run with tunnel. On it. Perfect. Okay. Refresh. Let's go execute. That seems happier. And So that just So you must have a link. So there must be a message. In the message, there must be a link to your bot just beneath the just above the token. I'll put it back.

1:16:23 Oh, yeah. Start. So it sends slash start, and we got it. So we got the first message, slash start, because that went first. That was easy. Okay. No. Should we try again? Execute. Oh. Yeah. Alright, Brooke. So what does it say? It says webhook cannot be activated because another one with the same method post path is already active. I'll just refresh. Let's close this. Let's just I can just enable this. So But you won't see any data coming in though. Oh, yeah. Okay. Execute. K. Let's let's create a new workflow. So your credentials are already saved.

1:17:30 Alright. New switch. Telegram trigger. Same credentials, same star x. We need to save it. We need to save it. Yep. It's okay. Bot two. Pop open. Alright. Let's send it something. Okay. Go away. There we go. Awesome. So can I respond? Yep. So now you have gotten a message. What do you say about building maybe we build a bot that we say, like, send it any message and it replies with the name of a or recipe of a cocktail tying in from our previous workflow that we were doing. So we can add http request node.

1:18:10 Connecting Telegram to an API

1:18:42 Yep. Okay. So and execute. Get some sample data for the nice expression thingy. Perfect. So this is And then we do here and A telegram note to send it. A telegram note at the end. Oh, a telegram note at the end. Got it. Because we need to reply with it. So we can select the same credentials. Chat ID. So we need to use expressions here. We get the chat ID from the telegram trigger node. Message ID. Right? Yes. Oh. No? I'm not sure if it's message ID or if it's chat ID. Alright. Or you can just click on it.

1:19:43 Yeah. Okay. So Let's see what else it says. Chat ID. Oh, yeah. Let's do that. Alright. So You can delete it. I don't know how. Oh, if you go on the yeah. If you click there and just use backspace, Yeah. You can delete the expression. Okay. Cool. Okay. So we need another expression to filter out the recipe from the HTTP. Yes. So can I can I filter? Yeah. Let's have a look at this data. Do some formatter. And if you open the HTTP request node, it also shows it formatted under the JSON if you close this. Oh,

1:20:48 yeah. Of course it did. That's right. Okay. Look at that. It. Yeah. That's it. If we use another tool. So JSON. Oh, instructions. Okay. So we want instructions. Instructions. So we click here filter and I wish I had noticed that filter earlier. That's quite handy. And instructions. Done. Alright. Cool. Let's do a execute workflow then. And with the telegram app. Wrong window. My computer is failing. You're okay, MacBook. You'll be fine. Okay. So hi. Send me a cocktail. So what does it say? It said shaken not stirred. It did respond not with the instructions I thought. So the

1:21:54 instructions must be depending on the cocktail you get. Let's do it again. I bet we get something. Okay. Another please. We probably wanna send back the ingredients and the instructions for it to actually make sense. But you need to, yeah. We need to, yeah. Execute. Okay. Oh, there we go. Cool. Got it. So pour ice cream vodka and bourbon in a glass. Nice. That's pretty sweet. I like that. Awesome. Very cool. That is no effort whatsoever. Yeah. Yeah. What I did a few days ago was like, one of our community members actually inspired me to do that was she built a

1:22:36 Telegram bot, and you'd send it a image of a receipt. Then it uses a service called Mindi. It sends the image to that that passes the data out of the receipt, adds it to Google Sheets, and also sends a confirmation, like, oh, receipt from Leader or whatever supermarket have you of this much amount has been passed and added. Awesome. Okay. I'm impressed. I think n8n is a really cool tool and I can already think of stuff I wanna do with this. Let me Is there anything else you wanna show before we finish up? Like Nothing comes to mind. Okay. Is there anything

1:23:05 Conclusion and Future Plans

1:23:24 you'd like to see? There's loads, but you know, we are heading about an hour and a half now. I think what we're gonna have to do is we're gonna have to continue this again. Like there's so many different things I wanna play with. I think what would be really cool though is if I start to put a few of these workflows together for myself and for my team and then identify a plugin they know the trigger that we need to actually do something real and then reach out to you and I say, why don't we do that together? Like you can walk

1:23:54 me through the process of actually contributing my own node to n8n and hopefully by then I'll have actual workflows doing real production stuff that we can kinda, you know, off talk about and take it from there. That sounds good to you? Sounds like a plan. Yeah, perfect. Awesome. That was really cool. Thank you, Danny. I really enjoyed even you know, even when things went a little bit weird and wonderful there like just I feel like I completely understand the data model a little bit more and all that. I'm looking forward to it. Thank you for joining me today. I hope you have

1:24:23 a really good day and I hope this was useful to the people watching too. Alright. Thank you for having me. I'll speak to you soon. Thank you again. Bye.

Technologies featured

Meet the Cast

Weekly Cloud Native insights

Stay ahead in cloud native

Tutorials, deep dives, and curated events. No fluff.

Comments, transcript, and resources

More from Rawkode Live

View all 173 episodes