Azure Bot Framework Composer: Unsung Heroes of the Cloud ep 10

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Music] um [Music] okay welcome to episode 10 of unsung heroes of the cloud today we've got kendall rhoden talking about the bot framework composer and i'll get out of your way and turn it over to you all to talk about tech cool introduction matt how are you doing uh mike how are you kendall happy to be back i mean it's like what too long for a holiday nils i mean you did well during the other two sessions but uh it's i'm very happy to be back here i'm glad to have you back as well mike it's not the same without you yes yeah but um we've got a special guest here today we've got kendall rhoden from the azure podcast hey hey what's up yeah how's everybody doing how's everyone doing i will say like funny story i've never had this happen i've had it happen a couple times on internal calls but i did join a customer call a few maybe last week and they didn't even do introduction so the call just got kicked off and then eventually maybe five minutes and i was gonna go to introduce myself and the customer said oh i've watched your youtube channel i've seen some of your videos i watched your aks you know i think we did an aks series with with matt and so it was really funny i've never actually gotten that before i've gotten it from the azure podcast but it is it is good to know that people are watching my content i'm sure you'll feel the same when someone's like hey we came across this video it was helpful it's always good yes i feel exactly the same way but i did honestly do you do you remember kendall the three of us were once in the same room i think multiple times we have been probably yeah even if increment you even have incriminating photos of me yeah me and 1d and i wasn't even proposing to somebody was just helping somebody yeah you even tweeted about that yep good times i miss the days of being in person it really has been like i think the past month or so i think i've realized how disconnected i was feeling i don't even think i recognized it until i've things are getting busy with the new fiscal year at microsoft and i've just realized oh man i haven't connected with as many people this year i haven't been as intentional so i'm setting up a lot of syncs my calendar is really busy just trying to catch up and and network a little bit more it's been different in the remote environment for sure yeah it definitely has been but kendall what do you like to do for fun before we jump into tech yeah yeah that's a good question so i actually discovered cycling uh like indoor spin classes during the pandemic so i've always enjoyed exercise but right before things um well i guess right after things reopened in texas i started going to a cycle studio and then in january one of the i guess the leader of the studio reached out and asked if i'd be interested in trying out to teach so that's been a totally new experience i've been teaching since around february i took like three to four classes a week so in between uh yeah that and work and just other hobbies spending time with my family and friends it's definitely been busy but i love it it's so fun to be able to get off the computer at the end of the day and go motivate people to get to get active and it's very competitive and we have all the telemetry coming off the bikes which gets me really excited so that's been that's been fun and i'm certainly looking forward to to some college football here soon so making a making plans to go to a couple games if all stays open and and uh continues to happen so cool not playing yourself just joining in on the game not killing yourself yeah they don't want me down there you know the defense i'm scary yeah [Laughter] gonna match up i have one question for you as a spinning instructor um do you go as all out as the people in the class are you as tired at the end of the class oh yeah i think anybody that takes my cycle class can attest that's one of the things that i struggle with the most is you're balancing i'm doing all the lights so i'm operating lights behind my back that are not labeled or anything so i'm doing all the lights i'm doing all the music the programming i'm basically dictating everything to the class and then i'm also writing and i always go too hard so sometimes i have to take a breath myself i realize i haven't had any water i have to stop and look so yeah i think it's uh it's always hard going from being a writer and then actually teaching and realizing hey it's not just about me getting in my best workout but i think i typically motivate people when i get up there and i'm really energized so at least i hope they keep coming back at least for now sounds sounds very much like fun uh i'm a runner myself but i could imagine a cycling class styled by you must be tons of fun i like to think it is okay so um but back to tech uh what have you got for us today as your unsung hero of the cloud yeah yeah uh thanks again both of you for for reaching out and giving me the opportunity i always love doing things like this and when you first asked niels what i wanted to cover my mind went to things that i do more in my day-to-day you know job right so i cover a lot around kubernetes we have a lot of conversations around the new open source project dapper which you can learn more about at dapper.io so i thought maybe those would be fun but then i also thought hey maybe this is an opportunity to re-engage with some of the technologies that i always loved but felt like they had a lot of growing to do and at the pace that azure is growing a lot of these services that i worked with you know back in my consulting days have now progressed exponentially since then and so one of those offerings is bot framework just in general the entire ecosystem around building bots on azure so i will say it's a bit convoluted like maybe bot frameworks overloaded because there are a lot of different components right there's the sdk there's bought channels you can integrate with to actually interact with the bot um and so i don't want to you know simplify bot framework too much but there's a new tool that was created and i want to say new but it's not that new i think it's been out for probably around two years i don't don't quote me on that but it's been around for a little bit but they just came out with the new version at build i believe and it's essentially a user interface that developers can use to build bots instead of just going sdk first and so i remember i did it bought poc as one of my first forays into customer work at microsoft this like five years ago and i had no idea what i was doing which is usually where i start things i think i like to think i can learn quick but it was just not intuitive for me personally to build conversational ui by using traditional c sharp classes in in the sdk not to say it wasn't a great technology or powerful but to build the dialogue to build the user interaction flows it just wasn't as intuitive without having a way to visualize that and so i think that this is a huge success just in terms of what it provides and all of the azure integrations that it services up and so that's what i'm going to be talking about today is the the bot framework composer and and more specifically i believe it's version two is is the new version or what they're calling the new version that was released yeah i'll i'll echo some of your feedback about building bots in c sharp um i remember i forayed into this about i think it has been four years ago with a customer and there are some free online platforms that already had a composer and we had just the c sharp and i think it it it is easy to build a a hello bot in c sharp but once you need to build like a complicated um structure around what the bot has to say when and how the interactions should go it's way easier doing that using a visual composer so i'm very excited to see what you've got for us yeah i couldn't agree more i i just want to echo and emphasize that and i will say just for any of you who are unfamiliar it does generally generate like a c-sharp solution on the back end um or i believe node.js is the other language they're available in but um yeah so you can still extend the bot you can still bring it into visual studio but your primary uh i guess dialogue composer or where you're actually going to be authoring the bot can happen in uh in the composer tool which i think is is neat okay take it away i would say yes yeah just jump right in okay awesome so that's what i'm going to do i'm going to go ahead and share my screen and for the sake of today's demo i just want to go ahead and caveat a couple of things which i think are important and just want to level set so i'm not an expert in this and i like to say that just because there's always stuff that you can learn and frankly this isn't something i do all the time so i'm pretty familiar with everything i'm going to cover today but there may be some realms or questions that i'm not able to answer as deeply as i would like so i just want to caveat that um but i feel pretty confident i think that i might be underselling myself just a little bit and then the second thing is i've built a bot that is not enterprise ready right there are some considerations best practices i haven't implemented for the sake of the demo just because it is a demo uh so i just want to to make sure that everybody has that framework in mind so that as you're using this potentially as a as a kickstarter uh for your experience that you can uh you can add in some audience that i that i don't have and i'll call out some of those as well and and hopefully today i can also cover a little bit around some of the gotchas that i experienced when working with the bot composer so in my in my demo quest to build this out there were some things that i realized either aren't there or maybe some mismatches in the documentation or just little things that you might say hey why does this work this way or how could we do a work around here so hopefully i'll be able to call those out and you know feel free to ask as we go through so first first and foremost let's just take a look at the actual user interface so i can download the bot framework composer via um you know like basically as a desktop application for mac and windows and then also what's really cool is if for whatever reason you don't want to use the desktop application which really is the preferred approach you can actually self-host the binaries and compile them and use like an azure vm and essentially connect to them remotely so it is neat to be able to host the development environment external from the developer workstation but i would say i think from a from a best practices perspective it definitely makes sense to host it on the local machine so this is basically what you'll see whenever you download the desktop application and get it running and what's really cool here is when you're thinking about bot framework in general um traditionally you would have to uh you know obviously set up your visual studio environment with the bot framework sdk but also you'd have to download the bot emulator and what's neat about the uh new release of the bot framework composer is that it actually integrates web chat directly so you don't have to go into the the emulator in order to actually see logs and play around with the bot so i think that's really great because it yeah it consolidates the development experience so so that's something to keep in mind so i have several bot projects here and i will say there's a great samples repo that's been created specifically for getting started with bot framework composer and and you can also do migration of sdk first bots into bot framework composer there's documentation on that as well i will say one thing that's a caveat as well that i've seen recently is that obviously bought framework v3 to v4 sdk this happened a while ago where we started supporting v4 and we made that move it's been a while now but the migration process i think has some caveats so there's also documentation if you're working with a bot v3 sdk but i'll also show you another way that you can make use of v3 uh bots and integrate them into v4 sdk or bot framework composer centric bots so you said you can do code first management of bots here too you mentioned earlier that you can export them as c-sharp maybe i'm running a header yes only on your demo but if you change anything in the code does it reflect back into the composer too it should uh any like extensions that you do in visual studio and that's the same goes with like basically behind the scenes this is generating all of your like language understanding language generation modules like all these things are getting um created on the back end in your file system in order for you to basically be able to export these so like that's another great thing you can actually export all of the templates that you're creating via bot composer and share them with your people on your team to reuse them um so lots of reusable assets getting created so i can actually show you here let's take a look at this um just give me one second and i am getting my id anyways i'm not sure if that's coming from you mike or from you niels but i just wanted to let you know okay cool so so let's take a look here so i have a let me click in here work perfect so if you're looking at my uh file system the back end of this bot framework or excuse me this bot composer project you can see here it's actually creating like a cs proj in c sharp so i can actually tell it which language i want it to generate and then you can see here i have things like dialogues and each of my dialogues here has associated um generated files for either the knowledge base using q a maker or the language generation or language recognition so all this is getting creative for you it has a startup.cs a www root so all the things you would expect in a normal c-sharp project so um that's what's getting creative for you on the backend so this is a project we're gonna demo but i just wanted to show you we actually have hooked up templates so that you can start from a template here right you don't have to start from scratch so if you're new to bot framework composer you get these these templates you can start with there we've got the node ones a little bit less options there but i basically started with a sample that's out on github so i didn't start from one of these but these are really great just to play around and it'll actually tell you which resources you need to provision in order to actually go and deploy this and make it make it work with the bot service itself running in azure so that and it's really crazy because a lot of these updates are actually recent so even though i haven't played around with it in you know several several years to be honest until maybe the past two or three weeks when i got asked to highlight this or highlight an unsung hero um i will say a lot of these have come out even since like february march templates weren't really around for like even beyond the past five or six months so just keep that in mind there's a great document that kind of goes through all the different updates so i'll stop talking i'm being very verbose but hopefully it's helpful and now we're actually what you're here for okay perfect okay good um i've never had a problem with not being able to talk enough so so blessing and occurs so i want to kind of go over the the ui and what you're actually visualizing here so this is our authoring canvas so this is essentially where we're going to build out our workflows if you're familiar with logic apps which i'll actually show you an integration with logic apps via an http request that we'll send from our bot it's similar to that right it kind of gives off that vibe a little bit with creating a workflow but in this case our workflow is really based on conversational dialogues so underneath or within our authoring campus this is where we can add actions so each one of these will be considered an action in the authoring plane i have dialogues here so i have a root dialog which is basically the dialogue where i'm going to kick off all of the user interaction and then i have child dialogues that i can essentially call out to from the parent dialogue so each one of these represents a dialogue i can add dialogues here so i can add a dialogue and you'll also see things like i can you know start the bot from here or i can even add a bot so i can add a second bot um if i wanted to create a bot with you know different functionality and then we'll see connect to a skill so what does that actually mean well this is where the v3 framework bit comes into a little bit right the bot framework sdk v3 if you have an old bot and you don't really want to modify it or migrate it what you could do is actually add it as a skill to a v4 bot was there a question there niels okay i want to make sure i'm breathing so if y'all have any questions i'm y'all are on this side of my screen i was just thinking that is very neat that you don't have to migrate your bots so you can just integrate them so that's cool yeah yeah and i will say like if it's a core line of business bot that you're constantly iterating on and you really need to be able to change the functionality then yeah maybe migrating makes sense um but if not you could potentially use it as as a skill and so what skills are is essentially bots that you create and then you call out too so it would almost be like creating an azure function that you can then call out to to execute a certain functionality and then send it back to the parent and that's essentially what's happening here so in this case the skill could actually be deployed and azure to another web app or to an azure function where it's being hosted and then i can essentially just call out to that skill that skill can handle the user intent um and then it can essentially send back control to the root bot so that's what skills allow you to do um and then within each dialog we have a series of triggers so the trigger is essentially going to be the first thing that kicks off a specific dialogue or something that actually triggers that dialogue uh to take place so there's several different types of triggers that we can add in a bot so i'll just go ahead and show you those so within a dialog there's several different different triggers so one of them is intent recognized so this is basically using luis which is that language understanding service that we have to say hey based on the user input that i'm getting and the language understanding modules that i've created what do i think the user is trying to accomplish what dialogue do i think is best fit to handle this particular user intent then i also have a q a intent recognized so if you're unfamiliar there's something called the q a maker service and what that can essentially do is you can create a question and answer or like faq style um i guess it would be against that video office it is considered a cognitive service um but like let's say you have some faq documentation or you have structured which i'll explain here in a second the caveats there i can create a knowledge base and then based on the user intent i can say hey let's send this question or this intent over to the knowledge base see if there's any related insights that we can send back to the user so that would be a q a intent and then there's several others right one is unknown so like hey i don't even know what this user is trying to do how should i handle this and then a few others right like activities uh so for example an activity can be something like hey um a conversation update right a new user joins the chat or someone i've never interacted with is now working with the bot i could even say hey i want to hand this off right user is pissed sorry that might be like pissed mad whatever is acceptable to say but user's upset here so because of that we're actually going to escalate and hand off to to a person who can then handle that um and so there's a lot of different activities we can handle and then we also have custom events or maybe we actually had a duplicated intent so we saw hey it might be a good fit for this might be a good fit for that so i'm going to focus more on what we've already created but that at least now gives you a good flavor of what some of these intents are so here i've said it i've set up a greeting intent i've set up a q a intent i've set up an unknown one to handle if i don't know what the user is asking and then i have a few things here that are going to actually kick off different dialogues based on the initial intent that i got so i'm going to kick i'm going to show you a couple more things and then we'll kick off the bot and actually see it in action so what else do we have here in kind of the menus pane or the navigation pane so one is configuration settings so this is where we can actually add uh things like our our luis model so if we actually went out and created a luis resource this is where we can get an authoring key so we can actually author our lewis models directly in composer so traditionally we would go out to like luis.ai and we'd actually add all of our intents and utterances and entities there or we would use it programmatically via the api but we can do that and author it within this portal so we don't have to switch back and forth between lewis dot ai composer instead i can just add to my luis ai uh model and that will be synced up to the lewis ai ai in the portal and then i'm in connecting a q a maker instance and then i also have my app id so this is going to be related to the bot service itself that i've created so then we have user input so this is really all related to that luis model so this is how we're actually going to take in loser loser this is how we're going to take in user input and then basically have some sample utterances so how do we actually qualify if this is the intent that we think the user is is sending in so for example in order to kick off the aks best practices dialogue i'm going to have that checked out by an intent called aks best practices so i'm going to give a couple of example phrases that the user might send me that would actually kick off that intent so one would be i have questions around aks best practices maybe that shouldn't be a question mark because that's not a question uh what are good uh practices for aks what are ways i can secure it so on and so forth and then i have some others here right i want to suggest a topic for the aks office hours and i'll get into the domain of what my bot is doing in just a second but you can see here i'm just sending in some example utterances that will kick off or kind of be examples of what that intent might look like and then within each of these dialogues i'm really not getting any user input which is why i don't have any intents right so the user isn't interacting with these dialogues therefore it wouldn't make sense necessarily to accept any intent from the user uh last year through before we do that one is going to be bot responses so using something called language generation templates um i can actually create a very consistent way and a templatized way of actually responding based on the user intent that i get right so if the user says hey i want best practices around aks i then need to be able to respond in some way right from the bot and so this is where i can actually send in some language responses based on these language generation templates and i'll actually show you where i'm creating these and once again this is propagating um into those language generation templates that are on the back end of composer in my file system so if i wanted to then take this lg template and share it across the team i could do that and kendall these language generation templates those are just um snippets of c sharp code that get that are a part of the bot to those are not the cognitive services on itself right the language generation templates are not part of the are not part of any api or cognitive service so they're built into the bot framework um so this is yeah that's exactly that's a great question and then and i'll show you how how they're actually you know being being made use of and then knowledge base is is the last thing i wanted to cover here which is basically how do we then create a q a maker service with a knowledge base that has a set of question and answer pairs that i can use whenever i get uh you know a q a recognized intent so in this case i have a knowledge base called aks office hours that's providing some sample questions and i can actually put multiple phrasings of those questions and then i can have an answer to that particular question and this is also going to be making use of of like learning and an ai in the back end so i don't necessarily have to put in the exact utterance right it's going to it's going to learn and then from there i'm going to be able to uh to direct them to the knowledge or the question that makes the most sense right it doesn't have to be verb verbatim question asking so i have one here that i've hooked up now there is a caveat here that i think is worth calling out so q a maker recently as a serve so there's a q a maker standalone service that's ga recently what they did is they basically created q a maker managed and then they integrated that in with the text analytics api so what that means is if i want to create the most up-to-date version of q a maker service what i could do is go to create a text analytics cognitive service and then enable a feature that's basically allowing me to do question and answer so you can actually enable that on the text analytics api composer from what i've learned is totally unaware of this change now to be fair it's in preview but all of the integration is based on a q a maker service that you're provisioning via the q a maker resource so it's not really aware of this preview change that was made so i'll show you an example of how i use this but i had to integrate it via the http endpoint so i basically am just making a call to an existing text analytics api with the with that new preview feature enabled but i can't actually integrate it and like update it and iterate on it the way that i could if i used a traditional q a maker service and i assume that will change over time but that's just something you know to keep in mind and then um and then one thing that's just important to call out you can actually provision all of the resources that are needed directly from the portal so i can create a publishing profile so i can either bring in all of my settings from like the q a maker service my bot service like my channel registration or i can basically have it go out and provision all those resources on my behalf hook them up to my bot that's running locally so in the azure portal it went ahead and provisioned all these for me and now if i want to do a publish i can use the published profile that already exists and essentially publish it here and so if i wanted to add a new publishing profile i can give it a name tell it i want to publish it to azure and then essentially say if i want to use existing resources or if i want to um to provision new ones that's doing it straight from the pc right it's not like you you can integrate immediately with github actions or azure devops for that it's not creating any pipelines yeah exactly i think there's a there is a ci cd github action for this in preview like i think that that's something that they have is basically taking the stuff and being able to use a github action but there's i don't know how this is happening on the back end like i assume that they're doing it through like i see like a pipeline or series of scripts but i'm not actually sure how they're going about that um it's abstracted away at this point um okay okay awesome and i there's so much i want to cover so i want to make sure that you're aware of what the ui can do but i can actually add um uh like new packages to my bot composer bot so like i could compile some like helper libraries or whatever that i want to use across my organization compile them into a new get package at that nuget package so i think that's really cool so we get in some we get like some built-in adapters um that we can make use of like you can even see here an adaptive dialogue for greeting new users so i could add that and then make use of that in the welcome dialogue so i've added a couple here one of them is luis we've got q a maker um so it's basically importing those similar to how you would import the libraries and the packages in c-sharp so who wants to actually it also supports other languages uh because you mentioned earlier note yeah i think node i think i'm reckoning that you can add other packages and do because i see a drop down with nougat so it's not limited to nougat yeah let's see nougat and npm i know as i as i figured okay awesome do you want to see the bottom actually a little bit okay cool cool cool okay this is so we're going to see it in action i'm going to go ahead and kick off the debugger and we're just once again this isn't going to be like a perfect conversation flow one of the things i really skimped on was um creating really unhappy path on some of these things so just keep that in mind you know if i went in and did like interruptions or if i was like really non-compliant and i asked for someone's name and they typed in like r2d2 3c9 it would probably work right now so we're going to go down the happy path for the sake of just like playing around with the bot composer itself while this is loading up to let me show you like an example of what we can like some of the things we'll see within a dialogue so if i want to add a new a new action to a dialogue here's some of the things i can do right i can send a response to the user i can ask them a question that question can look different it can be a multi-choice question it can be like i'm asking for a number response i'm asking for a text response i can create a condition so i can create if else statements based on user input or if i want to take a specific action i can do loops and i can do dialog management which is really great right i can kick off a new dialog based on user input or intent i can cancel dialogs i can even do things like setting properties so similar to how you would do my logic apps or even just creating a new variable in your bot i can set properties within the bot to to maintain and store state i can access external resources so this is really interesting right i can connect to a skill which we talked about earlier kind of another bot that we've created and deployed um somewhere else i can send an http request i can um do an oauth login and this is what i i was even trying to connect to a knowledge base this way essentially what this is is like hey you can connect your knowledge base via an action but you still can't do like the iterative learning and the authoring within the portal but even that action does not work with the new resource so instead i basically had to do an http request if that makes sense um so let's go ahead and kick this off and see what happens sorry about that okay i'm going to open web chat so you can see i can test it in the emulator but right now we've actually got this integrated experience now so i don't need to do that this should kick off here unless the demo guys absolutely do not want me to be successful there we go we're cooking with gas all right so what happened here is the greeting you see here conversation update activity so a new user has joined the chat therefore we're getting a prompt here that says hey i'm akshbot what's your name and i should have this on do not disturb it must have worn off so let me go ahead and stay until tomorrow okay so what's my name i'm gonna go with kendall now if i had had a conversation with this bot before it would have existed my name and i can show you how you would do that later um if you do restart conversation with new user or with the same user id but you can see here user's never been greeted before so we're kicking off the welcome dialog that's a child dialogue here's what we're seeing in the flow right if the user has not been greeted or if this particular variable doesn't exist and hasn't been initialized then we're going to greet the user so hey here's a here here we're going to prompt for text i can actually using language generation i can say hey i want to respond in one of many ways to the user depending on you know randomized so they have my name we've stored that here in a um in a parameter and then basically i've said the user has been greeted so if they rejoin the conversation or refresh i won't regret them so how can the user help here i'm using a hero card which is just one of the ways we can give output so it says like i'm the aks office hours like help bot essentially i can ask questions around aks office hours i can submit a topic request for an upcoming session if i you know want to learn something more from one of them where i can ask about aks best practices so this would be a great time for me to demonstrate some of what the spot's doing so one will be let's ask about the aks office hours so i'm just going to say what are aks office hours i could put off you know aks office hours i could put explain aks office hours most likely because of the language template it would be able to understand that intent pretty well so what are aks office hours if i click here we should see a lewis trace coming in and we see that a q a intent was was basically recognized so if we click in on the q a maker trace we should or we should see here yeah what are aks office hours so with a score of 98 or 98 confidence we have realized that the bot um you know the bot wanted to send this to the q a maker intent was there a question on that okay perfect so every two yeah awesome so basically it's telling me hey we recognize q a intent every two weeks basically this is a call that i host um you know gonna sit here and and tell y'all to join but essentially this gives some information about it so maybe i can say you know do you record the sessions um do you record this session so this should hopefully recognize q a maker again based on the language understanding module and here it says hey we've got some meeting recordings check them out i could even say you know um what are some past sessions uh let's say if i did pass session so based on this language understanding it didn't understand past sessions so that's where i would go in and want to probably train the language understanding module a little bit more because it kind of i kind of had an idea of what i was trying to say but it didn't necessarily recognize that intent and we could even go in and see like hey you know based on the um the trace here like did it just not recognize let's see past session so it actually got the top intent from lewis was cancel um which didn't have very high confidence and let's see here we had um oh yeah this this was so it just went to luis it didn't even send us a q a maker in this case so that's okay we got the cancel dialog it's not sure but at least we know hey let's ask for help and remember what it can help us with so we can click help that'll kick off the help dialog which will basically send us hey remember this is how you can how i can help so that's when we so we got a q a intent recognized which sent us to the uh suggest uh not the suggest sorry the um the aks best practices um uh uh dialogue or no no i'm sorry the q and a intent recognize dialogue so let's hit the the aks best practices one right can you tell me about and remember this one is using the not built in q a maker so what i had to do here is basically say i trained the language understanding module to kind of understand is it asking for something that seems like an aks technical question or best practice if so we're going to kick off the aks best practices dialog and what i'm doing here is basically i'm taking the text that came in via the um the user right the question that they asked and then i'm putting together an http request that's calling out to the um q the text analytics with q a maker enabled that i already have hosted in azure in a resource group and a text analytics cognitive service so when i do that i'm basically taking this you know sending it via json i'm getting the response back deserializing that and then sending it to you to the to the user so let's say can you tell me about our back in aks cluster let's see if it recognizes so the luis module should recognize this send it to this particular dialog we should see an http request if it understood which we do and now we're getting the response yeah so basically yeah thank you i appreciate that so this is going to the text analytics api and i can actually see the confidence level so i would love to train up the module to have more confidence if this is the right answer which it looks like it is right control access to resources awesome so this is one that i was playing around with right before we started it may or may not work let's see so what i'm doing here is like can we stay within the same dialogue loop so if they have another question instead of kicking them back can i just keep them here and repeat the same dialogue so if i say yes it should work we don't know we'll see yeah see i tried to put validation there it didn't work that's okay let's see if we can cancel here and send back cancel it's going to do that loop a couple of times yeah it's not working that's okay so let's go to help and see if we can actually kick this out i'm i'm going to keep extending this because it's really fun so we'll go back to how it can help so this is the one i'm really excited about and this is another integration with um with an api call so one of them is hey what if hey can i suggest a new aks office hours topic so if i say that i say that e if we get anything from the body oh come on um i haven't tested this one this morning come on fingers crossed oh no okay we're stuck here let's see if we can i'm going to restart the conversation let's look here so basically let's we can do a quick troubleshoot night i know we're running low on time i hope that you all are okay to stick around um so what we can see here is basically what i'm trying to do is i want to see that just a topic so if we look at the language understanding module this would be the first thing that i look at right suggest an aks topic let's go to user input so if i look at that i want to submit a topic for the aks office hours so it should be getting that right if everything's tied up it should have gotten that one pretty well pretty well so let's see if it may just be like so i just put am so i probably should have said can you confirm that am is your name but for now i'm am and let's see if we type this verbatim if it'll register if not okay perfect so is there an aks topic that you're interested in hearing more about so this is a confirmation like hey did you really mean to go and submit this i'll say yes what's neat is we then use this adaptive card to get information from the user so i've created an adaptive card you can go online and actually generate these yourself using this like really cool gui and then you can copy them so how is this actually getting rendered i'll just show you that really quickly in bot responses i made use of this language generation template so if you click down here it says aks topic form and you can see my adaptive card here and then i reference yeah yeah thank you and then i just full json that you put in there yeah yep and then when i reference this to render it what i have to do is i created a um let me see here here it is prompt for text so what i did is in the bot response i can put like just plain text or i can click hey i want to add an attachment essentially so you can see here text would have been the default but i've already clicked in and i want to add an attachment so if i click add new attachment i can create one from a built-in template or what i can do and i could even start a new adaptive card here or i can say i'm going to add a custom one and then i reference that which i already created in the language generation temp like uh tab and what i have to specify here is json if i don't do that it won't render that was something that i missed in the docs and this is that in mind and if i click show code i can actually see what it's doing here so it created this activity and it's sending in that attachment that attachment is tied to the um at the language generation template so okay let's actually go back to youtube to make it easier yeah yeah there's some cool stuff build a fully interactive interactive interface yeah this took me like maybe 12 like maybe less than 12 hours and that's with me like teaching myself how to do it as i went to like create all of this so i'm going to put my this is really cool i i got excited i'm going to put my github handle here i'm going to put the topic request so let's say like pod identity v2 and we could say like it has taken a while to come out of preview that's what is the new v2 implementation like oh idc okay okay so when i click submit this is going to then take the take the input serialize it as json or i guess it's just putting in a json object you don't see the serialization but you just kind of send in the json payload and then basically i'm going to wait on a response back so hopefully we should get a good response so i click submit so we see an http post thanks for submitting your feedback the topic was added to a github issue so if i go over to github let me flip over here i thought i had it pulled up already yep i do okay so so we're not seeing github yet yes i'll pull it over here so you can see that i was testing this out so forgive me so what i want to do is actually i might even integrate this with the actual aks office hours um repo so if i go to let's go here to oh i'm going to leave that up too i want just show you this really quick if i go to um aka dot ms backslash aks public office hours so we're trying to inform people who join the call to add issues to actually suggest other topics instead of just seeing them on the calls so i'm going to hook it up to this issues repo but i was testing and it didn't make that much sense so instead if you look here i can now see that this actually went on my behalf created the topic proposal created the topic and then gave me a topic description so how did i do this well the http request i made was actually to a logic app the logic app then went and created the issue on my behalf using the payload so this is a really simple workflow but when an http request is received i'm going to create an issue in github but you it was it's so easy right to just like pop it out to logic apps integrate it with azure functions like if there's so many integrated with cognitive services so that's what's happening there so um you know i know we're out of time so i'll just say you know how can we keep in touch and so if you're interested in keeping in touch you know feel free to find me on twitter find me on linkedin uh thanks for having me i would love to answer questions now i know i like talked a ton and didn't let you answer almost any question or ask any questions so uh plea please feel free to ask questions but hopefully this was beneficial useful um and you learned something so this was super amazing kendall i have one question for you when are the next aks office hours great question so they will be hosted tomorrow so they're every other thursday tomorrow we'll be doing one with the product group so every like month and a half or so we actually bring the aks product team on to do a road map call where they talk about like future state and all the customers that are like when is this going to ga can ask those questions um and then also we will be having a cool discussion around like one of the feature the features that they're building out right now for auto upgrade so if you actually want to have input on a legitimate feature in aks feel free to come tomorrow we're gonna we're gonna discuss that um please and also i know i didn't show a lot of the azure resources themselves but obviously i could easily integrate this with teams i can integrate it with a web chat or slack all of that via the azure portal so and once again when i did this publish i have all of the azure resources that are already needed in order to provision and and get this up and running so that's a super easy process and um and so yeah i just think this is such a neat tool and has so much value add once again there are some gotchas in there but in general i thought it was great uh this experience playing around with it and hopefully this will shed some more light on some of them it's a real hero thank you yeah yeah thanks yeah i think i think i think he really amazed a lot of people with with the simplicity of the tool actually because it's really easy to use and that's indeed what we're looking for at all so hero so thank you for joining us on that one and for proposing this topic because actually i never stood still with composer um so yeah it's really cool to see how it works and how simple actually did i i even understand now how uh it's work yeah and hey i wanna i wanna do a call out right i'm pretty confident in everything that i shared today i think i got most of it right if i didn't you know when you're watching this feel free to drop any comments below if you have other thoughts feedback you know if i misspoke once again as as the caveat i'm not a perfect expert on this but but hopefully even just showing you my learning journey you know over the past couple weeks putting this together we'll show you how easy this is to get up and running and and so yeah thanks so much for having me it's super super grateful always a pleasure always a pleasure see y'all soon two weeks for the next one all right stay safe everybody and have a pleasant evening thank you so much bye-bye bye [Music] you
Info
Channel: Microsoft DevRadio
Views: 2,627
Rating: 5 out of 5
Keywords:
Id: o_ug4pyi74o
Channel Id: undefined
Length: 44min 47sec (2687 seconds)
Published: Wed Aug 25 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.