You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: hub/apps/design/input/cortana-design-guidelines.md
+20-22Lines changed: 20 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,12 +14,10 @@ ms.localizationpriority: medium
14
14
15
15
>[!WARNING]
16
16
> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
17
-
>
18
-
> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
19
17
20
18
These guidelines and recommendations describe how your app can best use **Cortana** to interact with the user, help them accomplish a task, and communicate clearly how it's all happening.
21
19
22
-
**Cortana** enables applications running in the background to prompt the user for confirmation or disambiguation, and in return provide the user with feedback on the status of the voice command. The process is lightweight, quick, and doesn’t force the user to leave the **Cortana** experience or switch context to the application.
20
+
**Cortana** enables applications running in the background to prompt the user for confirmation or disambiguation, and in return provide the user with feedback on the status of the voice command. The process is lightweight, quick, and doesn't force the user to leave the **Cortana** experience or switch context to the application.
23
21
24
22
While the user should feel that **Cortana** is helping to make the process as light and easy as possible, you probably want **Cortana** to also be explicit that it's your app accomplishing the task.
25
23
@@ -62,8 +60,8 @@ Successful **Cortana** interactions require you to follow some fundamental princ
62
60
<dd><p>Provide information pertinent only to the task, content, and context.</p>
63
61
</dd>
64
62
</dl></td>
65
-
<tdalign="left"><p>I’ve added this to your playlist. Just so you know, your battery is getting low.</p></td>
66
-
<tdalign="left"><p>I’ve added this to your playlist.</p></td>
63
+
<tdalign="left"><p>I've added this to your playlist. Just so you know, your battery is getting low.</p></td>
64
+
<tdalign="left"><p>I've added this to your playlist.</p></td>
67
65
</tr>
68
66
<trclass="odd">
69
67
<tdalign="left"><p></p>
@@ -73,33 +71,33 @@ Successful **Cortana** interactions require you to follow some fundamental princ
73
71
</dd>
74
72
</dl></td>
75
73
<tdalign="left"><p>No results for query "Trips to Las Vegas".</p></td>
76
-
<tdalign="left"><p>I couldn’t find any trips to Las Vegas.</p></td>
74
+
<tdalign="left"><p>I couldn't find any trips to Las Vegas.</p></td>
77
75
</tr>
78
76
<trclass="even">
79
77
<tdalign="left"><p></p>
80
78
<dl>
81
79
<dt>Trustworthy </dt>
82
-
<dd><p>Be as accurate as possible. Be transparent about what’s going on in the background—if a task hasn’t finished yet, don’t say that it has. Respect privacy—don’t read private information out loud.</p>
80
+
<dd><p>Be as accurate as possible. Be transparent about what's going on in the background—if a task hasn't finished yet, don't say that it has. Respect privacy—don't read private information out loud.</p>
83
81
</dd>
84
82
</dl></td>
85
-
<tdalign="left"><p>I couldn’t find that movie, it must not have been released yet.</p></td>
86
-
<tdalign="left"><p>I couldn’t find that movie in our catalogue.</p></td>
83
+
<tdalign="left"><p>I couldn't find that movie, it must not have been released yet.</p></td>
84
+
<tdalign="left"><p>I couldn't find that movie in our catalogue.</p></td>
87
85
</tr>
88
86
</tbody>
89
87
</table>
90
88
91
-
Write how people speak. Don’t emphasize grammatical accuracy over sounding natural. For example, ear-friendly verbal shortcuts like "wanna" or "gotta" are fine for TTS read out.
89
+
Write how people speak. Don't emphasize grammatical accuracy over sounding natural. For example, ear-friendly verbal shortcuts like "wanna" or "gotta" are fine for TTS read out.
92
90
93
91
Use the implied first-person tense where possible and natural. For example, "Looking for your next Adventure Works trip" implies that someone is doing the looking, but does not use the word "I" to specify.
94
92
95
-
Use some variation to help make your app sound more natural. Provide different versions of your TTS and GUI strings to effectively say the same thing. For example, "What movie do you wanna see?" could have alternatives like "What movie would you like to watch?". People don’t say the same thing the exact same way every time. Just make sure to keep your TTS and GUI versions in sync.
93
+
Use some variation to help make your app sound more natural. Provide different versions of your TTS and GUI strings to effectively say the same thing. For example, "What movie do you wanna see?" could have alternatives like "What movie would you like to watch?". People don't say the same thing the exact same way every time. Just make sure to keep your TTS and GUI versions in sync.
96
94
97
95
Use phrases like "OK" and "Alright" in your responses judiciously. While they can provide acknowledgment and a sense of progress, they can also get repetitive if used too often and without variation.
98
96
99
97
> [!NOTE]
100
98
> Use acknowledgment phrases in TTS only. Due to the limited space on the **Cortana** canvas, don't repeat them in the corresponding GUI strings.
101
99
102
-
Use contractions in your responses for more natural interactions and additional space saving on the **Cortana** canvas. For example," I can’t find that movie" instead of "I was unable to find that movie". Write for the ear, not the eye.
100
+
Use contractions in your responses for more natural interactions and additional space saving on the **Cortana** canvas. For example," I can't find that movie" instead of "I was unable to find that movie". Write for the ear, not the eye.
103
101
104
102
Use language that the system understands. Users tend to repeat the terms they are presented with. Know what you display.
105
103
@@ -166,7 +164,7 @@ Here are the steps outlined in this image:
166
164
1. The user taps the microphone to initiate **Cortana**.
167
165
2. The user says "Cancel my Adventure Works trip to Vegas" to launch the **Adventure Works** app in the background. The app uses both **Cortana** speech and canvas to interact with the user.
168
166
3.**Cortana** transitions to a handoff screen that gives the user acknowledgment feedback ("I'll get Adventure Works on that."), a status bar, and a cancel button.
169
-
4. In this case, the user has multiple trips that match the query, so the app provides a disambiguation screen that lists all the matching results and asks, “Which one do you wanna cancel?”
167
+
4. In this case, the user has multiple trips that match the query, so the app provides a disambiguation screen that lists all the matching results and asks, "Which one do you wanna cancel?"
170
168
5. The user specifies the "Vegas Tech Conference" item.
171
169
6. As the cancellation cannot be undone, the app provides a confirmation screen that asks the user to confirm their intent.
172
170
7. The user says "Yes".
@@ -192,11 +190,11 @@ Use present tense.
192
190
193
191
Use an action verb that confirms what task is initiating and reference the specific entity.
194
192
195
-
Use a generic verb that doesn't commit to the requested, incomplete action. For example, "Looking for your trip" instead of "Canceling your trip". In this case, if no results are returned the user doesn't hear something like "Cancelling your trip to Las Vegas… I couldn’t find a trip to Las Vegas".
193
+
Use a generic verb that doesn't commit to the requested, incomplete action. For example, "Looking for your trip" instead of "Canceling your trip". In this case, if no results are returned the user doesn't hear something like "Cancelling your trip to Las Vegas… I couldn't find a trip to Las Vegas".
196
194
197
-
Be clear that the task hasn’t already taken place if the app still needs to resolve the entity requested. For example, notice how we say “Looking for your trip” instead of “Cancelling your trip” because zero or more trips can be matched, and we don’t know the result yet.
195
+
Be clear that the task hasn't already taken place if the app still needs to resolve the entity requested. For example, notice how we say "Looking for your trip" instead of "Cancelling your trip" because zero or more trips can be matched, and we don't know the result yet.
198
196
199
-
The GUI and TTS strings can be the same, but don’t need to be. Try to keep the GUI string short to avoid truncation and duplication of other visual assets.
197
+
The GUI and TTS strings can be the same, but don't need to be. Try to keep the GUI string short to avoid truncation and duplication of other visual assets.
200
198
201
199
| TTS | GUI |
202
200
| --- | --- |
@@ -207,7 +205,7 @@ The GUI and TTS strings can be the same, but don’t need to be. Try to keep the
207
205
208
206
:::image type="content" source="images/cortana/e2e-canceltrip-progress.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip progress":::*AdventureWorks "Cancel trip" progress*
209
207
210
-
When a task takes a while between steps, your app needs to step in and update the user on what’s happening on a progress screen. The app icon is displayed, and you must provide both GUI and TTS progress strings to indicate that the task is underway.
208
+
When a task takes a while between steps, your app needs to step in and update the user on what's happening on a progress screen. The app icon is displayed, and you must provide both GUI and TTS progress strings to indicate that the task is underway.
211
209
212
210
You should provide a link to your app with launch parameters to start the app in the appropriate state. This lets the user view or complete the task themselves. **Cortana** provides the link text (such as, "Go to Adventure Works").
213
211
@@ -240,7 +238,7 @@ Use an action verb that confirms the task is underway.
240
238
241
239
:::image type="content" source="images/cortana/e2e-canceltrip-confirmation.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip confirmation":::*AdventureWorks "Cancel trip" confirmation*
242
240
243
-
Some tasks can be implicitly confirmed by the nature of the user’s command; others are potentially more sensitive and require explicit confirmation. Here are some guidelines for when to use explicit vs. implicit confirmation.
241
+
Some tasks can be implicitly confirmed by the nature of the user's command; others are potentially more sensitive and require explicit confirmation. Here are some guidelines for when to use explicit vs. implicit confirmation.
244
242
245
243
Both GUI and TTS strings on the confirmation screen are specified by your app, and the app icon, if provided, is shown instead of the **Cortana** avatar.
246
244
@@ -249,14 +247,14 @@ After the customer responds to the confirmation, your application must provide t
249
247
Use explicit when...
250
248
251
249
- Content is leaving the user (such as, a text message, email, or social post)
252
-
- An action can’t be undone (such as, making a purchase or deleting something)
250
+
- An action can't be undone (such as, making a purchase or deleting something)
253
251
- The result could be embarrassing (such as, calling the wrong person)
254
252
- More complex recognition is required (such as, open-ended transcription)
255
253
256
254
Use implicit when...
257
255
258
256
- Content is saved for the user only (such as, a note-to-self)
259
-
- There’s an easy way to back out (such as, turning an alarm on or off)
257
+
- There's an easy way to back out (such as, turning an alarm on or off)
260
258
- The task needs to be quick (such as, quickly capturing an idea before forgetting)
261
259
- Accuracy is high (such as, a simple menu)
262
260
@@ -332,8 +330,8 @@ If the entity is shown, or it has been referenced on prior turn, only reference
0 commit comments