Coding

How to Program a Conversation with Alexa (Python & AWS Lambda) – Part 2

  • 00:00:00 what's up guys and girls and welcome
  • 00:00:01 back to the second part of the
  • 00:00:03 programming Alexa and Python series so
  • 00:00:06 in this video we'll build off of what we
  • 00:00:08 learned in the first part and we'll kind
  • 00:00:10 of get into the more complex Alexa skill
  • 00:00:13 development features so we'll start this
  • 00:00:15 video off by looking at how do you use
  • 00:00:17 intense slots then we'll move into the
  • 00:00:20 best practices for debugging your Alexa
  • 00:00:23 skill and then towards the end of the
  • 00:00:25 video we'll get into storing session
  • 00:00:28 attributes and allowing yourself to kind
  • 00:00:30 of maintain information over the
  • 00:00:32 duration of your Alexa skill I guess
  • 00:00:35 conversation we're gonna start from
  • 00:00:37 right where we left off in the last
  • 00:00:38 video so make sure to open up the same
  • 00:00:40 Alexa skillet you are working on and
  • 00:00:42 also the AWS lambda code that was
  • 00:00:44 associated with that skill if you've
  • 00:00:46 lost your code from the first part I
  • 00:00:48 have a link to the finished code at the
  • 00:00:50 end of the first part in my github page
  • 00:00:52 the link to that is in the description
  • 00:00:54 and just to give you some context for
  • 00:00:56 this video in the first part we were
  • 00:00:58 working on complements in this video you
  • 00:01:00 will be having some fun and building
  • 00:01:02 some insults for Alexa to say with our
  • 00:01:04 app and if you have any questions as you
  • 00:01:07 watch this video make sure to just drop
  • 00:01:09 a comment down below and I'll be sure to
  • 00:01:11 get back to you as quickly as possible
  • 00:01:13 alright enjoy the video okay so to begin
  • 00:01:17 this intent we're gonna do it just a
  • 00:01:18 very similar manner as the compliments
  • 00:01:21 intent go to build in the Alexa skills
  • 00:01:24 kit and click on intense and add an
  • 00:01:27 intent and we'll call this one insult so
  • 00:01:33 and I'm going to add a little bit of
  • 00:01:36 complexity to the insult I'm going to
  • 00:01:38 say I'm gonna add one of these intent
  • 00:01:42 slots so intense slots allow you to save
  • 00:01:45 part of your in like your message such
  • 00:01:49 as a name a you know date of the week a
  • 00:01:52 movie name a sports team all sorts of
  • 00:01:55 like noun entities that you might want
  • 00:01:58 to save and then use in your response
  • 00:02:00 you can do it with these intent slots so
  • 00:02:02 I want to just call this name and the
  • 00:02:06 slot type will be I'm going to see if
  • 00:02:08 they have a name built in so de first
  • 00:02:12 name GB
  • 00:02:12 first name I don't know what the
  • 00:02:15 difference is between these you Oh Great
  • 00:02:19 Britain first name think I'm gonna say
  • 00:02:23 us first name not quite sure what de is
  • 00:02:27 what would that be who knows
  • 00:02:29 oh shoot am i filming yep I'm filming
  • 00:02:36 okay us first name but now all you can
  • 00:02:38 do with this is I could say something
  • 00:02:41 like in my sample audiences can you
  • 00:02:45 insult name and it will kind of save
  • 00:02:52 whatever you say in that format say
  • 00:02:56 something mean about name and I don't
  • 00:03:03 you know I don't know if I encourage
  • 00:03:05 these insults but and I was just kind of
  • 00:03:08 a fun way to just play around with
  • 00:03:10 learning about developing for Alexa
  • 00:03:17 insults name what it can you trash talk
  • 00:03:26 name that's like four different ways to
  • 00:03:31 insult someone right to ask for an
  • 00:03:34 insult so save model and build model and
  • 00:03:39 now we're gonna go to the lambda
  • 00:03:43 management console
  • 00:03:46 I'll make the text a little bit smaller
  • 00:03:49 just so I can navigate it a little bit
  • 00:03:51 easier lambda handler we're gonna want
  • 00:03:55 to add an intent here in the on intent
  • 00:03:57 so I'm going to do
  • 00:03:58 LF intent name equals equals insult
  • 00:04:06 return get insult response and I have
  • 00:04:10 not defined get insult response yet so
  • 00:04:13 we'll do that or right now okay so what
  • 00:04:17 we can do for this two is we already
  • 00:04:19 have get compliment response this will
  • 00:04:20 be in the same format basically so just
  • 00:04:22 copy that function and paste it right
  • 00:04:24 below
  • 00:04:27 now change the name to get insult
  • 00:04:30 response and you could do we'll just
  • 00:04:38 make it just one word for now like is a
  • 00:04:44 dweeb
  • 00:04:45 he is a dweeb and will actually replace
  • 00:04:49 he with the name or he or she with the
  • 00:04:52 name they have some confidence what's
  • 00:04:55 beat that and I said he is a dweeb this
  • 00:05:05 will be car title insult so we're now
  • 00:05:11 starting to get get ready we're getting
  • 00:05:14 into the kind of complicated stuff so
  • 00:05:17 you might have to rewatch this pay
  • 00:05:20 attention etc so alright so this is
  • 00:05:24 built successfully so I can go and test
  • 00:05:26 this alright
  • 00:05:33 Alexa run conversation application that
  • 00:05:40 put up what up your application has
  • 00:05:42 started Alexa insult John I'm
  • 00:05:48 apologizing a baby is it weep if there's
  • 00:05:51 John watching it's nothing it's it's all
  • 00:05:53 in the name of Education
  • 00:05:55 it's nothing personal bro I'm sorry okay
  • 00:05:59 yeah John's a dweeb he is a dweeb okay
  • 00:06:01 so you can see that this intent is
  • 00:06:03 working and I could still do something
  • 00:06:04 like Alexa I need to pick me up you
  • 00:06:08 always make me smile so that's still
  • 00:06:10 work and we have these separate intents
  • 00:06:12 now so the first thing we'll do is we'll
  • 00:06:16 actually grab from Alexa from the lambda
  • 00:06:22 handler the name John so I could say
  • 00:06:24 John is a dweeb instead of he is a dweeb
  • 00:06:26 so to capture John go back to the code
  • 00:06:30 here in the lambda console and go all
  • 00:06:35 the way down to the bottom
  • 00:06:38 so in the bottom you can see are
  • 00:06:41 actually not all the way to the bottom
  • 00:06:42 but actually to the intent on intent
  • 00:06:45 handler so one of the things that we
  • 00:06:50 save here is in the intent request we
  • 00:06:53 actually grab the intent name right here
  • 00:06:54 and so using this intent name or I guess
  • 00:07:00 this is the intent object in the intent
  • 00:07:03 object we are storing the intent slot
  • 00:07:06 that we define just a second ago the
  • 00:07:08 intense lot we defined was name so what
  • 00:07:11 we want to do is in our insult we want
  • 00:07:15 to pass in the intent and one thing that
  • 00:07:22 might be tricky and I'm gonna show you
  • 00:07:24 right now how to handle is what actually
  • 00:07:26 is in this intent because right now
  • 00:07:28 there hasn't been like a console running
  • 00:07:30 that has been showing us you know our
  • 00:07:32 results here on the lambda side it's
  • 00:07:34 kind of been like Alexa I mean Amazon
  • 00:07:40 just knows what to say and we haven't
  • 00:07:42 had any errors so that's been pretty
  • 00:07:43 nice but you most likely are gonna run
  • 00:07:46 into some errors when you're dealing
  • 00:07:48 with this doing this especially when
  • 00:07:50 you're first starting so I'm gonna show
  • 00:07:53 you how to test your skill right now so
  • 00:07:57 I'm passing in so this is what's usually
  • 00:08:00 gonna happen so I'm passing an intent
  • 00:08:01 now so let's rerun our program quit
  • 00:08:08 Alexa
  • 00:08:11 Alexa run conversation application what
  • 00:08:16 up what up what up your application has
  • 00:08:18 started Alexa give John and insult there
  • 00:08:25 was a problem with the requested skills
  • 00:08:27 response so that's what you'll likely
  • 00:08:30 hear and if you don't know how to test
  • 00:08:32 this thing it's really tough to debug so
  • 00:08:37 what you can do to debug is you can go
  • 00:08:41 into the lexer skills kit and so the
  • 00:08:43 input that caused our error is on the
  • 00:08:47 left side here it's in this JSON object
  • 00:08:49 so what I'm gonna do is I'm gonna go
  • 00:08:50 ahead and copy all of this JSON copy it
  • 00:08:55 and I want to go to my lambda console
  • 00:08:58 and I'm gonna do tests and I'm gonna
  • 00:09:02 create a new test so what we do tests in
  • 00:09:05 the lambda console we can create the
  • 00:09:07 inputs that it's seeing so if I create a
  • 00:09:12 say insult request if I create a test
  • 00:09:17 event that mirrors is the exact same as
  • 00:09:20 the one that the actual the physical
  • 00:09:23 input that caused us an error we can
  • 00:09:25 actually do a little bit of debugging
  • 00:09:26 easier so now if I do tests on insult
  • 00:09:31 request go down here we can actually see
  • 00:09:35 an error so
  • 00:09:38 invalid intent raised value invalid
  • 00:09:42 intent so yeah it's not liking the
  • 00:09:50 intent and the reason for that is if we
  • 00:09:53 go to our intent we didn't actually in
  • 00:09:55 the definition of our intent so right
  • 00:10:00 here get in solder responsive we didn't
  • 00:10:02 actually pass in a parameter of intent
  • 00:10:05 so if we do that and save and then run
  • 00:10:12 this test again hopefully it will work
  • 00:10:15 let's see test
  • 00:10:20 function logs invalid intent still oh it
  • 00:10:24 might have just like completely bugged
  • 00:10:26 out fall back in 10 yeah I completely
  • 00:10:30 bugged out because it didn't even know
  • 00:10:32 what to do with it because it wasn't
  • 00:10:33 defined so let me run this again Alexa
  • 00:10:40 give John an insult hmm I'm not sure let
  • 00:10:47 me restart Alexa yeah it actually ends
  • 00:10:52 my program when I have an error so oops
  • 00:10:58 sorry I'm not sure Alexa run
  • 00:11:02 conversation application what up what up
  • 00:11:06 what up your application has started
  • 00:11:09 tell John an insult
  • 00:11:13 there was a problem with the requested
  • 00:11:15 skills response so there's still an
  • 00:11:17 error but hopefully it's it's getting
  • 00:11:21 the actual right intent now let's say no
  • 00:11:23 it did not
  • 00:11:24 what is happening Alexa run conversation
  • 00:11:27 application what up what up what up your
  • 00:11:30 application has started please insult
  • 00:11:34 John he is a dweeb ok it worked now cool
  • 00:11:40 I I think it was having problems
  • 00:11:42 understanding like John give him an
  • 00:11:46 insult there was a problem with the
  • 00:11:50 requested skills response so when you're
  • 00:11:53 throwing in these intent slots it gets a
  • 00:11:55 little bit trickier Amazon's not the you
  • 00:11:58 know what they provide isn't perfect so
  • 00:12:03 you know just keep this in mind please
  • 00:12:09 trash oh a run and conversation
  • 00:12:13 application what up what up what up your
  • 00:12:17 application has started please trash
  • 00:12:22 talk John he is it Wiebe
  • 00:12:26 I'm keeping the name John just because I
  • 00:12:28 don't wanna hurt too many people's
  • 00:12:29 feelings here
  • 00:12:31 so so I apologize to John but yeah so
  • 00:12:35 it's working now just with when you're
  • 00:12:37 starting to use this in 10th slot it
  • 00:12:40 gets a little bit tricky to actually get
  • 00:12:42 it working correctly
  • 00:12:43 but so now if I do with this input
  • 00:12:51 response you see that it has slots name
  • 00:12:54 name so the intent is insult and it
  • 00:12:58 saves the value John that's pretty cool
  • 00:13:00 so we can copy this and this is actually
  • 00:13:04 going to be our inner lamda management
  • 00:13:07 console this is going to be our event
  • 00:13:10 that we're gonna use to test and see
  • 00:13:13 what we can kind of do so to figure test
  • 00:13:21 event it I want to just edit that this
  • 00:13:27 one wasn't correct because this was a
  • 00:13:28 fallback intent so I'm going to edit
  • 00:13:29 this one save so now if I run this like
  • 00:13:38 it gives me a response that is gonna say
  • 00:13:40 back but I also could do something like
  • 00:13:41 I could actually print some stuff out so
  • 00:13:43 if I wanted to print out the intent I go
  • 00:13:49 to print intent just to see the actual
  • 00:13:53 object and I could also just print
  • 00:13:57 inside the function this is just to help
  • 00:14:01 you debug so to debug to say again
  • 00:14:06 whatever input you get as long as it's
  • 00:14:08 like the correct input copy that go to
  • 00:14:10 your laminate management console and
  • 00:14:12 create a test event that uses that exact
  • 00:14:14 same input and then you can click the
  • 00:14:17 test button and if you go up all right
  • 00:14:19 did I save it oh okay function logs oh
  • 00:14:26 my gosh it's really weird to navigate
  • 00:14:29 this for some reason get intent response
  • 00:14:35 yeah so function logs incoming requests
  • 00:14:37 inside the function and now we actually
  • 00:14:40 have the intent object here so if I
  • 00:14:44 wanted to just get the value of John I
  • 00:14:46 could go intent and then I could go into
  • 00:14:50 slots and then I could go into let's see
  • 00:14:55 I think it's named because that's the
  • 00:14:57 slot we called it and I could get the
  • 00:15:00 value of John so that was a little bit
  • 00:15:03 complicated but you'll see how it works
  • 00:15:06 now so instead of he is a do we if I can
  • 00:15:11 do intent slots name or yeah the slot
  • 00:15:23 was the name slot and then finally the
  • 00:15:27 value and we'll have to do that plus is
  • 00:15:35 add we'd go back and we'll test this now
  • 00:15:41 Alexa run conversation application there
  • 00:15:48 was a problem with the requested skills
  • 00:15:50 response so now I could go again if I
  • 00:15:54 wanted to and test it in here and see
  • 00:15:56 what exactly happened probably give me
  • 00:15:59 an error message
  • 00:16:08 what up what up what up your application
  • 00:16:10 has started I don't know why I gave me
  • 00:16:12 the error the first time it might have
  • 00:16:13 been still in the application I think
  • 00:16:15 that's what happened
  • 00:16:16 trash talk John John is it weed so now
  • 00:16:21 it says John is it do we have cool we
  • 00:16:23 saved that intense lot and we've used it
  • 00:16:27 properly so the next thing we're gonna
  • 00:16:29 go through is how to store like session
  • 00:16:32 attributes that's what's called in Alexa
  • 00:16:34 and the reason we want to do this is if
  • 00:16:36 you want to like store some sort of
  • 00:16:38 state throughout the duration of your
  • 00:16:40 application so like for example when I
  • 00:16:44 opened with this video I had that little
  • 00:16:47 kind of interaction with Alexa and one
  • 00:16:49 of the things I did was like I was
  • 00:16:51 asking Alexa to tell tell my the viewer
  • 00:16:54 is to like like and subscribe and she
  • 00:16:57 kind of fought back at me she she didn't
  • 00:16:59 say it until the third time and that's
  • 00:17:01 because I programmed her to not say the
  • 00:17:06 actual speech output until I said please
  • 00:17:10 tell you what like please tell my
  • 00:17:12 viewers what to do three times so we can
  • 00:17:15 do something similar with this insult so
  • 00:17:16 you know it's not very nice to insult
  • 00:17:18 people let's make sure they really want
  • 00:17:20 to insult someone before they go ahead
  • 00:17:22 and do it so how we can do this is yeah
  • 00:17:26 using session attributes so as you can
  • 00:17:29 see all of these functions have session
  • 00:17:31 attributes but nothing is actually
  • 00:17:32 filled in with them so in addition to
  • 00:17:37 intent with the insult response will
  • 00:17:40 actually it will also passion pass in
  • 00:17:42 the session and inside the session we
  • 00:17:49 can get the attributes so let's say okay
  • 00:17:55 follow me so I'm going to delete these
  • 00:17:58 print statements real quick we don't
  • 00:17:59 need them
  • 00:18:03 so intense session and what we're gonna
  • 00:18:07 do is basically the first time it runs
  • 00:18:11 well we'll change this to like we'll
  • 00:18:16 just call something called insult state
  • 00:18:20 and after it's run one time we'll set
  • 00:18:23 that to one let's say and as you can see
  • 00:18:30 in the build response return statement
  • 00:18:34 one of the things we pass is the session
  • 00:18:36 attribute so that's how it kind of
  • 00:18:37 stores this so insult state set to one
  • 00:18:43 after we run it the first time and we'll
  • 00:18:46 also have to change up how it's called
  • 00:18:48 down here so as you can see on intent
  • 00:18:51 one of the parameters of that is the
  • 00:18:53 session so we can go ahead and just type
  • 00:18:55 in session here and let's see okay now
  • 00:19:07 let's go ahead and see what happens so
  • 00:19:12 basically what I want to do is say so I
  • 00:19:17 want to print out the session basically
  • 00:19:19 what I'm going to want to do is if the
  • 00:19:21 insult state is one then maybe we do
  • 00:19:25 something to like so maybe we don't say
  • 00:19:27 jhanas Dewey the first time we say it
  • 00:19:30 after the second time so maybe we do
  • 00:19:33 something like kind of we'll comet this
  • 00:19:39 code out real quick
  • 00:19:44 and we'll just two actually should end
  • 00:19:46 sessions find being full still I'm gonna
  • 00:19:50 copy this and paste it again
  • 00:19:52 and just say something like first time
  • 00:19:59 around we'll just say I don't want to
  • 00:20:01 or maybe something like that's not very
  • 00:20:07 nice comma I don't want to
  • 00:20:16 and the reap romp text there would be I
  • 00:20:18 would rather not do that let's say okay
  • 00:20:23 save that and now if we go to lecture
  • 00:20:27 skills kit I'm just gonna quit and do
  • 00:20:31 run conversation application I wish I
  • 00:20:36 made this a little bit shorter of a text
  • 00:20:37 what up what up what up your application
  • 00:20:40 has started and I could say trash talk
  • 00:20:43 John that's not very nice
  • 00:20:46 I don't want to so I'm going to take
  • 00:20:50 this response now and this is gonna be
  • 00:20:51 our new test response just so we can see
  • 00:20:53 what exactly we can play with within
  • 00:20:55 inside the session so intent insult
  • 00:21:02 requests will do you figure test events
  • 00:21:06 and I'm gonna create a new one I'm just
  • 00:21:08 gonna just say in insole request and I'm
  • 00:21:15 just gonna call it new no we'll just
  • 00:21:19 call it insult now and I'm gonna paste
  • 00:21:22 in what just was sent create and test so
  • 00:21:33 what I'm going to do is I'm going to
  • 00:21:34 print out the session so I want to know
  • 00:21:35 what's stored in the session
  • 00:21:42 and I'll just make it easy for me to
  • 00:21:45 find that I'll do print session below
  • 00:21:59 now I test it go down below see what it
  • 00:22:03 says here
  • 00:22:06 alright session below so there's a new
  • 00:22:09 property
  • 00:22:10 there's the session ID property there's
  • 00:22:12 the application user where are the
  • 00:22:17 attributes so there's no attributes
  • 00:22:20 right now so that's we're gonna need to
  • 00:22:21 fix that so the reason there's no
  • 00:22:26 attributes is because we haven't
  • 00:22:27 actually every time we've set this it's
  • 00:22:29 been blank so basically after this first
  • 00:22:33 time we set this the second time around
  • 00:22:35 there will be an additional parameter so
  • 00:22:38 we'll have to do okay
  • 00:22:40 trash talk John again that's not very
  • 00:22:45 nice I don't want to so now if you look
  • 00:22:49 inside of this JSON input response
  • 00:22:51 there's an attributes category and I can
  • 00:22:55 do copy this I don't even actually have
  • 00:22:59 to copy this but I can know that the
  • 00:23:04 reason I'm showing you like the testing
  • 00:23:05 is because when you are kind of
  • 00:23:07 developing something new it you will
  • 00:23:09 probably have to test it a lot but I can
  • 00:23:11 go ahead and take the attributes
  • 00:23:13 parameter out of the session so I can do
  • 00:23:17 something like if session and then
  • 00:23:25 inside a session I want to get the
  • 00:23:29 attributes attributes
  • 00:23:34 and then I want to get the within that
  • 00:23:38 dictionary I want to get the insult
  • 00:23:40 state equals equals one then let's
  • 00:23:48 change our speed of speech output that's
  • 00:23:50 actually do the John is dweeb
  • 00:24:06 so let's see what happens now when we
  • 00:24:08 test it out I'm gonna quit and start it
  • 00:24:13 again
  • 00:24:18 what up what up what up your application
  • 00:24:21 has started I'm sorry that's getting
  • 00:24:23 really annoying I should change that
  • 00:24:24 message trash talk John there was a
  • 00:24:30 problem with the requested skills
  • 00:24:32 response okay so now I can figure out
  • 00:24:34 why did we get a problem so that's why
  • 00:24:37 I'm gonna do the testing here and as
  • 00:24:40 before you know with our testing just
  • 00:24:47 paste in the in the input that caused an
  • 00:24:50 error and then you can kind of debug it
  • 00:24:52 inside of lambda using that insult yeah
  • 00:24:57 I'm just gonna save it as until new so
  • 00:25:02 if I run that
  • 00:25:06 let's see the air attributes session has
  • 00:25:09 no thing attributes and so the reason
  • 00:25:12 we're getting this error is because
  • 00:25:15 initially you saw that there was no
  • 00:25:17 attributes parameter of the session so
  • 00:25:22 this session had no attributes parameter
  • 00:25:24 until we actually set the insult state
  • 00:25:26 to 1 then it magically popped up so what
  • 00:25:29 we'll have to do is we have to actually
  • 00:25:31 add another line that just says if
  • 00:25:33 session dot get attributes so this is
  • 00:25:39 basically saying if there is a
  • 00:25:40 attributes parameter within the side
  • 00:25:42 that within the session and just gonna
  • 00:25:46 copy the way I'm doing this I don't know
  • 00:25:48 this is the way I found it online so I'm
  • 00:25:51 just copying that so if session got get
  • 00:25:54 attributes and session attributes insult
  • 00:25:57 state equals equals 1 let's see what
  • 00:26:00 happens now so now it's so basically
  • 00:26:02 this is saying if the attributes
  • 00:26:05 parameter exists and the apps' the
  • 00:26:08 insult state within the attributes
  • 00:26:10 parameter equals equals 1 then actually
  • 00:26:13 say this if this doesn't exist it will
  • 00:26:16 fail and exit out of this if statement
  • 00:26:18 before it ever runs this so this won't
  • 00:26:20 cause an error anymore so Alexa run
  • 00:26:25 conversation application what I put up
  • 00:26:31 what up
  • 00:26:31 your application has started ok and now
  • 00:26:34 what I do is I want to trash talk John
  • 00:26:41 that's not very nice
  • 00:26:43 I don't want to but if we say that same
  • 00:26:45 exact intent again John is a dweeb and
  • 00:26:49 if I think I keep saying in that Shawn
  • 00:26:54 is a dweeb
  • 00:26:55 cool and you can add additional you
  • 00:26:59 could add additional like layers to this
  • 00:27:02 you could do a like a 1 to 3 again in
  • 00:27:05 the sake of time I'm just gonna do that
  • 00:27:07 one example you know it requires you to
  • 00:27:11 say it two times before it actually
  • 00:27:13 works and something fun I'd added just
  • 00:27:17 to kind of further these insults is if
  • 00:27:19 you go to my get
  • 00:27:19 Paige and go to in the Alexa Python repo
  • 00:27:25 that's linked to in the description and
  • 00:27:27 see this insult py file well this is
  • 00:27:30 like it generates a this.get insult
  • 00:27:33 function generates a random insult from
  • 00:27:35 from these like Shakespearean type words
  • 00:27:38 I found this from something like MIT
  • 00:27:41 article two I thought it was kind of
  • 00:27:42 funny so if you take that code copy it
  • 00:27:45 and then go to your Lam console you can
  • 00:27:47 add files to that by going to file new
  • 00:27:50 file and you can just call this
  • 00:27:53 something like insult py paste in that
  • 00:27:59 code and save it and also you don't need
  • 00:28:03 that print state print line I think that
  • 00:28:05 was at the end of yeah don't don't copy
  • 00:28:08 that print line but you have this now
  • 00:28:10 and in your lambda function you can now
  • 00:28:13 like generate one of these random
  • 00:28:16 insults by going to your lambda console
  • 00:28:18 your learn to function and doing from
  • 00:28:21 insults import get insult so that was
  • 00:28:25 the name of the function that I defined
  • 00:28:26 in there and now so in our thing instead
  • 00:28:30 of just saying do we give all the time
  • 00:28:32 we can do insult equals get insult and
  • 00:28:37 then instead of doing do we just do is a
  • 00:28:41 plus insult and then we use the same
  • 00:28:46 thing in the reap romp text said he is a
  • 00:28:49 plus insult save that and now when we
  • 00:28:56 run it we'll have a little bit of fun
  • 00:28:59 I think I might have to quit first-run
  • 00:29:04 conversation application what up what up
  • 00:29:09 what up
  • 00:29:09 your application has started trash talk
  • 00:29:12 John that's not very nice I don't want
  • 00:29:17 to trash talk John please
  • 00:29:20 John has a villainous shard born vassal
  • 00:29:23 yeah so now you have some fun insults
  • 00:29:26 that are a little bit more unique and
  • 00:29:27 diverse I just said a word that means
  • 00:29:30 the same thing alright we're gonna end
  • 00:29:32 this for you here thank you guys for
  • 00:29:34 watching if you liked this video make
  • 00:29:35 sure to throw it a big thumbs up and
  • 00:29:37 also subscribe so you don't miss videos
  • 00:29:38 like this in the future I guess a quick
  • 00:29:41 note before we completely finish is if
  • 00:29:44 you're trying to put this on your echo
  • 00:29:46 dot or you know whatever election device
  • 00:29:48 you have all you have to do is download
  • 00:29:50 the alexa app on your iphone or android
  • 00:29:51 and connect to your your physical device
  • 00:29:55 with the same email you use to program
  • 00:29:57 this skill and then it automatically
  • 00:30:00 will be connected to your skill so you
  • 00:30:02 can just literally say like run
  • 00:30:04 conversation application to your echo
  • 00:30:06 dot and it will know once you've
  • 00:30:08 connected it to the same email also if
  • 00:30:10 you needed to install an external
  • 00:30:13 library like let's say you were trying
  • 00:30:14 to make an api request using the
  • 00:30:16 requests library within Python something
  • 00:30:18 as easy to just you can't just do like a
  • 00:30:20 pip install with AWS lamda so I'll put a
  • 00:30:22 couple links on how to install a
  • 00:30:25 external library with AWS lamda in the
  • 00:30:28 description so check that out if you are
  • 00:30:30 looking for that alright that's all I
  • 00:30:33 have peace out guys see in the next
  • 00:30:35 video
  • 00:30:39 [Music]