2016-06-19 7 views
0

Я недавно установил Windows 10 и был программистом, о котором я думал, может быть, я смогу персонализировать Cortana. Я сделал то, что mdsn сказал мне, и я попытался создать тестовый проект настолько простым, насколько это возможно, из которого я могу повторить. Я просмотрел много тем, но я не мог найти свою проблему. Что я нахожу странным, так это то, что я могу найти свои команды внутри Cortana, но Cortana, похоже, не запускает их внутри моего приложения. Он просто приносит Bing Search. :(Я не могу добавить команды в Cortana

Вот доказательство того, что моя команда была зарегистрирована 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> 

Также я посмотрел и я мой регион настроен на Соединенные Штаты и язык на английский.

+0

Может показаться странным сказать, но вы попробовали поговорить с приложением Cortana, выбирая кнопку микрофона Cortana или говоря «Эй, Кортана», прежде чем говорить «Ешьте каждый день» - также можете попробовать изменить его, чтобы слушать «Ешьте каждый день» ", поскольку он может слушать другое произношение для этого слова, которое вы говорите – RoguePlanetoid

ответ

1

Код, который вы опубликовали, является правильным, и с помощью вашего кода я могу запустить приложение из Cortana. Одна из возможных причин, по которым Cortana не может запустить ваше приложение, может заключаться в том, что вы не установили CommandPrefix или Элемент AppName в вашем файле VCD.

Хотя эти два являются необязательными дочерними элементами элемента CommandSet. Но они указывают удобное для пользователя имя для приложения, которое пользователь может говорить при предоставлении голосовой команды. Это полезно для приложений с именами, которые долго или трудно произносить. Если мы не установили CommandPrefix или Элемент AppName, необходимо использовать имя приложения с помощью голосовой команды для выполнения в Cortana. Для вашего случая, в соответствии с изображением, которое вы отправили, полная команда должна быть «EatEveryday, Ешьте каждый день».

EatEveryday не является словом на английском языке. Кортане трудно это распознать. В большинстве случаев команда будет распознана как «каждый день есть каждый день». Поскольку в Кортане не зарегистрировано ни одного приложения, чье имя «есть» или «есть каждый день», Cortana принесет Bing Search для его поиска.

Чтобы проверить голосовую команду вы зарегистрированы, вы можете попробовать ввести «EatEveryday Ешьте каждый день» в Cortana, как следующее:
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> 

И затем с помощью команды «есть приложение есть каждый день», чтобы запустить приложение.

+0

ДА ДА ДА. Большое спасибо. Я не понимал, что должен иметь префикс. Есть ли у вас какие-либо идеи, если есть способ сделать это без CommandPrefix, чтобы сказать только «Ешьте каждый день». – DoNNNy

+0

@DoNNNy Боюсь, вы можете только сказать «Ешьте каждый день». Если вы не используете CommandPrefix, вы можете использовать AppName, как в официальном примере [голосовой команды Cortana] (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CortanaVoiceCommand). Или, если вы не используете их все, вместо этого вы должны использовать свое имя приложения, например, «EatEveryday, Eat Everyone». –