我似乎无法向 Cortana 添加命令
I can't seem to add commands to Cortana
我最近安装了 Windows 10,作为一名程序员,我在想也许我可以对 Cortana 进行一些个性化设置。
我已经完成了 mdsn 告诉我的事情,并且我尝试创建一个尽可能简单的测试项目,我可以从中进行迭代。
我查看了很多主题,但找不到我的问题。
我觉得奇怪的是,我可以在 Cortana 中找到我的命令,但 Cortana 似乎不会在我的应用程序中触发它们。它只是带来 Bing 搜索。 :(
这是我的命令被注册的证据。
代码如下:
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>
我也看了,我的地区配置为美国,语言配置为英语。
您发布的代码是正确的,使用您的代码我可以从 Cortana 启动应用程序。 Cortana 无法启动您的应用程序的一个可能原因可能是您没有在 VCD 文件中设置 CommandPrefix 或 AppName 元素。
尽管这两个是 CommandSet 元素的可选子元素。但是他们为应用程序指定了一个用户友好的名称,用户在发出语音命令时可以说出该名称。这对于名称较长或难以发音的应用程序很有用。如果我们不设置 CommandPrefix 或 AppName 元素,则需要使用应用程序名称和语音命令才能在 Cortana 中执行。对于您的情况,根据您发布的图片,完整的命令应该是 "EatEveryday, Eat everyday".
EatEveryday
不是英文单词。 Cortana 很难识别它。在大多数情况下,您的命令将被识别为 "eat everyday eat everyday"。由于Cortana中没有注册名为"eat"或"eat everyday"的应用程序,Cortana会使用Bing Search进行搜索。
要测试您注册的语音命令,您可以尝试在 Cortana 中键入 "EatEveryday Eat everyday",如下所示:
这应该能够启动您的应用程序。为了获得更好的用户体验,我建议您在 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 application eat everyday" 启动应用程序。
我最近安装了 Windows 10,作为一名程序员,我在想也许我可以对 Cortana 进行一些个性化设置。 我已经完成了 mdsn 告诉我的事情,并且我尝试创建一个尽可能简单的测试项目,我可以从中进行迭代。 我查看了很多主题,但找不到我的问题。 我觉得奇怪的是,我可以在 Cortana 中找到我的命令,但 Cortana 似乎不会在我的应用程序中触发它们。它只是带来 Bing 搜索。 :(
这是我的命令被注册的证据。
代码如下:
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>
我也看了,我的地区配置为美国,语言配置为英语。
您发布的代码是正确的,使用您的代码我可以从 Cortana 启动应用程序。 Cortana 无法启动您的应用程序的一个可能原因可能是您没有在 VCD 文件中设置 CommandPrefix 或 AppName 元素。
尽管这两个是 CommandSet 元素的可选子元素。但是他们为应用程序指定了一个用户友好的名称,用户在发出语音命令时可以说出该名称。这对于名称较长或难以发音的应用程序很有用。如果我们不设置 CommandPrefix 或 AppName 元素,则需要使用应用程序名称和语音命令才能在 Cortana 中执行。对于您的情况,根据您发布的图片,完整的命令应该是 "EatEveryday, Eat everyday".
EatEveryday
不是英文单词。 Cortana 很难识别它。在大多数情况下,您的命令将被识别为 "eat everyday eat everyday"。由于Cortana中没有注册名为"eat"或"eat everyday"的应用程序,Cortana会使用Bing Search进行搜索。
要测试您注册的语音命令,您可以尝试在 Cortana 中键入 "EatEveryday Eat everyday",如下所示:
这应该能够启动您的应用程序。为了获得更好的用户体验,我建议您在 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 application eat everyday" 启动应用程序。