Twitter Integration - Live Coding Happy Hour for 2020-12-04
[Music] so hello and welcome to live coding happy hour on this december 4th 2020. i'm your host andrew barnes here with our co-host and no special guest this week um so let us dive right into the introductions with my friend brad hey everybody my name is brad tilton i am a developer advocate with the developer program here at servicenow i've been with servicenow for about four years and been developing on the platform for about 12 and excited to get into our twitter integration today awesome thanks brad and santa chuck ho welcome to live coding happy hour hey my name is chuck tomasi i don't have a santa beard although this is the one time i wish i did this would be appropriate for a long white beard we'll have to see if we can get uh brad to color his or something but i've been with this now for about 10 years customer for a couple years before that um i think i forgot to mention my title the senior developer advocate also awesome thanks chuck and i'm andrew barnes also developer advocate here at servicenow i've been doing this for a little over two years at servicenow i've been in the ecospace for a little over six years uh as a developer architect uh at a customer cut multiple customers and a partner uh doing implementations and super excited to be here with y'all today um doing this live coding development uh on the stream today brad what did you bring for beverage i have a an abita office party holiday stout uh so i'm in the holiday spirit a little bit at least you can't get much more appropriate than that a holiday style i like it and what did you bring to the table chuck i have yet another model so yeah nice dark beer i wish i had some mexican food nice and i have let's see what we uh pulled that oh yeah a southern tier brewing company um pumpkin pumpkin pumpkin so it's an imperial pumpkin ale i like it um i'm also not feeling the greatest today so i have tea as well oh smart smart i think i'll be having more of the tea than the the beer um so awesome uh thanks for joining us everyone in the uh youtube uh we are going to do some unscripted servicenow development today just as you would as a servicenow developer uh in our ecosystem uh so uh while we do some prep for these like getting authentication keys when we need them and you know uh you know reduce some of the the noise uh and focus on what we're here to solve today um we didn't practice it we didn't script it uh this is uh just live development and we also rely on you the live commenters uh to help us out of jams sometimes so uh join us on this journey today uh we are gonna be doing uh some twitter integrations today so i know i've done this a few times before um and today what we're going to be solving for and i'll let brad add uh you know more to it because he'll be driving today is we need to collect some twitter data because one of the things that that we have here in our developer program is our mvps and we love them the best uh they're awesome uh so our mvps are awesome and we've got the open nominations for next year's crowd the main thing about the nominations is really just uh collecting all of your different data sources and tying them together so that we know that this community id goes with this twitter handle goes with this linkedin id goes with this um because it's not always apparent uh you know because your twitter handle may have no relation to your actual real name um so uh you can find that on the developer site uh those that nomination form developer.servicenow.com blog.do and thanks chuck and as part of that um you know we collect that information and we see uh uh information about those nomination uh candidates what they've been submitting from twitter so that's that's what we're here to do today is collect 2020's data uh for all of these twitter users uh that we want to focus in on uh brad you want to add anything to that yeah so that that's what we're doing mvps uh we are anybody who submits themselves and provides a twitter link we are going to grab all of their tweets uh for the full year uh which uh so i did a little bit of pre-work to make sure that this was uh one possible and two something that we might be able to actually do on the show uh so i have i found an api that we use that we'll use that's a little different than the out of the box so there's we have a couple of uh twitter integrations uh that you can get already through servicenow and so we are going to build a net new integration uh using integration hub awesome um so you wanna do you wanna dive in let's do it let's do it all right i am sharing sharing is caring and it looks like you are sharing the developer blog that is i am our culture sneaky sneaky sneaky bread yeah so before we get into how we collect uh this particular data for the developer mvps um we we actually have a couple of developer mvps in the chat with mark and jace there and so they can probably share a little bit more about uh you know being a developer mvp uh but we have our call for candidates open right now it's going to be open the whole month of december and we've got some information in our developer mvp criteria post um and uh but the submission process uh is detailed here uh so go ahead come come to the blog check it out and if you're on the fence about whether or not you know if you think you know maybe i didn't do enough this year go ahead and submit yourself as a candidate uh we'd love you know as many people as possible uh to do that so we have a really good pool and uh and yeah so that's that's how this starts and then once you submit yourself you end up uh with some of your data in an instance and that's where we're gonna start today so let's uh let's start with what so now we're going to drop into a servicenow instance our favorite place to be that's right um let's zoom in one time all right so i'm in an instance and we've got uh this is my my dev instance uh for our um the instance where we're collecting all of our candidate data and when you submit yourself you end up creating a record that looks something like this this is my really sad record because it only has my email and my twitter handle um and i put some links in as i was doing testing and then what we're going to end up doing is we're going to create records in this data collections table so this table is going to hold lots of different data not just twitter data but for for now it's set up specifically for twitter data although i hope i have made it generic enough to where we'll be able to put other things in there as well so we are going to hopefully be able to populate uh these fields with data from twitter and we'll have a record for each of my tweets from this year so that's that's our goal by the end of the show uh to have that in there and then we can do stuff with that you know based on tagging and things like that nice does this make sense to everyone all right so but i've seen it before this profile was created through a catalog item is that what i'm guessing because it's got filter variables that is that is correct okay um yeah so it's created through a well it's a record producer but if you go to the well let's let's do that real quick i don't want to waste too much time on this but um once you get a login come on once you get a login you're going to end up on this portal that is going to load so most people will not have a meetup portal or platform view unless you're a meetup organizer but you'll click on mvp candidate submission and then oh if you don't have a profile yet it'll redirect you to the record producer and if you do have a profile it will redirect you to this profile page uh where you can come in and add more links and add more data so that the important thing is when you go fill this out it's okay if you don't get it completely filled out on the first time it just needs to be completely filled out by the end of the month but this is what it looks like for somebody coming in and filling it out all right so i'll talk real quick about the uh there's two integrations uh i wonder if i i looked at both of them so we have a spoke there's a twitter spoke and there's a live code happy hour from last year uh where the two of you guys and dave uh did uh something with the twitter spoke um so that the twitter spoke is only for posting uh a tweet or media uh so that doesn't really work for us and then the there's a twitter integration with um i think it's pulling twitter data in and then doing some pa stuff with it and so that is there too this is a long transaction um so that didn't work for us because the i think the endpoint that it hits only gives you the last seven days of twitter data and we want a full year and uh 2020 is a little bit longer than seven days that's correct unfortunately it feels like seven years 400 days 2020 qualifies as seven years all right so we're not going to look at the plugins because that's past my threshold yeah let's pass my awaiting threshold too we're still going so let's look at uh twitter really quick uh the api that we're going to want to use is this uh where is this it's this historical tweets this is okay it's not going to show anything uh it's this full archive api um we like examples yeah so this is the api um i did have to do a little bit more setup in twitter uh where i had to uh create an environment uh where which is literally just clicking a button and naming it um so we have this environment here that i can use you had to get a developer account and set up a basically a they call it an environment but it's like a project okay yeah so this is my google they call that a project yeah this is my twitter developer account and so i created an app and then in my app i have this dev environment that is basically what gets used to search tweets so there's some throttling on this and some limits around it for the free version at least um so we're going to consume this api just to make sure that it worked and that my token my bearer token would work i did i did do this in uh postman earlier today uh and it did work uh but so so we'll use that and and create an integration of action out of it did you put your token in as an api key in the connection credential stuff i haven't i haven't done anything in an instance yet oh okay okay so i think that is that is what we'll do i'll put it in it's an api you validated that your token works in postman but we haven't i wanted to save yeah you know we're going to save something to mess up on the show so yeah yeah authentication is definitely a good spot all right we got this box of band-aids we need something to put it on all right so we'll go oh my plug-in list loaded now i don't even remember what what were you going to show there the twitter we're going to look at the two well let's just all right so there's two there's a pa and then there's the spoke okay we got the spoke installed yeah i i didn't install the pa on this instance i i had installed it on a pdi just to look at what it did so so yeah so the one of the interesting things is the um the pa integration does something fairly similar to what we want to do uh it is um you know it is limited uh and that it's using that specific api uh but it's also pretty heavily scripted and i think we may get away with writing you know no script to very little script uh when we do it through integration though which would be kind of neat to see the difference my favorite so let's go ahead and open up flow designer um look at josh and arias about that too because next week's break point is with him i said remember when we used to do outbound rest messages and we'd have to script everything and now you look at that and go what was i doing we should probably create a new app for uh for our channel let's do that twitter spoke yeah i will not call it twitterspoke what is the studio man wow a happy friday to you yeah no kidding i was like i think i was looking for my company applications for some reason isn't it postman too [Laughter] all right let's call it uh twitter collector mvp okay good oh there you go twitter get your call in there uh i mean i guess we can put in the name it doesn't yeah that that helps you identify now what do we do about that i'm gonna do this oh come on just take out uh you know the underscore or something i don't yeah that'll work all right so we've got my app all right i like mark's comment about the downside of the employee instance that you get the x underscore snc spoke and it looks really official i i have found that too like what am i doing here is this is this going to be something that gets used as an example where i still have grief every time i see the letters snc like what's the c stand for tom we're not surprised.com anymore yeah so this is going to be cookies that's what c stands for we had that last week or the week before we were doing the command line stuff say should we call this uh get archived get tweets by user i think is what we're going to end up doing with this action like a good descriptive name yes let's do it all right so i think for an input we definitely want another twitter handle okay and um that duration do we want month a year yeah we do need like a date range so let's um put in a couple of dates how how does twitter met is it a duration a start date end date it wants a it wants a start date and an end date okay we can mimic that but we could uh we could just pass it a start date and assume the end date is today or or do we just want to like assume that we want tweets for this year i mean we're not building this for 50 million other people we're building this for us all right let's assume we want to tweet this year i don't i don't really want to convert dates is [Laughter] that's wrong mvp program stands for minimum viable product [Laughter] all right uh and let's let's set that to 100 that's that's what twitter does with that is that's a 200. all right i am saving because that is what i do jay says you're definitely not looking forward you're getting older you're looking for the whole record all right uh i did click this button oh yeah max results would be a good idea the instance uh sleeping a little today i guess so andrew are you influencing somebody uh did we cache it oh the images didn't even load what they're getting there that's rough well we need we need to set up the credentials oh yes we do uh oh can i create a new one through here no no unfortunately oh that's the one thing missing from there i'll have to have a talk with josh all right so yeah first one here's my oh it's the first one that's the one i always use [Laughter] i am i'm like auntie olaf all right we'll call this twitter collection okay you didn't need it but i threw up the privacy shrubbery anyway oh thanks we haven't seen nothing to see here nothing to see here i wanted to press the button [Laughter] make sure it still works why no i don't want that um no what did i just do you seem to be trying to create a connection now you start sounding clippy that's what i want what do we call this collection [Music] here okay then we need a new it'll work is this api api.twitter.com anything um [Music] it's going to be 1.1 but so something that we should mention is that twitter has a new api that uses oauth 2.0 which is really nice um but not all of their um not all of their apis have been converted over so the one that we are the using that we are using has not been converted yet uh so so yes all right we're we're here so many tabs now all right so let's grab no do i need to reload save and save and reload save and it should it should pick it up after that's true that's true and the guys in chat are getting a little twitchy oh you know what i didn't need to know that there's a clippy.js and mark if you put clippy into va i'm going to see that instance all right so i think what we want is [Music] you should save that for a hackathon a clippy va this so this is the api uh for the full archive search uh and then there are some query parameters well let's look at the uh and it'll tell us right api reference what's this document we want this one yes max results yeah so query from date to date max max results um i think is what we want here so query and then twitter has uh a query query syntax where if you're looking for who it was from you use from but you can get pretty complex with the queries and they they do an okay job of showing you how to do that um but we want we're gonna keep it simple to say from twitter handle and then the next one i believe is max results so it feels like with your 100 max results that may be not enough it's like you're gonna need to do some pagination here did someone say data stream let's start with this and uh make sure it gets work and get 100 results and then then we can convert it but yeah that so we have i think there's from date and to date oh that's a header and then the default value in max results right i did yeah okay took it and then inputs and yeah it was only yeah okay so the date format is [Music] something like uh so i did this in postman already this is what it wants is the date uh so it's a year four years months all right yeah plus uh because that's hours and seconds yeah uh and then it won't let you set a future date um but we can go beginning of uh today that seems reasonable but you know december one seems good sure yeah let's go for it i'm gonna be unsafe look at you okay i'm gonna save because i've dragged things and typed things that i don't want to do it again save early save often and then i think the only header we may need is the authorization header yeah the mirror token you and this is good to know because this is not an unusual setup for oauth one is and a lot of folks leave out that bearer token uh the bear apart in the value until they figure it out uh after like a few tries they're like it works in postman why doesn't it work here and it's because postman will insert that bearer apart for you right i think the c on content type needs to be uppercase i've run into problems with case sensitive headers let's do it all right let's save uh that icon did not load it's this makes me nervous when the icons are not are not there uh i don't know can we test this do you guys think this will work test it let's do it let's try it i have faith in you brad let's see yes it's going to work because you already the credentials so that eliminates 90 of our problem rolling rolling rolling [Music] this instance is dragon i don't know what the that was a satisfying delay like that was an integration level that wasn't bad yeah no pink no pink no pink no whammies there we are let's look at the steps that's that's a dated reference are you big bucks no whammies yeah oh i think we got some results 200 statuses 200 statuses no whammies we love it uh that looks like json to me yeah that looks uh it looks good no looks like it's got some utf-8 in there i don't know can we send this to the uh json parser chuck's in there like this this looks accurate yeah uh there was a yansa labs which was durham like this this was a cool uh thing too barnes and yes i see that yep all right if it's not brad's content it's somebody who seems like brad [Laughter] it's the brad bot all right so you get a you get a a bunch of accolades on the chat for getting a hole in one we don't get those often on this show so i mean i did this in postman already so i knew i knew i could make a successful rest call um which which really is the i mean that is the way to go when you're setting up a new integration is use something like postman which is uh you know a robust integration uh system but it almost never is your failure point it's so try out your integration make sure you get that auth correct connect to the thing you know make sure there's nothing between you and that thing uh and then you know that you're sending valid stuff over and then move that into your code base or your platform in our case like whenever i'm building integrations it doesn't matter where they are i start with postman to connect to the remote thing i usually start with curl i'm old school well yeah so same kind of thing that's the that's basically the same thing right you're removing servicenow as the potential source of issue you're really starting with the basic basics saying can i connect do my credentials work yeah so there's a question on what uh what kind of queries you can do and the twitter api docs um have some uh attributes and operators in here that you can use and then um i think we'll see this when we when we do the json we'll see but there's a lot of data that comes over with just one tweet um where are we at mark was wondering if the analytics data came over as well that's probably a different api yeah i suspect that's a different api um what do i do first do i put that in first you should go get that example from the test execution yep so switch over to your execution detail tab in flow designer uh yes that is right get that payload there and then copy it uh i don't think i get the whole yeah it looked like it had a dot dot dot at the end that doesn't work too much in there is there is there something in the other one of the other tabs like code that one looks like all of it uh we could just we could change this and just uh grab one or two tweets and then do that let's grab two yeah grab yeah like four you're gonna have to watch your array delimiters and things all right let's grab four oh i see what you're doing let's grab uh let's grab chuck's tweets uh you don't want those i don't even show those to my wife i mean they're they're public that's true that doesn't mean anybody's gonna see him that's true okay that was a satisfying run length oh you don't exist no oh the json parts are filled that's okay oh yeah we put it in but we totally didn't tell it to do anything uh max results must be greater than or equal to 10 oh interesting they're like you can't you can't you can't get more than a hundred four four you're not a worthy citizen unless you have more than ten things well i guess let's grab ten if you don't want ten of our things go away that's kind of funny uh yeah it's an integer so it's right yeah it doesn't let you go did nothing you've exceeded your number of connections to us go away your rate limit's been exceeded that's possible that happens when you're doing dev sometimes you get a loop and it just goes nuts and then you come back tomorrow oh it's still those are jason pressure again yeah there we go there's some results oh come on how is it truncating on four oh it's just ten we have to say 10. i'll tell you still 10 you get a lot of data limited i've got so well do you have it over here i have it in postman let me drag that over here yeah i don't think uh nobody steal the first part of my bearer token um the first part the first part just the rest you've you've narrowed down the entropy if you're the guessing for your bearer uh so let's uh the aaa part was too tough to guess let's just grab 10 so that this is shorter that ran faster really is not that's a lot of so uh but if you look at one tweet uh there is a lot of a lot of data so and uh market all of the users data yeah so your questions 230 lines per tweet because you said 10 and it's up to line 2300 yeah yikes um okay paste away that's when postman is nice they are not a thin client it just cracks me up that uh a service that limits the amount of money okay characters yeah that you can send through it like that is so many time multiplies that when you actually query for one of those well they're generally i mean they're they're standard apis you can only get seven days worth of data so i guess that's the i just mean they ballooned the amount of characters to like a thousand yeah for a thing that's limited to 280 characters of the stuff you could put in there like that's that's a lot you have a lot of metadata all right we where do we go next click generate target target all right processing oh i shouldn't have dragged it because it's kind of awesome processing hey it did some stuff let's look at it uh collapse the class yeah collapse the side panels now in the target window yeah and then you can expand that out and see if it looks reasonable to you results results that's looking reasonable okay so now all you need to do is in your source data field on the left at the top pick the uh response body object and then hit save and we should be ready uh yeah hit save you should be ready to go you'll get an object on your flow data pill panel that says root it's true we're saving away i'm gonna i'm apparently gonna have to slip this instance a couple extra dollars to go a little faster we forgot to all right meterville okay so now we've got some stuff in here all right cool outputs outputs yeah so i think i think we just you need your action outputs yeah now we link it up to the outputs because that's what we want is that we want that whole object outputted right sure yeah so i think we want an array of objects right so we want to know what an object just an object there's an object well actually we want multiple tweets the array of objects you could do the array of objects and then drill you just give it the root the one the array of objects level that's a below root because we don't actually need root so do the array of objects i vote all right give it a try give it a try i've had varied success here um and now uh hit x edit mode in the yeah yep and then give it uh drill into root and give it the results right there and now you can go back to edit outputs to see he didn't if it's happening it's not doing anything yet there we go wow it's actually crafting all of them my uh my audio cut out for a second so i knew it was doing something real serious all right she's killing me today fred i love it um so if you hit edit outputs we could see now the structure of that yeah let's make sure that we're happy with it i i like but that looks good yeah that is good the reason that this took so long was because it was creating all of these variables when you drop that data pill in yeah that's true that's true so it created uh however many this drills down into variables right there do you want to change the variable label ah that seems that seems polite your results tweets tweets tweets i like tweets there we go we're not changing the data type save one more test that always makes me nervous but okay i was like the one that says you get this error message because you may have changed a variable name somewhere like what all right the save button was still green so i was uh there we go all right so let's uh let's grab a sub flow and yep as soon as this is done eating a sandwich there we go all right let's create us a sub flow here uh get get tweets tweet tweet italy uh but this needs to be not in our oh yeah mmm yes that's funny that i caught that because history says that i do not catch those things a betting man would have said that you don't catch that uh so i think i'm going to be passing this sub flow a profile record next time we have one of those situations andrew we're gonna have to go like oh looks like you owe me five bucks this time oh i want reference and i'm going to want the oh what did i call that oh this is it i'm terrible at naming tables really generic things that also have 20 other tables request task uh and then do i want an output i'm not sure i need an output right now all right so our first uh i'm gonna be good and say um if twitter handle empty not empty so let's make sure that the person has a twitter handle oh yeah little error checking um i guess we will say it's not empty it looks funny but it actually is yes yeah it even says not empty oh you probably typed that yeah uh oh we need to publish our action don't we we could turn it on draft yeah you can turn on the draft the chooser but publishing is fine if you have faith it's really working we don't have time for another save come on i know i'm not going to save anymore cuz i i i want to get some records created based off tweets by the time we're done in the next 14 minutes and every save takes three minutes hurry up or i'm going to start singing come on all right just in time uh you got to collect all the tweets with the twitter collector that's right the twitter vacuum slurp them up all right so we got the tweets for each i think so for each reach tweets uh we're going to now did creator update do we have a unique id in there yeah there is an identity each tweet has an identifier so you have a corresponding like correlation id or something in that record we can plop that into yeah there's an id field on that uh perfect collection record all right we don't have a template we have id and [Music] for each is three that's three all right that's right id so id hey there we go i think we actually want uh oh they're the same okay there's a uh determines uniqueness it'll be yes field now let's go forth with the rest and then there's a time stamp field that we're going to ignore um for right now i like it i like it categories twitter so we want the text so we've got a few uh newcomers so i'm going to catch them up real quick so we have created a integration with twitter to get some archive data for 2020 for twitter users to collect the tweets for our mvps so our developer mvp program which if you scroll up in the comments you can get to the developer site and blog in which we talk about the mvp program and so rad has been creating this integration and we've connected and we've got the data and so far we haven't done any scripting and we're using flow designer an integration hub to both create this integration with the integration hub part with the action that we created and now we're in a flow in which we're iterating over the the results uh from that integration to save that data into the instance that is crazy all right um i think that's good for now i am gonna want uh the um twitter does grab uh hashtags uh but there's there is some sort of array of hashtags in here somewhere that all right i want to see if we can create these records off these tweets do a basic one then we can figure out if there's something else we need to fill in okay that sounds good every developer all right it looks good to me ship it [Laughter] we're an agile shop we'll just adjust it later uh-oh random i randomly clicked on the trash can which uh maybe not my best moment okay all right i'm going to run this in the background because my experience with this instance well you could also watch the record go over to your profile well that's a good point that's my number one reason running in the background it's like this is gonna take a while let's see what happens still slow you should only get one thread between the background our note is like i know it's you i know you're the same person that's not promising and okay let's see this is getting scary just go down to the related list and click the filter the the breadcrumb that's your list refresh this is getting a little unnerving at this point there's slow innocence in the broken instance yes you know we are not uh we're not hesitant to call out things here uh on on this team we love the platform and we're okay pointing out some of the uh the places when you tell this to run in the background it actually deprioritizes it and so much so that it is uh in the past couple of weeks when i've done this it's taken 20 seconds before it picks up that at all okay so it says you're in no hurry if you're running in the back you are you are not in a hurry i'm going to super de-prioritize this uh so wow so it's not unexpected for it to take a little while uh once that once you've told it to yeah i don't need this right here can we cancel it uh two minutes ago seems about right uh yeah why open it up where did we go it was done we didn't get any records that's yeah okay all right let's just uh yeah open up that execution hmm so it might be that uh did we hit a done did we hit a like a rate limit or timeout or something or yeah but we should get uh we should get oh there we go hey there it is yes 93 93 yeah loop throughs open around create the records yeah and then remove the filter oh bam happens all the time you you win that one andrew all right we've all done it we can fix that uh let's not run in the background again okay yeah no one else is on this instance we're not and we're not gonna do anything else what why did i uh uh add field value all right i think i typed too fast profile there you go yay this one yes how how many times i've done that i can't count i think we will not don't check that yeah i would think only one check for me you don't need it i mean if it's going to hook it up it's going to hook it up yeah do you want it it should only be one id period all right do you want to delete the bogus records yeah i mean i i guess it should run back through and read and associate with them right because they have the same id this should fix it it should update them it should fix them yes because it's a creator update good call self-correcting code [Laughter] it's definitely not a truism i can think that way right my data is auto-correcting please provide a value sometimes yeah oh right you select the same one i've seen that before hey i chose it worked last time and so it took uh 65 seconds i think it said the execution time was so let's let's not get worried before 60 weeks we should still make it don't freak out before a minute goes by is somebody counting for us no i have a built-in timer to my superpower i'll let you know jordan says i just love flow designer so neat look how easy it is to understand what's going on tried doing this not in flow designer and coming back and maintaining it five years from now i agree yeah it's true i mean we don't have any i i don't have like 2 000 lines of code that somebody's gonna need to come poke through it's this is right there this was a pretty hefty script include a couple years ago we've done that it is it's not fun i just i did that i mean it's fun the first 10 times i do it i just came back because my todoist api is broke and that was all done in script and i went i'm not fixing that because they upgraded from like version seven to version eight and and they totally rejected my requests for version seven i said i'm i'm not gonna fix it i'm gonna redo it in flow i'm gonna redo it in integration hub phil's got a really good question which is um you know do we have any uh guidelines around when we create a subflow and the answer is phil i create almost everything as a sub flow yep yes anytime i'm actually building like the flow logic i'm creating that as a subflow and then um so i treat subflows as like a super set of actions that are grouped together and then i'll create a flow that has a trigger that that just invokes my subflow sometimes and that's all my flow does is invoke one subflow but it allows me the flexibility to invoke that subflow the actual like connective logic um from anywhere not just to flow yeah with the flow api with the flow api so um so the answer is almost everything i create is a subflow that's right it's just a better it's a better stack to build on oh hey you get this [Applause] so it worked 93 not all of them have text because i think what we are actually pulling is every twitter interaction these might be like likes and retweets likes and okay so i think we probably want to well we probably want to build a filter yeah so we we would just kind of filter these and do some other things with them but you know we we grabbed uh data from twitter and created records in servicenow with it and uh we did not write any code on this live coding happy hour episode which is kind of crazy it worked so well i think that's a screen share shut down where's yeah where's the challenge we got to make a a three-minute show i am no longer sharing i noticed all the urls were empty as well so we'll look into that yeah something happened there we probably just grabbed the wrong data pill for that nicely done nicely done brad so um that that was great uh so the prep work we did so to tell you you know how it was made uh was brad did create a uh twitter developer account he set up the the environment there and the app so he had to create an app there and then an environment and get it an authorization token um and then he tested it in postman just to make sure he could connect with that and then that's where we started the show um and our use case was we need to collect a year's worth of data for a given user um and so we fired out flow designer we uh you know created a new spoke that spoke contains one action right now which is get tweets for a user we pass it in a twitter user and max results and then what we get back is an array of objects of uh interactions at this point so they could be tweets they could be likes um they could be retweets and we stored that into a servicenow table the next step we need to do is be able to collect more than a hundred of those interactions um but that is a fairly easy like next step that we can take um and pretty pretty great brad that you did that without having to to code anything uh so you created that spoke and then the subflow to consume that uh which then wrote that to the servicenow tables and you did all of that in the drag and drop interface um which is is pretty cool like yeah and and casey has a good point in the chat i was going to mention this uh but there is a postman template uh for the any of their the twitter uh 2.0 uh apis so if you want to get in and test the twitter api we we used a 1.1 api so that that's not set up for you already in postman but all of their 2.0 apis you know you can just go in there and basically you're just clicking clicking check boxes and that that sort of thing to get it to work yeah and that's great that twitter is providing that um for postman to be consumed and and get that get you going i i love a i love a developer program that helps get you going and hopefully our developer program is helping you the servicenow developers get going in what you're doing um so brad that was awesome um but now you need to tell us how your beer was yeah so i have this uh office party holiday stout and it's a stout with some some christmas spices in it and it was really good i'm gonna give it a four two five uh it was nice that's shocking i don't think i've had a christmas beer that gets above the four it was good nice and chuck how was your dissection no no modelo negra modelo i'm sorry my they're close but uh dos equis gives me a headache uh this is good i i very satisfying standard go-to beer i also give it a 425. nice and uh my pumpkin up here uh was i i'm actually not big on pumpkin flavored things usually um it it did its job it you know it was an imperial and this is pretty good i i think it caps out for me on pumpkin flavor uh period like just because there's a cap that you can go and i think that's a 375. just just for pumpkin flavoring i try them out i i want to see if they're good but but he reached the ceiling of his his area where where pumpkin beers are concerned that's a five yeah where pumpkin beers are concerned that's a five they knocked it out of the park i didn't think it could be that good so they they went all the way to the top uh so good good job there he was rate limiting on his pumpkin beers here it is right that's fine i don't love pumpkin beer flavor either so yeah um so that was awesome um we uh we shall have uh one more show uh that we know of uh for the rest of the year uh which will be next week and we will be having it at a slightly unusual time uh we haven't said that yet but we'll get it posted to the youtube channel um early enough that you'll know uh when it is um because we will have it at a probably earlier time so that it can be uh india friendly because once we change the time we might as well reach our second biggest crowd and anything else to share before we uh drop off chuck or brad there are a lot of developer meetups coming up next week and the following week so keep your eye on meetup.com servicenowdev program there's there's conflicts between dc and phoenix if you have to make choices you know we have a lot of meetups coming it's ridiculous uh as i mentioned earlier there's another breakpoint episode coming up on wednesday the ninth with josh nerius so if you enjoyed this about integration you're gonna enjoy we love josh yeah former developer advocate i think he was one of the founding fathers of the live coding happy hour and the developer program so look forward to that that's going to be a lot of fun we have a tech now coming up on the 15th so you don't want to miss that bitly tn 82 reg is where you want to go to learn about instance data replication is going to be the topic for that so i believe all of these and more are on the events page on the developer portal go to uh what is it share no not share uh connect next connect connect that's what it is and then there's events under there how about uh the new integration video series oh right wow almost i i did get that released this week yeah to this very channel there's a playlist specifically for integrations that chuck has put together he's done an amazing job there's more videos to come but the first 15 should definitely 14 should wet your whistle um they're they're by different types uh and and they're they're really quite good uh so thank you chuck for building those you guys did a lot of the proofreading and the validating to make sure that you know subtitles weren't off the screen or something crazy you know so it really was a team effort i'm just the smiling face in front of the camera so go watch that yeah you're right it's uh yeah blog post on the developer blog community blog post in the developer community you shouldn't have a problem finding that if you do bitly slash sn learn dash integrations and you can find all that information there but if you're here it's really easy you click you click the the channel and then go to the playlist yeah you're here already click the servicenow developer program channel name and then click the playlist for integrations it's the top one and uh we hope you have a most wonderful day uh wherever you are and whenever you're viewing this and we will see you next time thanks so much everybody thanks everybody
https://www.youtube.com/watch?v=lQ7gabP1uMo