我似乎无法向Cortana添加命令

时间:2016-06-19 15:23:17

标签: c# win-universal-app windows-10 uwp cortana

我最近安装了Windows 10并且是一名程序员,我想也许我可以对Cortana进行个性化设置。 我已经完成了mdsn告诉我的事情,并且我尝试创建一个尽可能简单的测试项目,我可以从中进行迭代。 我查看了很多主题,但我找不到问题。 我觉得奇怪的是我可以在Cortana中找到我的命令,但Cortana似乎并没有在我的应用程序中触发它们。它只是带来Bing搜索。 :(

以下是我的命令已注册的证明。 Cortana Command Added

以下是代码:

protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
    ---------------------------

    try
    {
        // Install the main VCD. 
        StorageFile vcdStorageFile =
         await Package.Current.InstalledLocation.GetFileAsync(
           @"TestCommands.xml");

        await Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.
         InstallCommandDefinitionsFromStorageFileAsync(vcdStorageFile);
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("Installing Voice Commands Failed: " + ex.ToString());
    }
}

protected override void OnActivated(IActivatedEventArgs e)
{
    // Handle when app is launched by Cortana
    if (e.Kind == ActivationKind.VoiceCommand)
    {
        System.Diagnostics.Debug.WriteLine("It worked!!!");
    }
    base.OnActivated(e);
}

和xml:

<?xml version="1.0" encoding="utf-8" ?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
    <CommandSet xml:lang="en-us" Name="EatEverydayCommandSet_en-us">
        <Example>Eat everyday</Example>

        <Command Name="Eat_Every_Day">
            <Example>Eat everyday</Example>
            <ListenFor>Eat everyday</ListenFor>
            <Feedback>Eating</Feedback>
            <Navigate />
        </Command>
    </CommandSet>
</VoiceCommands>

我也看了,我的区域配置为美国,语言配置为英语。

1 个答案:

答案 0 :(得分:1)

您发布的代码是正确的,我可以使用您的代码从Cortana启动应用程序。 Cortana无法启动您的应用程序的一个可能原因可能是您没有在VCD文件中设置 CommandPrefix AppName 元素。

虽然这两个是CommandSet元素的可选子元素。但是它们为应用程序指定了用户友好名称,用户在发出语音命令时可以说出来。这对于名称很长或难以发音的应用程序非常有用。如果我们不设置 CommandPrefix AppName 元素,则需要使用应用程序名称和voice命令在Cortana中执行。对于您的情况,根据您发布的图像,完整的命令应该是“EatEveryday,每天吃”

EatEveryday不是英文单词。 Cortana很难识别它。在大多数情况下,你的命令将被认为是“每天吃每天吃”。由于没有在Cortana注册的应用程序,其名称为“吃”或“每天都吃”,Cortana将带Bing搜索进行搜索。

要测试您已注册的语音命令,您可以尝试在Cortana中键入“EatEveryday Eat daily daily”,如下所示:
enter image description here

这应该可以启动您的应用。为了获得更好的用户体验,我建议您在VCD文件中设置 CommandPrefix AppName 元素。例如,使用以下VCD文件。

<?xml version="1.0" encoding="utf-8" ?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
  <CommandSet xml:lang="en-us" Name="EatEverydayCommandSet_en-us">
    <CommandPrefix>Eat Application</CommandPrefix>
    <Example>Eat everyday</Example>

    <Command Name="Eat_Every_Day">
      <Example>Eat everyday</Example>
      <ListenFor>Eat everyday</ListenFor>
      <Feedback>Eating</Feedback>
      <Navigate />
    </Command>
  </CommandSet>
</VoiceCommands>

然后使用“eat app eat daily”命令启动应用程序。