我最近安装了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>
我也看了,我的区域配置为美国,语言配置为英语。
答案 0 :(得分:1)
您发布的代码是正确的,我可以使用您的代码从Cortana启动应用程序。 Cortana无法启动您的应用程序的一个可能原因可能是您没有在VCD文件中设置 CommandPrefix 或 AppName 元素。
虽然这两个是CommandSet元素的可选子元素。但是它们为应用程序指定了用户友好名称,用户在发出语音命令时可以说出来。这对于名称很长或难以发音的应用程序非常有用。如果我们不设置 CommandPrefix 或 AppName 元素,则需要使用应用程序名称和voice命令在Cortana中执行。对于您的情况,根据您发布的图像,完整的命令应该是“EatEveryday,每天吃”。
EatEveryday
不是英文单词。 Cortana很难识别它。在大多数情况下,你的命令将被认为是“每天吃每天吃”。由于没有在Cortana注册的应用程序,其名称为“吃”或“每天都吃”,Cortana将带Bing搜索进行搜索。
要测试您已注册的语音命令,您可以尝试在Cortana中键入“EatEveryday Eat daily daily”,如下所示:
这应该可以启动您的应用。为了获得更好的用户体验,我建议您在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”命令启动应用程序。