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 has been resolved 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

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

The next update of Windows resolves this issue. To work around this issue, ensure your SSML contains proper punctuations 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.

"Coming soon" displayed on the Cortana dashboard

This occurs when signed in with an organizational account that uses AAD. Sign-out and sign back in using a Microsoft account (MSA).

Known Bot Framework issues affecting skills

See the Bot Build SDK Issues tab on GitHub.

LuisDialog fails on skill launch

When Cortana launches skill without an utterance (for example, "Open <invocation name>", "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:

/// <summary>
/// Need to override the LuisDialog.MessageReceived method so it detects when the user invokes the skill without
/// specifying a phrase. For example, "Open Hotel Finder", or "Ask Hotel Finder". In these cases, the message receives an empty string.
/// </summary>
/// <param name="context"></param>
/// <param name="item"></param>
/// <returns></returns>
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);