2016-06-19 12 views
0

Ich habe vor kurzem Windows 10 installiert und ein Programmierer war ich dachte, vielleicht kann ich Cortana ein wenig personalisieren. Ich habe getan, was mdsn mir gesagt hat und ich habe versucht, ein Testprojekt so einfach wie möglich zu erstellen, von dem ich iterieren kann. Ich habe über viele Themen nachgedacht, aber ich konnte mein Problem nicht finden. Was ich seltsam finde, ist, dass ich meine Befehle in Cortana finden kann, aber Cortana scheint sie nicht in meiner App auszulösen. Es bringt nur die Bing-Suche. :(Ich kann nicht scheinen, um Cortana Befehle hinzuzufügen

Hier ist der Beweis, dass mein Befehl registriert wurde Cortana Command Added

Hier ist der Code:.

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); 
} 

Und das 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> 

Auch sah ich und ich habe meine Region auf United States und Language to English konfiguriert

+0

Vielleicht komisch zu sagen, aber haben Sie versucht, mit der Cortana App zu sprechen, indem Sie den Cortana-Mikrofon-Knopf oder "Hey, Cortana" vor dem sagen "Eat Everyday" - auch versuchen, es zu ändern, um zu hören "Iss jeden Tag "Es könnte sein, dass Sie nach einer anderen Aussprache für das Wort hören, das Sie sagen. – RoguePlanetoid

Antwort

1

Der Code, den Sie gepostet haben, ist richtig und mit Ihrem Code kann ich die App von Cortana aus starten. Ein möglicher Grund, dass Cortana Ihre App nicht starten kann, ist möglicherweise, dass Sie CommandPrefix oder AppName Element in Ihrer VCD-Datei nicht festgelegt haben.

Diese beiden sind zwar optionale untergeordnete Elemente des CommandSet-Elements. Sie geben jedoch einen benutzerfreundlichen Namen für eine App an, die ein Benutzer sprechen kann, wenn er einen Sprachbefehl gibt. Dies ist nützlich für Apps mit langen oder schwer auszusprechenden Namen. Wenn wir CommandPrefix oder AppName nicht festlegen, müssen Sie den App-Namen mit dem Sprachbefehl verwenden, um in Cortana auszuführen. Für Ihren Fall sollte gemäß dem von Ihnen geposteten Bild der vollständige Befehl "EatEveryday, Eat alltags" sein.

EatEveryday ist kein Wort auf Englisch. Es ist schwer für Cortana, es zu erkennen. In den meisten Fällen wird Ihr Befehl als "essen jeden Tag essen jeden Tag" erkannt. Da in Cortana keine App registriert ist, deren Name "essen" oder "jeden Tag essen" ist, wird Cortana Bing Search zur Suche bringen.

den Sprachbefehl testen Sie sich registriert haben, können Sie versuchen, „jeden Tag EatEveryday Essen“ in Cortana zu geben wie folgt vor:
enter image description here

Dies sollte Ihre App starten können. Und für bessere Benutzererlebnisse würde ich vorschlagen, dass Sie das CommandPrefix oder AppName Element in Ihrer VCD-Datei festlegen. Zum Beispiel mit folgender VCD-Datei.

<?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> 

Und dann mit dem Befehl "essen Anwendung jeden Tag essen", um die App zu starten.

+0

JA JA JA. Danke vielmals. Ich wusste nicht, dass ich ein Präfix haben musste. Haben Sie eine Idee, ob es einen Weg gibt, es ohne CommandPrefix zu tun, um nur "Iss jeden Tag" zu sagen? – DoNNNy

+0

@DoNNNy Ich fürchte, du kannst nur sagen "Iss jeden Tag". Wenn Sie CommandPrefix nicht verwenden, können Sie den AppName wie im offiziellen [Cortana Voice Command Sample] (https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CortanaVoiceCommand) verwenden. Oder wenn Sie nicht alle verwenden, müssen Sie stattdessen den Namen Ihrer App verwenden, etwa "EatEveryday, Eat ally". –