LinkedIn Integration - Live Coding Happy Hour for 2020-12-18
[Music] hello and welcome to live coding happy hour on this last friday we're going to do the show of the year um i think it's december 18th but who knows it could be any day it still is nice i'm your host andrea barnes here with our uh cast of characters uh some carryovers from last week um chuck why don't you start with the introductions i'm glad you said carryovers instead of leftovers that way leftover jumped in my brain first smells like that doesn't sound nice hey my name is chuck tomasi senior developer advocated service now been on the platform for a little over 12 years doing all kinds of implementations custom applications and integrations i've been with servicenow since mid-2010 and very happy that everybody is here today awesome thanks chuck and our guests from last week back here again yeah can't get rid of me my name is goran landquist senior developer here at servicenow been around for about five six years i guess being a customer being a partner now i'm working here at the mothership trying to have as much fun as possible nice that's neat and i'm andrew barnes developer advocate here in servicenow i've been doing this for a couple of years and been in the ecosystem for a little over six years now as a repeat customer and uh implementation partner and now here at the mother ship trying like you said to have as much fun as i can and well it's friday we got our santa hats on uh mine's struggling to fit over my headphones because my my earbuds were struggling and we are here to do some live coding but it's also friday and it's a happy hour so let's introduce the beverages well i was down to one beer in the household and since we've already seen that one about five or six times in the last couple of shows i decided to change things up and have myself a christmas margarita no it's a christmas margarita i love it nice all right uh mr sexy sweater what do you got yeah that's the perfect you can see only that text so i'm going to continue with the czech republic i guess uh slattu praman which is a really nice lager beer been there before can't stop drinking it i guess good all right and what did i grab out of the i didn't even look i just was like grab beer i'm behind the uh oh a smith wigs nice i got a smith wigs uh red ale uh so this should be good mmm a nice irish wood um so we've got our people we've got our beers now we need to know what we're working on and so a carryover from last week we started and got halfway through the show doing a linkedin integration and we realized that our auth that we were using uh wasn't appropriate for the api endpoint so linkedin has got a couple of different auth methods and excuse me and that wasn't uh wasn't the right one for what we needed so today our awesome guest goron is going to uh he he worked on it over the weekend um and and i worked on it a little bit on monday but then he said he fixed it and i was like sweet let's let's show it um so we're gonna walk through that uh today uh and get that running so how did you wanna do that sir did you want to uh start fresh in one of my instances with my credentials or howard how did you want to approach this today we should have probably asked that question before the show but i didn't have to yeah i guess so so like my shirt we're just gonna we're just gonna roll with it we're gonna do it in production we're just gonna we're just gonna do it live do it live uh i i guess it will be easy if i do it because i need to log in with my credentials to be able to delegate so i can post on my behalf otherwise you need to log in and do it i don't know we can do it that away uh whichever way is easiest for you yeah to get going let's do it that way because that's dude that's how i'm feeling on my position on things is functional and easy right now let's do it simple and we know it works hopefully so so let's go through that um so if you're not familiar i jumped the gun a little bit we do live coding here it's not it's not scripted we haven't prepared this um we are using a different auth source this time um and so things should work uh and we should get to where we were last time but then actually be able to use the api and move forward from that makes sense all right and i put the uh i put the previous show in the in the description so you can get to that nice and easy it was just last week's but i went ahead and put that link in there for you so if you're watching this in the future you can go watch the previous episode if you'd like to see us fumble around and not be successful hopefully today we get a little closer to success uh so victory is uh connecting to their api not getting rejected and then uh i think uh we're calling it so are we gonna do a retrieval as success or post is success i think it will be posed because we can try post first because that i know how i really want retrieval because that's what i want it's retro yeah we can go for retrieval if you want as well so so 80 victory is post and 100 is retrieval a stretch goal a stretch goal all right let's do it and you can start your screen share any time you're ready sir and we will we will get rolling so it's good there we go perfect so basically just to show show what we are doing is going to move over some some videos actually see you uh so first of all linkedin is kind of difficult in my eyes because to be able to use let's do like this linkedin api so we have the developer site okay and we go to the docs just to show you and let's see we have authentication so early we took a look and a glance at this one right and tested it and then we went over to the three legged this one seems that if you want to do other things that posting for a specific person so what we're doing today is doing the the three-legged version which is basically like you do when you have your phone you try your app for the first time and you ask for that app to post stuff on your behalf so that's basically what we're going to do here as well but to be able to do that you need to have an application with a client id and client secret and to be able to have that you need to have a page on your linkedin account so i i just created a company here and to be able to do that you need to have that first otherwise you get stuck directly yep and i went through that same process when i was setting up my authentication is i had to create a page and get all it happened okay exactly and just to show you around you have the app uh on authentication you have your client id in secret you edit and put in your url for your instance and then you need and that's a really important step in a bunch of these oauth type situations is you have to let your app know which things are authorized um to uh redirect to after the authentication happens um so that's that's a super important step to uh to set up and then the only three two things i could actually get you can see the different things i can delegate and actually it doesn't say retrieve so that would be interesting to see if we can do that we have create modify and delete post but to modify i guess we need to retrieve it so that will be fun but be able to get these you actually need to go into products and apply for having these two you need a signing product to be able to to do the authentication and you need to have the share product to be able to post stuff okay and basically just click on those two and it took me a couple of hours and then it was added so that one works so that is what you need to set up in linkedin to be able to get that to work whoops how do you do that on max you isn't that how do you zoom out again if you accidentally clicked um did you do a command ma a plus yeah and minus uh no i don't think one of those handicaps you do a pinch zoom kind of thing yeah you pinch zoom do you have a track pad no i have a mouse oh uh then uh command and scroll bar is probably like the scroll wheel there you go you got him some single double click or something oh yeah i'm never going to learn mac anyway so [Laughter] i'll tell you once i got a hold of a few gestures i am never going back to like a standard mouse or anything else like i'm addicted to track pads now yeah oh so so basically first thing we need to do is set up the over registry uh here we go and i think i have the linkedin here and i'll switch over to the right scope so i basically put in the client id in secret put in the grant type since it's an alteration code and all this stuff you get from the documentation here you have the callback and then you have the link for authorization code so i've filled in that one over here and then let's see then we have a couple of parameters we have the client id and all that cool stuff actually is fixed through the water registry this one i'm not really sure it's not required i didn't use it i'm not sure what the the cross-site reference what that actually does but i guess in a production environment you should have this as well i know if you guys know us more about that than i do says required no exactly so used to to prevent this uh cross-site yeah it's so that your token doesn't get passed to another site and they can reuse my token okay so you're locked into that the one that you set as uh the in that app profile when we set the the authenticated uh the redirect uh the approved redirect sources that will lock that in to say you know that site can't direct you to another one with if you know and say this is that user ah okay that's cool and then we we have the scope which is also required where we basically need to have something like this telling pretty much i guess which scopes we want to get delegated to us so i basically went in and that kind of twisted i don't know if i did it the right way so this would be fun to see if you guys if i did it correctly but basically i went into these entity scopes and i created a name scope and i just pasted it into our scope just like it said there that's the place and then i went with uh um hold on hold on hold on it was that the name was the name scope because i see space there's percent twenties what did linkedin say about that this pretty much says the parameter is scope and then oh okay don't be calls do do do yeah okay from the other page it looked completely different but all right okay then i went into the profile and just added that one i created over here yeah can you drill into that scope record i said the one and so it should show us yeah so yeah this does look correct is that the name the name is for you and the oauth scope is what um you know they look at linkedin actually so we're pretty much saying that we're trying to get the token these are the things that we actually want to get and the different things they want to delegate to us on behalf of that user we're logging into right yep so we basically did that and so those are really important when you're setting up one of these oauths so those scopes are are very important to because your app is granted certain permissions and but that doesn't mean that the asker gets all of those so they have to ask for permissions as well and they have to align the things that you offer and the things they request they can't request things that you don't offer but they do have to tell the user which things they're requesting and so that usually pops up on a presentation screen when the user is authenticating so if you're if you're asking a user for their ability you know grant me some permissions so you've probably seen this on your phone like some apps will say i'm i need access to your phone uh to your camera and your microphone um and so it presents all of those up front and that's what those scopes are is the different permissions that you're granting this app for that user exactly i like that um so basically the next step is grenade create the credentials and credentials alias so i went in and created a linkedin and nothing special about this one for the connection i just use the url for api and then when i went in and basically you create might oh you it's a pop-up so you create a new oauth oh this is sucks when you can't see that one i have i have a philosophical question here your your connection url has the api version in it where it says v2 is that the traditional place you put it or or do you put it in the environment itself because i'm trying to figure out when when the api changes usually parameters change too so i mean i'm struggling with this myself i don't have an answer for it i'm curious to hear what other people's thoughts are where do you put that version yeah yeah so for me the version would go down into the individual uh things so reaction in actions is where i would put versions some people because my credentials my connection and credential isn't going to change and so when they move between so i don't want to have to establish a different connection alias for a different version if i don't have to and i wouldn't have to if i abstract that down to the action level right but it means a little more work and now your actions you can have versioned actions you could say i can have version actions yes yeah okay that seems to make sense i i've read somewhere at least that sometimes you put it as a connection attribute because then you can actually change it here and your action will switch over to whichever value you have here as well and that makes sense for a stable api that you could you could then change that attribute um but a lot of times you'll see the api go from hey where's the api parameters in version two now we're using query parameters and versions you need to go revisit all your stuff and make new ones so todoist uh so yeah big version changes from apis uh tend to require re rewrites and and therefore um so the more enterprisey it is the more likely you're able to get away with putting it as an attribute or just putting it directly at the connection but the uh you know the more commercial it is the the more likely you're gonna have to do a full rewrite and yeah so so it's all over the map so now one thing um maybe you can so i'm not sure that this two legged off is gonna do what i need which is i think we needed so i i don't exactly i don't think you can do what you want i don't think i'm going to be able to do what i want with the user type three-legged author i need the app three-legged auth exactly for that one as i understand it you need linkedin developer enterprise to be able to get those and i don't have that okay so i think that was the limitation i was running into is the thing i really want is three-legged off but for the app not a user because what you're doing is you're setting up your app to be authenticated as a user exactly and then you only get the user level permissions i i need i don't think that will grant me the rest apis i want to access to no probably not okay because the next step when you click here and as you can see i removed the token earlier because i had the token just to show you but the first time you will get this one so if you open the record and when you when i click here get out i actually get that that login window that you get on your mobile phones right so you're going to get prompted as the end user for the scopes that this app is asking you to authorize exactly and it looks like this just to share that little screen so this is basically what's kind of strange is that it doesn't actually if i start typing here oh i might hit uh let's see if that was the correct password i don't think it says what oh it did linkedin doesn't present to you which uh scopes which scopes because yeah exactly that's not an allow or deny screen [Laughter] so basically it's done whoops oh and then it's on yeah it's done yeah let me go back to my share and then i got the token so now if i go to token it's there but i don't get that normal thing like you've get on your phone these apps like they didn't they didn't present the scopes to you yeah no well that's not feels a little feels a little sneaky to me that's a little hinky that's not the normal oauth process um because it should really should be asking that user what did i what am i about to authorize exactly and most users won't know what w underscore something something means anyway usually they have it in full english yeah yeah but i mean it could kind of give us like this or what it's saying [Music] like this one that is normally what you're seeing right but anyway yeah okay so we have a token now um and we got to this part um and if you don't know what uh goron just did um that was the plug-in um the snutils plug-in by our our good friend of the program and co-worker at servicenow uh arnold uh has been working on that for over four years now yeah this uh and it has uh slash commands and so you've got these uh slash fd to launch floor designer exactly there's so many there's so many cool stuff i haven't learned there's so many cool ones but i think my most used one is pop to pop in and out oh to take that current window like you could take yeah so when you launch into you know when you like middle click and it opens a new tab and then you're only in the record or list view and you want the nav back you can use pop to pop you in or out of the that the nav shell i i have no clue about that one it's so so very handy uh when you end up like someone sends you a link and you're yeah and it it takes you directly to a record into instead of the nav shell and you can be like slash pop poof i've got the nav shell now yay wait if you didn't have the nav shell where would you go yeah oh you you just type slash pop anywhere like as long as you're not on an input you just do slash pop okay so snug it doesn't have it's not in the filter nav he wants to try it yeah he's got to see it do it there he is too like if there's no nav 2. so i slash pop now click outside of the input so you're in the input yeah there you go there you go now [Laughter] nice that's that's definitely we can shut this down who cares about linkedin we're just going to have a session on that send you tills now i mean that that would be a magical session like asking you chills is pretty great we did one at a recent dev meetup but there was just so much 99 of it bounced off of me because i need like one or two things at a time and then come back in a month and tell me so that was one thing let's do one more thing in s and utils because i'm having fun being distracted uh so open it up open up the little uh snutils not the slash commands okay we've shown slash commands now yeah go to tables because this is one of my most used things is searching for a table so like okay so i love using this and then i can open the filtered view from here which is nice because this opens up just the filtered view so i love that feature is it finds the tables for me and launches them with the interactive filter only um which is especially handy when i'm going to an obscure system table so finding the name of the table launching it and loading the interactive filter so it loads fast because it doesn't have to load all the rows which i don't care about yet because i haven't put a filter in like that's that's the gold is pop and in the table jumper for me i like just since we're going for that i like this one environment oh so that opens the same page in a different instance yeah exactly oh man that one's so good yeah there there was a utility um there's a different utility i think it's the other competing one so does our notes like actually give you the diff [Music] i i can't say no because there's so many things i don't i have no clue so well no i'm saying when you do the in the en environment to just let's open the same record on another instance yeah so the other plugin which i don't remember its name but the other like the second most popular plugin it will open the other record as a diff so it'll show you the difference between this instances version of that in the other instances version and that that's pretty nice yeah so when you're in dev you could say how bad did i beat this up it used to be exactly as you can say how's this different than the prod version and and actually see the diff right there for you know so it renders the regular servicenow diff compare um and it's just a record from one instance to another and it it's super useful but i always forget to install that utility um but but it's it's it's there and it's really useful i'm getting content ideas all right uh so we've got our oauth token so let us head into flow designer which you have already launched in your second tab exactly and basically just to show you what we are going for is the consumer because that's where the stuff is that we are allowed to do so basically we have uh where is it designing we've done that right um and now we have the share stuff where you can actually share things and what we need here is as well the id you remember we talked about the id last time we had no clue what it really was and it is actually a specific it's not after url it might have been earlier but they have changed that at least okay because i i think you did say that it was the one that you are according to exactly according to some home pages it should be that one but but they've adjusted it since then okay yeah so i'm just looking at my actions i have no clue what that one is uh let's let's try this one just to to see what that did so basically it's just a normal rest or action and i'm just using the connection alias and the result patch is me and basically we don't need to throw anything in there so if we test it i'll take a good simple test and we'll see what we get response body so here you can see we get my name and somewhere here we got the id okay so this is the id we need to use and now we need to use that okay so basically i guess we want to fetch that and um do that as an output from this one if we're going to make a flow later on or something when i tested it i just copied it just to begin just to show you and this url is really simple as well where you basically have this resource path and then in the body you put the id like this one and then you can set up and then depending on what you want to share there's some good example here if we want to share content the one i did or it has a media media and this is the one i stole i think use the text here or if you want to have some kind of a url and so on as well wasn't there uh like a two-part step create an image to share first you had to create the image then you got an id out of there then you could make your share was that kind of like uploading an attachment before you could attach it to a record like we have it servers now it does seem like that this one seemed like a two-piece part and it didn't used to be in the old version one api and this one kind of bothered me about it this is even three steps it seems like ready upload and create the share okay create the bucket put the thing in the bucket and then consume the bucket wow yeah i remember looking at this about a year ago i'm just going that seems really hokey but there's got to be an architectural reason why they did it that way yeah probably but it doesn't have to be good [Laughter] oh my god i've made i've made bad architectural decisions in fact i've made bad architectural decisions this week i think we can all say that at some point the um if you upload something with the url you know how when you do it live interactive on the web it will if you say hey there's a youtube url it will render the youtube and make it clickable so you have this thumbnail below yeah does it do that through the api or have you tested that i have only tested to create a text here simple text okay yeah but i mean that's pretty much just this thing so i can just type you can actually add hashtag and stuff like it will work so if i just change this to like live code happy hour post put our video url in there yeah put the video url nice get that one if this works i am stealing your code and then i'll just do like that and we'll see and trust me january is gonna be full of development for upcoming web series so i'll do a test on this one again let's see and i think i should have that 201 or something 201 would be an insert [Music] yeah all right nice and i think you're going to save me about a week's worth of work here but there we go is seo activity but yeah it was there no it's like it didn't make the video like it did below her andrew no huh that's that's really morning yeah yeah but i know why i guess because if you want to share that we should use this one create a url share oh you are real let's let's just they've got a unique a new action new action time because um that makes sense given what i know from uh what i have to do on the blog to make it so that those types of things render appropriately in other places so it makes sense that it it prompts you because the user gets prompted by rendering it and then you can adjust it an api doesn't get doesn't get that choice so it's saying tell me exactly what you want there yeah but it seems like when you're doing it interactively it's doing some introspection to go oh i see url let's go render it it does but it allows you to adjust that oh you're right there are some tweaks you can do that's that's what i'm that was my point was it okay the user interaction actually they go and retrieve that and present it to the user and then the lets the user adjust it and and the the api doesn't doesn't have that interaction so you have to you have to tell it explicitly so it it seems like all of them will go to the same endpoint endpoint yeah it's just a different uh audio different body format that had some some extra context and i checked and i could not find an open api spec either that's not surprising given the rest of the fiddly has one come on bitly has one granted i'm not saying that linkedin shouldn't have one i'm saying just looking at their dev site for linkedin okay i am not surprised actually bitly's was in json and i was able to find a service on the web that converted it to mark or yaml which was very nice okay so now we need to steal my idea yeah get the id in there so we've got the id oh yeah probably that live live coding happy hour share article and we media ready description text i guess would do something i wonder what that text is compared to this one um yeah so this is the media text yeah so it would go below like in that case it will go below so there's the image and then the text for that that media is stealing what the youtube is sure sure that seems reasonable and then there's a title text another text that's right let's there's the error should we do i'll just change just yeah just to do like a v2 and we'll see where that pops up comparing i think the text i i just trimmed that that to be live coding happy hour and and nothing else like that and then we can decide i guess public or something visibility sure connections or public uh public could be good [Music] i've never noticed that on the ui that you can change that yeah it's a it's a little drop down at the top yeah so i guess we're ready i always i always you know leave it as the default which is public but and it's funny which things in uis you don't notice that you don't use until somebody points them out and then you go oh that's a time saver yeah we got the 201 again we're such creatures of habit and i'm ready i'm ready here we go so we have okay so the one with the hole the linkedin integration text it doesn't pop up anywhere right oh you're right so it only has no what was the point of that yeah putting in parameters that don't that it doesn't consume so we have no clue if it's this text or this text though well one of them i think one of them is in the media but the text that says linkedin integration because the one in the bottom of the video also said i'm i'm convinced it's using two of those three one in the one in the message one down there no because it should have that one right so that is the one i would hope that this is from youtube that came from youtube so it must be reaching out to you they must have an implicit api call that one was this is andrews right right and mine yourself says like or happy and andrew's was done via the human method yeah so i guess this one we can expect this one is probably that one so this one should be called linkedin live coding happy hour because this is what you see here okay and then this text here is basically the text above right let's make sure that it's clickable does it does it click and go through where you expect it so nice just have to check awesome i'm convinced yeah you just saved me a whole bunch of time in january thank you i love it i love uh past me saving future me tonight i know i'm going to be watching this video that's okay that's okay that that is uh so i was talking to josh yesterday uh josh nerius used uh started this uh show um with dave slusher what full four years 2016. yeah four years ago four and a half years ago i forgot i was on episode one it's a long time long months later no and i was talking to him and he's like yeah i miss that i can't go back and look at things like i used to be able to do because the number of times that we go look at our own videos is actually quite high and he's missing that in his new role owning integration hope because he doesn't have recordings of the summary of what he learned this weekend at the end of the week oh yeah it's really good to go back to your stuff well you know because i don't store all of this right i store that i know that i have done this and uh how to find it do your best how to find it yeah try to remember since is it a video did i write it in evernote is it posted i don't remember well that is great uh so we got a post um and i this api is not going to be able to do the retrieval i want so let's just take a moment and look at it um can you go to the the officer types on the linkedin page the linkedin page yeah api references no the should be probably under development let's just do it like this let's go back to the start yeah development and then authentication yes this one yeah so scrolling down here so we've i've set up my app and uh i've got this part and the client secret and the getting the auth code um so in just a little bit further it didn't look this nice when i did it yeah see it's supposed to prompt you like that yeah well you know the screenshots on documentation is often so you'll see down here under this uh application approved part is um when you connect with your your auth so this is the thing that i hadn't um gotten finished was the the transaction with them when we started they send you back a code that you need to include in the neck in the last leg um and so that's a thing that i have to add uh into in in order to get the three-legged auth to work um and that will require so go over to uh link go over to your instance and go to the app registry and open this up and so this will need to be done in a custom oauth api script so open up one of those and i'll show you what i need so i know what i need to do to finish this for mine i just have to finish it um and you're going to need to show us that that window or pull it into this okay so once you get that url and get the url from your pop-out and throw it into uh i i i didn't uh remember that you couldn't see what i was looking at yep so let's just steal this one i guess yeah so drill into uh really any of these will be fine but the oauth util is the the base one and so these are script includes um that are for all things ah it doesn't really fit it doesn't think it's a real boy ah let's do this nice still doesn't want to load it though um so just tr you know just go to the script include table and open the oauth util that's fine there we go and scroll down to the uh well actually we can do it right here um well no scroll down to the script for me would you and make the script big so do the oh it's that one yeah so what i have to do is um i've got to throw in the intercept the request parameters and send it a couple of extra parameters and then i have to uh post i still have to add that to the pre-process access token so there'll be a little bit of adjustment that i'll have to do to do that three legged off for my app for what i need and this is this is where i adjust that is is here in this oauth handshake um it's so you can adjust you know so these are defaults that it sets up to handle you know generic oauth but if you know a company has added some extra things a good example would be google google ads some extra things here so for example if you're doing offline access which you're doing an app so the you know it's that's normal so that's a scope that that youtube requires and you request it but in order to to handle the response appropriately you have to add in something here so drop back into the list view and open up the youtube one and you'll see here the access type offline in in the request parameter map so this is this is something custom you have to do for youtube um as of this year so it used to be only in the scope request but now it's actually not only a scope request it's also part of the request parameters but this is a little bit over my leak to be honest but a question here then if i want to add the state this one is that where i'm adding that one uh yes so if if you need to add the state and as part of the oauth handshake that's how you add it because basically i would like to do this to prevent that cross scopes functionality so then i actually need to go in and do so you need to um pretty much access the api well so you copy the out of the you know the oauth so there's the base one that it uses when you don't select anything you copy that one customize it for yourself and select it in your app registry yeah make sure you use that one yeah make sure that it extends the base one yep we had to do something similar in an early early version of live coding happy hour with dave and josh when we did i thought it was google calendar but it could be something else but i know i definitely stole it from my google calendar integration yeah and so there's there's quite a number of things that you might have to do depending on the oauth provider that they require you to adjust in that in both how you send them information and how you process their tokens um and and this is how you do it is is in this this script includes so that's what that field for in the app registry is to select one of these that then uh you know handles how servicenow asks uh for that oauth connection to that other entity um so awesome it's nice to see that the description field here is basically the code you need to paste in a new script include just to to get started and it's actually like useful example yeah like the those those are this is a a good script to include description because it is a it's an example and it's better than the base case one because the base case one doesn't have a lot of stuff in it yeah yeah so you might not know the format that it needs to you know like if it didn't have the pre-process access token in uh in the in the script already the example does and and now you know how to to reference that and use it to use it yeah so this is this is an example of a good script include description documentation right where i need it i don't have to go to this servicenow api uh docs page which is great um so i think we're at a good uh stopping point um we you know we got our 80 victory yep that's good enough but which which is good so you can stop your screen share sir and we'll return to the regular video quick update from last week because the last thing we did was make it a couple of made a table remember we were we said well well that didn't work and we finished this piece real fast what else we got to do a few minutes to kill last week and andrew was making a table so we could generate uh output content whether it's html for a blog or markdown for a blog or a social media post based on the data that's on a record and i was sitting around sunday morning because that's what i do and said you know i could make this pretty easily there is a an api class in the global scope called record to html that will let you take a template line and use the dollar curly brace notation like you would see perhaps in an email template and parse those variables and you can even dot walk into those variables say that again chuck you can record to html go look it up and you can use dollar curly brace notation so dollar curly brace short underscore description so there's a platform feature already for that platform feature already for that what i added was i made a script include that said just go generate me the metadata content for the template so i made a second table called script think mail scripts where you use dollar curly brace and in my case it's script colon script name and it will use glidescope evaluator to go run that script and i pass it current i may pass it other things in the future but now we've got very similar notation to an email notification for any other output you can use the meta you can use the data from a record to generate html here's an html template based on a condition when i'm in work in progress i want my html template to look like this when i'm done post production i want it to look like this you can use different templates different ultimately super flexible because those dollar curly brace substitutions i'll be happy to share that piece with anybody who wants it it wasn't a whole lot of code glidescope evaluator and record to html are at the heart of all of that so we'll probably cover that in in an upcoming video at some point i just wanted to let you know that we've moved that forward and that's going to be a key component to automating our process with this video series with other video series with podcasts that we do so we can automate and say it's time to send the linkedin boom there goes the linkedin content using the url from the youtube field and using the description from the title field whatever we want to put into those templates gets shoved out to social media or blog or whatever so big time savings in authoring and consistent content i love it's cool there's already a utility to do that yeah i didn't know about this until i went on a tirade through the ap through the script including because you were doing it yourself like you built your own yes i was doing it by hand and i had it was per application per table so and it didn't do dot walking so it would know to look for that expression of dollar curly brace something and go look for the field but i had a limited list of fields and anytime i wanted to i had to update the code like and i thought you know clearly that functionality exists for mail but i thought that that was either black boxed or just specific to mail i did too and you know years in year many years in we've got on this show we don't know how long it's been there but it could have just 2008. it's created 2008. okay it's been there a long time yeah and and and this is why the servicenow platform is so powerful always something to discover so before you go and build something years later we discover a thing before you go and build your own yeah that is fantastic well uh that is a a nice uh that's a nice button on that thank you chuck and we will uh do something around that uh next year that that's a that is that's just a treasure um so how was your christmas margarita my christmas margarita is gone well i still have some in the tank i uh but it i made it a little strong so i'm not going to finish the whole thing for karaoke later yeah later and how was it it was very good i you know not my best margarita i'll give it a four and a quarter four and a quarter and how was your czech beer sir oh my my slatter prop oh it's it's a five it's really good and it's wow it's done as well and uh my smithwicks uh red ale uh it's quite good okay it's it's a 4.5 by alcohol and by me wow good thing it wasn't like an eight and a half yeah then you have to divide by um so that is uh the end of our 2020 live coding happy hour um this has been a uh long here i hope you have enjoyed hanging out with us as much as we hang you know enjoy hanging out with you here on the show this is my favorite way to go into friday i still have a little more work to do today unfortunately because the the earlier hour to accommodate our fantastic guests go on today but um it's just my favorite favorite way and i hope you're getting some value out of these shows and if there's a way that we can uh you know improve these for next year feel free to reach out to me directly and let me know what you think you can put comments on this video but feel free to email me or slack directly if you have a you know an idea for how we can do better in the coming year because you know we we always want to improve and get better because nothing nothing's finished as long as we're still working on it and we're still working on this every week so we can grow and improve and we just really appreciate all of you and i hope you have a lovely holiday anything from uh you chuck before we say goodbye for the year just thank you to everybody who's been watching it has been a real pleasure to be able to bring this content to you without you it wouldn't be much of a show double thank you to all of the guests including present company included goran thank you uh you you bring subject matter and ex see if we can do this while we're sober subject matter expertise knowledge to the the show that you know goes beyond what we have and it just it adds so much color and it's just i love learning from other people whether we're customers or employees or it's it's such a wonderful community and this show really showcases a lot of that community so thank you to andrew and brad for keeping the system up and running and we'll continue to automate and participate and improve going forward but again like andrew said we do invite your feedback please let us know what we can do in 2021 happy holidays everybody all right well that was a lovely closing thanks chuck and uh top of the hour and it is time to go and we'll see you uh live coding next year so have a great holiday everybody bye-bye [Music] you
https://www.youtube.com/watch?v=nXRnT26LFWM