[ Music ]
[ Applause ]
Hi. I'm Jay.
I'm a designer on the Siri and Shortcuts team.
And today, we'll be talking about how to design great shortcuts for your apps.
We're going to cover three main topics today.
First, I'll talk about looking at all the use cases of your app, and deciding which ones might make sense as shortcuts.
Then, I'll talk about how to make these shortcuts discoverable in your apps.
And, finally, I'll walk through how to design a great Siri experience for the new interactive capabilities of shortcuts in iOS 13.
Now, stepping back for a moment, shortcuts in general are a great way to bring your app's functionality in front of more users in more places in the OS.
So, let's take a look at the places where your apps' shortcuts can appear to get a feel for what might be useful.
If you tell the system when the user does something in your app, the system can automatically suggest a shortcut when it predicts the user will next want to do that action.
And, these shortcuts can appear in lock screen and search.
Here, this shortcut lets you quickly start a guided workout, you usually do at this time of day.
If a user adds a shortcut to Siri, by assigning it a custom phrase, they can invoke it at any time with their voice.
Here, the shortcut lets them order their usual dinner.
In one quick confirmation step, the user can get some great Mediterranean food.
Another great use for shortcuts with Siri is getting information hands- and eyes-free.
So, to your HomePod, if you have a transit app shortcut, you can say, Hey Siri, bus schedule.
And, Siri will speak out the bus schedule information from your app.
And, you can also incorporate your app's functionality as part of a multi-step shortcut.
Here, the shortcut handles your evening routine, ordering soup in time for your arrival home, playing your favorite music for your car ride, and showing the fastest directions.
So, looking at these examples, we can see that shortcuts are great for accelerating frequently used, useful actions your app can do.
Presenting information at a glance, or with your voice, or as building blocks for powerful multi-step shortcuts, where your app can work alongside others.
We introduced Siri shortcut suggestions in iOS 12, so look back at past sessions for more information on how to develop great shortcuts to be automatically suggested on lock screen and search.
Today, I'm going to focus on how to make shortcuts to take advantage of the new Siri capabilities in iOS 13.
We're going to walk through how to prioritize the features in your app that might make for good Siri shortcuts.
To do that, let's take a look at one of our favorite apps, SoupChef, which lets you order a wide variety of soups for pickup or delivery.
Let's walk through the design process for making a SoupChef shortcut.
List out all the things that your app can do.
When doing so, start thinking about things that a user might want to repeat with their voice.
So, with SoupChef, you can do things like browse the menu of soups.
Order a soup.
Check your order status, or view past orders.
Let's take a look at some of these features one by one.
Browsing a menu is a very visual activity that requires a lot of structured information that won't translate well to voice.
It requires scrolling, tapping, and navigating.
And, it provides information that isn't likely to change from invocation to invocation.
And, it's more of a means to an end, and not a valuable action in and of itself.
So, this might not be a good candidate for a shortcut.
Checking an order status could be something a user might want to do with their voice, getting a quick summary of information from Siri.
But, it's also only applicable for a narrow window of time, right after a user's ordered something.
So, this is something that you could consider allowing users to turn into a shortcut, but maybe only if your delivery periods are long, or have multiple phases.
And viewing past orders is nice to have, but I don't know about you, I'm not regularly checking that.
So, not a great shortcut.
Ordering a soup is a very valuable activity.
In fact, the most important activity of your app.
And, you can imagine it being repeatable if a user has a favorite soup.
So, let's call this a pretty good candidate for a shortcut.
So, in summary, a great use for shortcuts will be something that is valuable, or interesting to repeat.
Doable with your voice by not relying on visuals or tapping.
And, invokable in many contexts.
So, the shortcut isn't just applicable during a small window of time.
So, now that we know that we want users to be able to reorder soup with shortcuts, let's take a look at how we might make that discoverable in your app.
We provide a standard Add to Siri button, that makes it easy for users to see what features in your app can be turned into a Siri shortcut.
But use it thoughtfully.
Don't do this, where you put an Add to Siri button on every item on your main menu.
As beautiful as the button is on its own, repeating it like this looks ugly, and it's not really relevant here.
The user's probably just trying to make an order in the first place.
And, these buttons are getting in the way.
And, these could be items that the user has never ordered before.
So, it doesn't make sense to suggest reordering them just yet.
Instead, look at opportunities where you can present it in a focused UI, where you have a clear signal that a user might want to repeat something.
For example, it might be better to show an Add to Siri button right after a user has ordered something.
The logic being, if a user's found it good enough to order before, the user's more likely to want to order it again.
And, you're not interrupting anything a user's trying to do.
They just finished their order, so this is a good opportunity.
To make the Add to Siri button fit in to your app's visual appearance even better, you can now customize the corner radius of the button.
And, you can have its appearance automatically change based on the user's light or dark mode preference.
Now, if you've tried really hard, like really hard, and the button's visual style doesn't fit into your app, you can make your own button.
But, you should replicate all of Add to Siri's functionality.
The standard Add to Siri button shows the user's shortcut phrase once configured.
And, this is a good way to remind the user what they can say to run the shortcut.
Tapping on it will reveal a standard sheet which allows the user to edit or delete the shortcut.
If you want a centralized place in your app where you list all your shortcuts, it might be too much to have the Add to Siri button on every row, like we saw earlier.
So, instead, you're free to use standard UIKit elements.
Just make sure that when a user sets up a shortcut, just like the Add to Siri button, you show the phrase the user has set up the shortcut with.
Tapping on it should also reveal the sheet, where you can edit or delete the shortcut.
So, let's get back to users setting up the shortcut for the first time.
Once the user taps on the Add to Siri button, they'll see the Add to Siri sheet, where the user can choose what phrase to use to invoke the shortcut.
In iOS 13, your app can pre-fill a shortcut of your own choosing.
And, most users will probably just assign this phrase if you provide it, so make sure you provide a good default.
Order Soup is a good, short, memorable phrase in this case, that the user might want to genuinely want to use for the shortcut.
Let's take a look at another example, and take a break from soup for a while.
Checking the bus schedule.
While this might look like a sensible phrase, given how relatively short it is, there are plenty of opportunities for the user to forget words, or switch words around.
They might try to say, Look up the bus schedule.
Or, the bus schedule for the 35.
Or, just drop the "the" altogether.
While Siri will do its best to match these to the phrase, users can still get pretty creative when trying to recall longer phrases.
So, this might not be the best suggested phrase.
Instead, keep it short, at around three or fewer words.
Try limiting it to a proper noun, or just a verb and an object.
This reduces the chance that users will mix up word order, or use different prepositions.
A user wants to set up a shortcut for ordering tomato soup.
But, what if the user wants the shortcut to do something slightly different every time, like order a different soup.
In iOS 13, users can tap on the cell under the Do area, and customize how much information is pre-baked into the shortcut by simply tapping on one of the fields.
The user can choose to leave certain fields blank, like the type of soup itself.
And, when they do that, Siri can ask for this missing information on your app's behalf.
Now, ideally a shortcut has very minimal interaction.
After all, it should accelerate people to something that they do frequently.
So, when you present the ad to Siri sheet, the action should include as much information as possible, to run the shortcut with just one or two steps.
In this case, this shortcut goes straight to the confirmation screen, because everything is already specified.
But, what happens when a user chooses to leave everything blank, and wants to specify all of the details of their order in an interaction with Siri?
Let's take a look at how we might design a complete ordering soup interaction with Siri.
Think about what information you need to know in order to carry out a soup request.
Like, the kind of soup it is.
Whether you're ordering for delivery or pick up?
And, if you're ordering for delivery, what location are you delivering to, and if you're ordering for pickup, what you're picking up from.
To start thinking about the order and manner in which you might collect this information, you should think of your app's interaction as a conversation between your user and Siri.
And, one way to visualize this conversation is with a script, which is useful for quickly jotting down one conversational path.
Of course, there isn't just one path you can go down.
You should write down all of the possible paths in which the conversation might go.
For example, a user could say an option that's not supported by your app.
In that case, Siri should probably indicate that to the user.
Now, handing over a book of scripts might get unwieldy as a design specification, so, at the end of the process, you'll probably end up with something more like this; a flow diagram that covers all the possible states and transitions within a conversation.
Now, there are specific ways that Siri can present choices, and handle user input, so let's dive straight into the conversational patterns you have at your disposal.
The first pattern that you have is the prompt.
This is the most open-ended way you can collect a value from the user.
You should write your prompt as a question, and phrase it in a way that sets the user up for a well-formed response.
When a user says something that might mean multiple things to your app, you can present an option list which allows the user to specify which one they meant.
This is called a disambiguation prompt.
You can minimize disambiguation prompts, which add another step to your conversation, by presenting an option list up front.
Notice that the user has said their shortcut phrase, Order Soup, and went straight to the list.
You should use this instead of a free-form prompt if there's a constrained list of options to choose from.
Make sure your prompt dialog encourages choosing from a list.
Questions that start with the word "which" work really well here.
When using s shortcut without a display, Siri will read out options.
Like on AirPods, on HomePod, or when the user says Hey Siri.
And, Siri will read these out as you would provide them in your visual UI.
But, you can imagine that this could get verbose, especially if a lot of the options are similar.
To improve this experience, you can separately specify how Siri reads your options out loud, by providing pronunciation hits that you can add to each option.
Let's take a look at a slightly different example.
The user has asked for Noodle Soup.
And, there are two kinds.
Instead of saying Beef Noodle Soup, or Veggie Noodle Soup, you might want to just say Beef or Veggie?
So, consider only reading out the details that differentiate between each item.
Now, conversations are a two-way street, so you also have to account for what the user might say.
And, the user may not use the exact words that you've labeled the option with.
To handle natural variations in responses, for each option, you should provide Siri with synonyms that mean the same thing as that option.
So, when the user just says Beef, it'll match to Beef Noodle Soup.
When coming up with these synonyms, you should also keep in mind that the phrasing of your question impacts the way the user may respond.
So, if you have a more casual way of describing the options, like the one with meat, or the vegetarian one, you should make sure that you recognize the user repeating that kind of phrasing back to Siri.
If a user provides a response that you want to be extra sure about, like a value of particularly high consequence, you can provide a parameter confirmation prompt.
But, use this judiciously, and only for truly exceptional cases, as this slows the user down.
One alternative way of using a parameter confirmation prompt is if your app has its own logic for predicting what a user might want.
You can present your best guess to the user, and they can either confirm it, in which case, yay, they don't have to provide additional details.
Or, they can deny it, in which case you can fall back to a more open-ended prompt.
If you can guess what the user wants, it's a great way of making your shortcut interaction even faster.
At the end of the flow, consider using a confirmation prompt that applies to the action as a whole, particularly if the action itself is of high consequence.
In this step, you can confirm all of the details of the action about to be performed that's relevant to the decision, like price and delivery time in a visual user interface that you can fully customize.
Note that for actions in the ordering category, the system requires the user to confirm.
So, make sure, if you fall under that category, you provide a great confirmation experience.
But, remember that your shortcut can be run by a user not looking at a screen, so you should provide dialog for voice-only experiences.
In this case, we provide additional dialog to help the user make a choice.
The purpose of this additional dialog is to provide information that can't otherwise be displayed in a visual user interface.
So, think of this extra dialog as a spoken equivalent of the most important information you would otherwise draw in a display.
Finally, your response.
Siri will indicate the status of the action.
You can provide a visual UI summary here to describe additional details, like who's going to be delivering your soup, and the latest estimated delivery time.
Notice that we just say, "OK.
Ordered" here, because we're using a display to show the additional information.
For voice-only experiences, you should specify a more descriptive dialog.
And, again, think of this extra dialog as a spoken equivalent of the most important information of the response UI you would draw on a display.
When you're thinking about your confirmation and response dialog, you should keep in mind that you'll need to select a category for your shortcut.
When you define your shortcut in Xcode, select the category that is the closet match to your shortcut's functionality.
In our SoupChef case, it's pretty clear that the order category fits the bill.
In confirmation prompts, Siri will provide the question itself, based on the category you select.
So, don't include a question as part of the confirmation dialog you customize, highlighted in white here.
In response dialog, Siri will provide a status that is appropriate to the category.
Your custom dialog gets appended to the end of the dialog Siri provides.
Voice interactions should also be as robust as possible, to avoid forcing the user to open the app to continue manually.
For example, you should provide clear error messages if a parameter value is invalid.
Siri will then automatically re-prompt for that value.
You should also avoid getting yourself into this scenario in the first place.
If you're presenting option lists, make sure you don't present any options that you know to be invalid at runtime.
You should also consider opportunities to dig users out of holes.
Users may include values like delivery location in their shortcut, since it's usually just their home, and so they get used to not saying their delivery location to Siri.
One day they might use the shortcut when they're far from home.
You should check for that case, and prompt for a different location.
And, for whatever reason, users might want to continue running the shortcut in your app.
They can tap anywhere in your UI to do that.
So, when you present UI, keep in mind that the whole area is one big button that opens your app.
So, don't draw elements that look individually interactable.
They can't be.
Make sure that when a user does tap this area, your app opens up to the right place, with all of the information the user has already provided up until that point, filled out in the app.
And, finally, we encourage you to take time when writing dialog.
It's not something that you can just do a quick pass at, to have something to demo, and then leave in your final shipping product.
Remember, that in a voice interaction, language is the user interface.
So, you should treat the words in your Siri interaction with as much respect and care as you do the pixels in your app.
With that said, let's walk through a small set of guidelines.
Don't be overly polite or inject too much personality.
Users who want to customize their soup will hear this non-essential dialog every time they run this shortcut, which will get irritating.
When in doubt, test it.
Listen to Siri speak your dialog.
How does your dialog feel to you after the third time hearing it?
What about the 10th?
If parts of it feel annoying, it might be a good signal that you should reduce the verbosity of your dialog.
Dialog should be concise, neutral, and communicate the type of response that you're expecting.
Don't include your app name in your dialog.
Your app will already be attributed, visually, via your confirmation and response UI, and occasionally via Siri's own additions.
So, just take your name out.
Don't worry, your brand is safe.
Similarly, you shouldn't include your user's name in your dialog.
Siri may at times speak the user's name on HomePod to verify their identity.
If your app does so as well, it might sound repetitive and annoying.
So, just take your name out.
Avoid using first-person pronouns, since Siri isn't performing the action, your app is.
It's a subtle distinction, but it's an important one.
By saying "I" or "we" in Siri's voice, users might think Siri has a better understanding of your app's capabilities than it does, and might try to take follow-up actions that your app and Siri can't understand.
Instead, present options neutrally, using words like "here" or "there are a few options."
So, what have we learned today?
Shortcuts are meant to elevate your app's most repeatable features.
You should use the Add to Siri button to make sure users know what they can turn into a shortcut from inside your app.
You should make your Siri interactions logical, concise, and robust.
And, you should take extra care when writing dialog.
[ Applause ]