Known Issues

Cortana Skills Kit is currently in preview. This document lists known issues, and if available, alternative solutions.

Cortana Skills only works when language is set to English (United States)

The public preview for Cortana is available for the en-US market only.

Cortana stops talking after 15 seconds or displays the message, "Unfortunately this skill won't work on this version of Windows"

Cortana in the Windows 10 Anniversary update (version 1607) limits speech to 15 seconds. This limit has been removed in the Windows 10 Creators update (version 1703). A workaround is to break your speech text into multiple responses. You can send multiple replies to a single user invocation, as long as the input hint of the first N-1 replies is IgnoringInput. The last reply must set the input hint to ExpectingInput (which automatically turns the microphone on), or AcceptingInput (which doesn't).

Long repetitive sentences without appropriate punctuation become garbled when spoken in the Windows 10 Creators Update (version 1703)

If you have long text that is repetitive, the speech output from Cortana may be garbled. For example:

This is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence this is a very long sentence.

Windows 10 Fall Creators Update (Version 1709) resolves this issue. To work around it, ensure your SSML contains proper punctuation, such as commas and periods.

Privacy policy and terms of use links don't work in permission card when deployed to self or group

When a skill is deployed to self or group, the privacy and terms of use links in the permission card don't work. The reason for this is that you are not required to specify these links until you publish your skill to world.

Spoken utterances sometimes have punctuations appended

Cortana will sometimes append punctuation, such as a period, to the end of a user's utterance. The speech recognition engine is capable of understanding multiple sentences in a single speech request. The engine may add a period to an utterance depending on how the utterance is spoken. Make sure that your language model is designed to handle this.

Unable to interrupt Cortana

Currently Cortana does not support user's interrupting her when she is speaking. She also ignores clicking on her canvas while she is speaking.

User email address not available on iOS and Android

Currently, the user's email address from the user's profile information is not available on iOS and Android.

Windows Phone does not support login

Currently, Cortana does not support logging into skills on Windows Phone. Log in using any other supported device first before using the skill on Windows Phone.

Unique invocation names fail to be recognized in default settings / self publish on Windows

Invocation grammars are tied to the user identity. Some identity information is cached by Cortana's agent and doesn't get cleared when you switch between MSA and AAD accounts. This information is not cleared by rebooting if fast start is enabled. The workaround is to open taskmgr, find SearchUI.exe in Details, and kill the process. The next invocation to Cortana will restart the agent with a clear identity cache, and load the correct grammars to recognize unique invocation names.

LuisDialog fails on skill launch

When Cortana launches a skill without an utterance (for example, "Open <invocation name>" or "Ask <invocation name>"), the activity.Text value is null. Passing the null text to LuisDialog throws an error. To work around this issue, override the MessageReceived method and add a null check as shown in the following example:

// V3
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
    // Check for empty query
    var message = await item;
    if (string.isNullOrEmpty(message.Text))
        // Return the Help/Welcome
        await Help(context, null);
        await base.MessageReceived(context, item);

For javascript, you can create a customer recognizer that maps an empty string to a help intent.