logo

NJP

Conversational Interfaces Academy - Building conversations using human design principles

Import · Feb 10, 2023 · video

so as always please visit our community forum for virtual agent and nlu there you'll find a lot of articles there are going to be a lot of refreshed articles coming now with the uh with the Utah release coming soon uh you'll be wrote their uh ask questions and also give answers if you're watching from YouTube and you like what you're seeing click that like or subscribe button that way you'll be notified every time these recordings get uploaded to YouTube which we do for all our academies you can see you must have a playlist if you ever want to play back some of our classic hits for conversational interfaces Academy so today I have a distinct pleasure of having a new guest speaker Sarah Dawson and we're going to be talking today on how to build topics using conversational human design principles so uh Sarah uh you feel free to introduce yourself and feel free to take it away and if you want me to control the slide just you know tell me next next and I'll uh control the slides for you all right sounds awesome thank you Victor um hello everyone I am Sarah Dawson and I'm a conversational designer here at servicenow I've been at the company for just under two years and I've designed for the itsm virtual agent that we have as well as other conversational interfaces across the whole company um before this I was on a team that created the first chat bot at GoDaddy um so I'm very familiar with how to build a conversational design practice from the ground up um I actually have a masters in screenwriting and so that actually kind of uh LED uh very easily into a job writing for Bots after I'd done a content and Tech writer for about 10 years prior to that so I've been doing this for about five years and so the kind of scripting I'm going to talk about today uh is going to seem kind of simplistic but I guarantee you there's an actual art to writing for AI and virtual agents so hopefully some of that gets imparted to you all uh yeah and oh and just real quickly is the agenda really what I'm going to do is go over some um basic uh conversational design principles first uh and then we're going to go into some specific patterns around error handling uh asking questions and acknowledging and confirming uh with asking the questions um so but first I'll go over some uh overall kind of uh conversational design uh guidance so basically one of the first principles is that you are designing with both words and structure good conversational design principles are obviously rooted in the words themselves but they're also threaded through the structure of the conversations uh so that these types of guidelines that I'm going to go over today um they work because the they inform the architecture of the conversational flow so it's words and structure in harmony the entire time second principle use conversational words when writing a conversation this is a concept that's actually lost on a lot of people uh mostly because we were taught to write in such a formal way uh throughout school and throughout work so it's hard to kind of let those that structure go but we encourage the use of contractions use it's can't let's uh use natural language and natural interactions you know you want the conversation to flow the way a conversation actually flows uh so it's it's ideal to not use robotic language or commands or any kind of technical jargon you want to simplify as much as you can for the user so I have a little uh example here it's like you're taking a sentence that's like you know very robotic I am sorry but I'm not able to compute the input that you provided me please State the query in a way that I will understand and you're taking turning that around into just a simple conversational phrase that's sorry I didn't quite catch that can you try again um so you can see there's a lot of editing that has to happen uh to make things less robotic and less formal um another principle script out every flow ahead of time and this can be no matter how you do conversational design try to find a way that works for you uh meaning you can use a word doc you can script it out in Miro or figma you could build this decision tree you could write it out on Post-its on a whiteboard and you know rearrange them but the the idea is to find the way that works best for you and start mapping it out and you also want to think about uh all the ways that your virtual agent might fall through the cracks and you want to design with those flaws in mind so for instance if you have like limited API capabilities uh you need to figure out how to ask questions that will sidestep that limitation and get the information needed from the user to complete the task um you also always want to design with a careful consideration of context meaning you always want to give your user a clear idea of why they're being asked what they're being asked in a conversational flow and how it fits into the larger task at hand uh and anytime you can personalize a conversation or make helpful recommendations throughout a user's Journey the outcome is just going to be more delightful for both parties and then finally test iterate and repeat uh as always if you can listen to Future user feedback after you've built out a conversational flow do you may think that you've provided a completely transparent path forward to solving a problem but you never know what your users are going to experience uh you know behind the scenes that you haven't necessarily thought of and that's okay error is great we want to go and test and and figure out where things are falling through the cracks and come back and improve and iterate and make it better so those are so just some basic guidelines uh let's go to the next slide and we're going to talk about error handling uh error handling uh is one of the crucial pieces to um any kind of virtual agent or chat bot um conversation it's uh it occurs when the virtual agent recognizes an error or under or other unexpected event and the VA must address the fact that the user isn't getting what they need from the conversational flow the reason it's super crucial is because um it can often set the tone for how an interaction plays out uh error handling is it happens regularly you're always going to run into problems you know your users are always going to kind of throw you for a loop or you're not going to anticipate things and so you want to have a really solid strategy in place for how your virtual agent handles uh Handler's errors on the back end it's an opportunity for the virtual agent to demonstrate empathy and understanding um as it's trying to get the user on the right path um and it can showcase multiple Pathways to help meaning that uh it can showcase its ability to prompt the user to ask questions in a different way it can offer help articles it can offer minor troubleshooting connecting to an agent whatever your uh you know error handling strategy is um it needs to you need to give your user a way out and a way to get help even if the virtual agent can't get the help it needs it makes technical issues more understandable which always makes frustration ease and go away when things go badly um and so there are a couple areas like in general where the virtual agent kind of needs an air a solid error handling strategy um one is input errors and that's when the user is going to give input that the virtual agent is unable to understand meaning that the virtual agent either isn't built with the content to accept whatever criteria the user is giving it or the user says something that's sort of you know a little off and the virtual agent just can't doesn't understand what it's saying it's going to happen um system errors are when the virtual agents kind of can't complete a task uh due to either a problem with the system or some other technical constraint it could be that the user's wanting to do something within a framework that they that the system can't handle or it could be that they're literally you know the server is down or something like that um and then there are contextual errors and that's when the conversation kind of goes off track either because the user's sort of Switching gears and it's unrelated to the context of what the virtual agent was saying in the first place uh I like an egregious example of this is like a user is trying to book a plane ticket and then inexplicably somewhere in the flow is like I want to order a pizza and so the virtual agent isn't kind of paying attention to that so uh let's take a look at it in action next slide so this is an actual um example that I have of error handling um just some general things um you want to kind of keep the user hopeful uh you want to offer help without blocking or telling a user they can't uh you want to make sure to guide them without blame so you soften the blow of the errors that you're that are occurring you want to use simple and straightforward language and you always want to give the user a way out or an alternative so in this scenario a user is needing to update the credit card info in their account and so we've got three scenarios the first one is the before and in the before section the virtual agent isn't recognizing the account number so it's kind of subtly blaming the user and it's not offering a way out or an alternative um it's saying to contact support at the very end of the flow but it's not it's not you know offering to escalate in general so the app the second after is a one way of handling this and it's to prompt the user again um to re-enter the account number you always want to give your users another option and in this case the user recognizes that they put in the wrong number they put in the right number and the virtual agent is you know We're Off to the Races it's going to help them update their account in the third version uh the account number they're putting in the same account number and so you have to allow for that they have an invalid account number it's account number that doesn't sync with the system and so um it's indeed invalid and so the virtual agent can't help in this instance so it's offering to escalate right away so this is a good little example of just like real simple error handling um next slide please then the next piece is asking questions um which this is sort of the lifeblood of your virtual agent it's a foundational pillar of conversational design almost without exception the virtual agent needs to ask a question to kick off the exchange and set the user on the right path um and if the virtual agent is truly going to help that first question needs to be followed with a series of strategic questions um and that keeps the exchange on track and personalized to the user's needs question asking is always important is an information gathering exercise and that's creating the blueprint for the entire conversation you're Gathering everything you need to go forward it provides structure and focus to help the user stay on track uh it humanizes the exchange questioning and answering are just organic parts of a conversation that's how we relate to one another so we want to make it as human without you know telling people it's human because they know it's a virtual agent um and it's also a way of uh personalizing the path um with the user getting the relevant information they need and for the very specific tasks that they want to undertake um and so there's an art to asking questions there's open-ended questions that typically occur at the beginning of a conversation to establish the user's agenda stuff like what can I help you today with today uh or what sort of technical issue are you experiencing there's a there are closed-ended questions these are kind of more specific questions that are meant to drill down so very specific to the pathway you know asking details about the exact task and then there are the follow-up questions and these are questions that help clarify and shape the narrative and they can eliminate doubt for both the virtual agent and the user um so with questioning um again how to handle it you want to use a thoughtful Cadence when asking you don't want to bombard your user with questions because they'll quickly get frustrated if you're throwing question after question at them so you want to have and you don't want to anticipate the answer you don't want to lead a user towards a specific answer because it can introduce bias and it can inadvertently steer them in the wrong direction so again designed with active listening built in this is really crucial to that uh to not staring the direction wrong um the virtual agent should ideally strategically use context to ensure that's kind of lock step with the user so it needs to be listening to everything that the that the virtual agent is saying uh and then you always want to try and use acknowledgment and Confirmation which I'll get into in a couple slides from now uh to make sure that the user is getting accurate and relevant guidance um so in this before and after scenario uh in the first panel uh rather than asking strategic troubleshooting questions that can guide the user the virtual agent is asking them to jump in uh to a really technical problem solving task and you can see I've run out a little real estate there with it with the virtual agent talking but it's just telling them to go do this you know problem solving thing and it's not listening to the fact that that they don't understand what to do um but once we you know simplify this in the after panel uh the virtual agent is using context to take the initiative and troubleshooting here um so it's recognizing that the user's device is using a large amount of data and it's using strategic questioning to help the user shut down any processes that might be slowing things down uh and then the virtual agent you know once they've once it's discovered some of that it offers to further troubleshoot while at the user's side in case any other issues arise so some nice little example of asking questions the lifeblood of the virtual agent uh the next piece is acknowledge and confirm so in asking questions uh you want to kind of practice acknowledgment and confirming uh acknowledgments acknowledging is just using simple words like okay got it or all right or yes or you know understood it's just these simple words that let the user know that the virtual agent is on the same page and they can work you should you know try to ideally thread your entire flow with acknowledgment words you know just to make sure the virtual agents on the same page um confirmation uh is another very key way that the virtual agent can demonstrate that it's on the same page as the user um it eliminates doubt and anxiety uh and it's a way of making sure the user agrees with the virtual agent's interpretation of their input so it can prevent misunderstanding and errors it gives users a sense of control when they're trying to solve a problem they can accept or deny whatever the virtual agent is telling them to do it adds Clarity it gives the user agency to take the right steps and it establishes trust um there are kind of two ways of of using uh confirmation in Virtual agent there's implicit uh implicit confirmation happens when the virtual agent is confident that it understands the input so that it assumes it can continue with the task at hand so good confirmation statement is like okay I can help you schedule a meeting today at 1 pm explicit confirmation happens when the virtual agent isn't quite as confident and so it needs to check with the user before making sure that it's helping them complete the task so the phrasing in this case would be like you want this meeting scheduled for today at 1 pm is that right question mark so it's just a matter of you know making a gentle assumption because it understands and then asking a question to make sure that it's correct so next slide and again some just general ground rules rules you want to use Clear language when you're confirming um and you want to use language that mirrors the user's request try to use call to action terms that allow a user to accept or cancel requests again you always want to give them a way out always allow the user the options to change their request before it's confirmed and if the virtual agent needs to confirm several details you want to remember to avoid repetition try to ask the question in a different way um and then if confirmation is needed throughout the flow you just want to make sure you're using consistency in the way that you're asking questions and again no repetition um acknowledgments should be used frequently those again those okay got it gotcha uh those words need to be used as much as you can just to make sure you're on the same page confirmation should be used strategically uh and only after a few turns um before it um if Clarity can't be reached after a few turns you want to make sure to escalate immediately um and so in these examples I'm showing an implicit and explicit type of uh confirmation uh in the first panel the reason why this is working is because the virtual agent is understanding the request and it's immediately displaying options for the user to order new headphones uh and once the user makes their selection the virtual agent further anticipates the user's need by encouraging them to check the order uh the more explicit the second example is the user is given a lot of information up front about scheduling a meeting so the virtual agent has some parsing to do but it's using the phrases it recognized to mirror the language back to the user to make sure all the details are correct it doesn't quite catch the name of of the user that the user wanted to attend the meeting but that confirmation comes later in the flow and it's going to make sure that that person is added to the meeting so the VA is implicitly confirming the meeting with all the details intact at the very end of that flow so yeah those are the examples all right thank you Sarah so with that we're going to switch over to a live exercise of some of these examples so I'm going to go into um my virtual agent designer which is here um so the first thing I wanted to cover was how to design the error handling that you saw Sarah mentioned and Sarah you can feel free to jump in to provide any commentary or likes I'm going to create a new topic I'm just going to call it you know error design test click create so um we're just gonna create a a random flow here let's pretend we're asking a user something you know question and we're going to ask them you know please enter your account number now we're not going to cover today but someone did ask hey is there a way to like um make this secure or mask this data and you know you can we do have an input node we do have a an option to secure the input node that means basically if someone types in something it just masks it but uh yeah we're going to ask for account number and then we're going to check to make sure that account number whether or not is accurate or not right now obviously your account number checking is going to be much more complex than what I showed today but the point is just to show you um you know just uh how to handle errors so I'm just going to create some if statements again very generic I'm just going to declare a variable called error you know just it's going to be a Boolean right like hey is this going to be an aeronaut I'm going to say if my inputs and the input is ask info which is that project is created it's the it's the data of the of the projects created if it's not equals to you know one two three for example right then we're going to set errors to you know true again obviously your logic is going to be way more complex to this and what's going to return v a large dot error okay just give myself a little comment here you know if account number is not one two three return there it is true just for my own sake okay so then we have to account for all the errors right now there are three kinds of Errors um so we're going to add a decision tree right one is well what if someone like just enters in blank right uh say this is blank right and then no error and then foreign is blank fortunately this is not this this one's not going to happen because uh this prompt is going to be required so this won't happen but we'll just create it as it might get rid of it later so let's look at the error uh part first so if it's an error and since I'm using a scripted variable then I need to use script for the condition here you know if VA inputs dot ask info is not blank and VA vars.error again remember this is Boolean so if this is if this is true it's going to go down this Branch this error branch then we'll do what uh you know uh Sarah taught us to do we're gonna let them down slowly the worst thing we want to do is show one of that you know you ran into a technical issue it can you know can't help you anymore that's that's no good so we're going to enter in we're gonna give folks a choice right if it's an error we're going to say hey do you want to retry or do you want to just go to a live agent right so let's just uh help or retry and like what Sarah says we're going to be very human about this we're going to say hey I'm sorry you know we're not finding that account number right or or maybe uh you're saying hey I actually know who you are right because as a virtuation I can tell who you are and you're you know it's not a match or something's wrong you know could you try and train it again right again rather than just I I will put a you know a retry here as as an option or uh Live help here but definitely we wanted to as uh Sarah says let them down slow right so if they want to retry so we have we have another decision out here and if you if we want to retry um we just take them back to the top right let's zoom out a bit Let's Pretend This was Retry take him back to the top right this is retry and this one because I'm not scripting anything this is just conditioned it's very easy this is the helper retry if that is retry take them back to the top right if you know if they say hey I already tried plenty of times or just take me to a live agent then you can just say agent right and again this is Live help the good news about life help is we do have a topic block for that right so you don't need a script hey send them to agent I can just use the topic block uh it's called I think it's called Agent transfer live agent and then get it done right if it's no error we'll say so that's so we finished the error part right oh and by the way one more thing since we're low on time I'll just combine two things and two exercises in one because of a long time I'm gonna after they enter an account number I'm gonna say you know gotta or we understand right I can do that in the confirmation message I can provide a default value confirmation to say you know got it just one way to just again uh make a conversational don't make it so robotic or don't like start skipping steps and start assuming you know the person knows one thing or another so yeah so we've we've built out our error block and then for our no error again I have to be you know you have to be explicit you can't just kind of leave you know leave everything as a as a fallback here um so if or basically return if VA vars is not error that's what the exclamation point is send it down there no error and then we tell them you know something good let's update your count right maybe tell them thanks too right and now we're going to actually tell them what we're going to do right so that's how you build error handling that's like going to build a conversation with that flow there is blank I'm just going to remove um and you'll see why in a moment like we don't we don't need it because you're not gonna it's not gonna be possible let's go ahead and click save let's click test and I have to switch up my screen share because you may not see the pop-up so let me do this share my desktop I think this works better anyway Victor because you're seeing all of these pieces in action so it's all coming together in an entire flow so this is great yeah yeah and feel free to Sarah to add anything else on top of what I've done but hopefully you guys all see the uh the tester on the right hand side my variables I can see them here my the logs can see here but let's say I enter in you know say CH you can as you can see if I don't enter in anything I can't click Send so the is blank is not going to be an issue here but let's say enter in a bad account number which like you know one two five right so now it's going to send me I can't find your account number you try again I can either you know retry or go for Live help I'm going to retry like ah my badge slipping the fingers whatever right into your account number one two three that should be the right one obviously you're uh you know your your logic to check the account number is getting much more complex of money you can see it goes through the no error it says thanks let's update your account so that's how you build all the principles that Sarah mentioned in virtually as designer I know I went by pretty quickly but uh since this is recorded again will be available on YouTube for you to check out um and and pause where you need to pause and kind of copy and paste all the scripting that I did hopefully it wasn't too complex um of course you can it could be very complex if you wanted to be so yeah we'll pause here for I'll kind of leave this on the screen and we'll pause for questions I see I saw that a bunch popped up here um let me check the chat okay so um Anonymous asks do we need to put a design a disclaimer on the top of virtualization about data privacy or C4 data to avoid print information there yeah so um yes if you're going to ask so typically you don't typically ask um you want to be judicious about asking the sensitive data in the virtual agent and you do want to you could you would want to put a disclaimer up there if you if you absolutely have a topic that that calls for that um and and as I mentioned in the in the chat we do have the ability to make input secure so that uh when uh an admin or agent checks the transcripts for example they won't see the account number or the um the password that the user typed in it'll be encrypted in other words uh but yeah disclaimer is usually on on top is good uh but if you know your chatbot isn't going to ask anything too sensitive then you know that's that's up to you uh third question how to train the natural language and I don't know what PL stands for a model without the entity option um entities are up are optional you can do that we don't cover that here but again if you visit our community forum for virtual agent and nlu we have a lot of articles about natural language understanding we have a lot of Academy videos on that as well is VA vars error a global variable no I defined it so VA vars is how you define a global within the topic at least Global variable and then Dot and then error I just declared that a variable name you can you can create VA vars.anything really uh what version is being used for this demo that is um this is Tokyo uh but everything I did I don't think I have any you know just there are no Tokyo specific features so you could do this in in San Diego uh as well if not earlier uh let's see here moving right along do you have any problems with users thinking they are speaking to with a live agent um usually not and the way you the way you do that and this is another good design principle we've we've talked uh we should talk about is um you do want to Brand your Bot like you notice in my in my test drive kind of you know called it VC chat and I had the servicenow logo but if you give your Bot a an identity right call it Beth Or call it Sarah right uh and give it a photo people will see okay this is a I'm talking to a chat bot and then when it goes to a live agent you'll see like a real live agent's name or and profile photo Etc so that's a good question that's a good call out from a design perspective yeah I can add to that too just any time people are going to get confused whether you state from the very beginning this is a bot you're talking to so some people will always be confused but yeah that's Victor brings up a great point when you do your introduction when you do like a greeting that's the time when it's great to personalize and and brand your Bot and give it kind of the personality so people know yep and then uh last question so uh someone mentioned that Paul PL is Polish I wouldn't check the nou documentation we are constantly adding nlu entities released per release I I'm not sure what we've what I I can't keep track of the languages that we released in Tokyo and then in Utah so just keep a track of that uh finally uh one there was a a much earlier question about uh notifications um foreign so there's it's not possible to do that in promoted topics um but I believe if you know if a user just types notifications then it does run a background topic I know it's a bad word but a background topic to um to show the YouTube notifications but I don't think you can add that as a promoted topic and then finally last question will servicenow manage the sensitive data Handler or is that restricted to your own company Network so Sunset data sensitive data Handler is a is a feature in not only virtual agent I would say probably in a now platform overall so um it's restricted within your company's now tenant or now platform um I I you know I can't speak to the the data handling when it goes when it you know goes over your company Network traffic uh but certainly with you know data wise storage and transit-wise within the now platform is is secure when you configure it to be cool well hey thank you everyone um for for joining a lot of new faces I hope you can join our next CI Academy in the next uh which is in two weeks it's in every two weeks every Tuesday uh 8 30 a.m Pacific and again this recording will be up uh hopefully by the end of this week just need to trim the beginning and the ends and uh if not yeah again sign up for uh the academy webinars and visit our community Forum thank you Sarah thank you all and everyone have a good rest of your day thank you Victor

View original source

https://www.youtube.com/watch?v=zJVGm1GpDpQ