Freigeben über


Unterstützen von Sprachbefehlen in natürlicher Sprache in Cortana

Warnung

Diese Funktion wird seit dem Windows 10 Mai 2020 Update (Version 2004, Codename „20H1“) nicht mehr unterstützt.

Erweitern Sie Cortana mit flexibleren und natürlichen Sprachbefehlen, mit denen ein Benutzer den Namen Ihrer App an einer beliebigen Stelle im Befehl sagen kann.

Wenn Sie Sprachbefehle verwenden, um Cortana mit Funktionen aus Ihrer App zu erweitern, muss der Benutzer sowohl die App als auch den auszuführenden Befehl oder die Auszuführende Funktion angeben. Dies erfolgt in der Regel durch Ankündigung des App-Namens am Anfang oder ende des Sprachbefehls. Beispiel: "Adventure Works, add a new trip to Las Vegas."

Die Angabe des Anwendungsnamens auf diese Weise kann jedoch ungünstig, stilisiert oder gar nicht sinnvoll klingen. In vielen Fällen ist die Möglichkeit, den App-Namen an anderer Stelle im Befehl zu sagen, komfortabler und natürlicher und trägt dazu bei, die Interaktion für den Benutzer wesentlich intuitiver und ansprechender zu gestalten. Unser vorheriges Beispiel" "Adventure Works, eine neue Reise nach Las Vegas hinzufügen" könnte als "Hinzufügen einer neuen Adventure Works-Reise nach Las Vegas" oder "Mit Adventure Works eine neue Reise nach Las Vegas hinzufügen" umgeschrieben werden.

Sie können Ihre Sprachbefehle so einrichten, dass der App-Name unterstützt wird:

  • Präfix – vor dem Befehlsausdruck
  • Infix - innerhalb des Befehlsausdrucks
  • Suffix - nach dem Befehlsausdruck

Tipp

Voraussetzungen

Dieses Thema basiert auf der Aktivierung einer Hintergrund-App in Cortana mithilfe von Sprachbefehlen. Wir zeigen weiterhin Features mit einer Reiseplanungs- und Verwaltungs-App namens Adventure Works.

Wenn Sie noch nicht mit der Entwicklung von Universelle Windows-Plattform(UWP)-Apps vertraut sind, schauen Sie sich diese Themen an, um sich mit den hier erläuterten Technologien vertraut zu machen.

Richtlinien für die Benutzeroberfläche

Informationen zum Integrieren Ihrer App in Cortana- und Sprachinteraktionen finden Sie in den Entwurfsrichtlinien für Cortana und Spracherkennung.

Angeben eines AppName-Elements in der VCD

Das AppName-Element wird verwendet, um einen benutzerfreundlichen Namen für eine App in einem Sprachbefehl anzugeben.

<AppName>Adventure Works</AppName>

Geben Sie an, wo der App-Name im Sprachbefehl gesprochen werden kann.

Das ListenFor-Element verfügt über ein RequireAppName-Attribut , das angibt, wo der App-Name im Sprachbefehl angezeigt werden kann. Dieses Attribut unterstützt vier Werte.

  1. BeforePhrase

    Standard.

    Gibt an, dass Benutzer Ihren App-Namen vor dem Befehlsausdruck sagen müssen.

    Hier hört Cortana auf "Adventure Works when is my trip to Las Vegas".

    <ListenFor RequireAppName="BeforePhrase"> show [my] trip to {destination} </ListenFor>
    
  2. AfterPhrase

    Gibt an, dass Benutzer Ihren App-Namen nach dem Befehlsausdruck sagen müssen.

    Eine lokalisierte Begriffsliste mit präpositionalen Konjunktionen wird vom System bereitgestellt. Dazu gehören Ausdrücke wie "using", "with" und "on".

    Hier lauscht Cortana auf Befehle wie "Meine nächste Reise nach Las Vegas auf Adventure Works anzeigen" und "Meine nächste Reise mit Adventure Works nach Las Vegas anzeigen".

    <ListenFor RequireAppName="AfterPhrase">show [my] next trip to {destination} </ListenFor>
    
  3. BeforeOrAfterPhrase-

    Gibt an, dass Benutzer Ihren App-Namen vor oder nach dem Befehlsausdruck sagen müssen.

    Für die Suffixversion wird vom System eine lokalisierte Begriffsliste mit präpositionalen Konjunktionen bereitgestellt. Dazu gehören Ausdrücke wie "using", "with" und "on".

    Hier lauscht Cortana auf Befehle wie "Adventure Works, zeige meine nächste Reise nach Las Vegas" oder "Meine nächste Reise nach Last Vegas auf Adventure Works anzeigen".

    <ListenFor RequireAppName="BeforeOrAfterPhrase">show [my] next trip to {destination}</ListenFor>
    
  4. Explizit angegeben

    Gibt an, dass Benutzer Ihren App-Namen genau an der Stelle sagen müssen, die Sie im Befehlsausdruck angeben. Der Benutzer muss den App-Namen weder vor noch nach dem Ausdruck sagen.

    Sie müssen explizit auf Ihren App-Namen verweisen, indem Sie das {builtin:AppName} -Tag verwenden.

    Hier lauscht Cortana auf Befehle wie "Adventure Works, zeige meine nächste Reise nach Las Vegas" oder "Meine nächste Adventure Works-Reise nach Las Vegas anzeigen".

    <ListenFor RequireAppName="ExplicitlySpecified">show [my] next {builtin:AppName} trip to {destination} </ListenFor>
    

Sonderfälle

Wenn Sie ein ListenFor-Element deklarieren, bei dem RequireAppName entweder "AfterPhrase" oder "ExplicitlySpecified" lautet, müssen Sie sicherstellen, dass bestimmte Anforderungen erfüllt sind:

  1. {builtin:AppName} muss einmal und nur einmal angezeigt werden, wenn RequireAppName "ExplicitlySpecified" lautet.

    Mit diesem Wert kann das System nicht ableiten, wo der App-Name im Sprachbefehl angezeigt werden kann. Sie müssen den Speicherort explizit angeben.

  2. Sie können keinen Sprachbefehl mit einem PhraseTopic-Element beginnen, das in der Regel für die Spracherkennung für große Vokabular verwendet wird. Mindestens ein Wort muss ihm vorangehen.

    Dies trägt dazu bei, die Wahrscheinlichkeit zu minimieren, dass Cortana Ihre App startet, wenn ein Befehl Ihren App-Namen oder einen Teil davon an einer beliebigen Stelle in der Äußerung enthält.

    Hier ist eine ungültige Deklaration, die dazu führen kann, dass Cortana die Adventure Works-App startet, wenn der Benutzer etwas wie "Anzeigen von Rezensionen für Kinect Adventure Works" sagt.

    <ListenFor RequireAppName="ExplicitlySpecified">{searchPhrase} {builtin:AppName}</ListenFor>
    
  3. Es muss mindestens zwei Wörter in der ListenFor-Zeichenfolge vorhanden sein, neben dem App-Namen und verweisen auf PhraseTopic-Elemente .

    Ähnlich wie bei 2 müssen Sie sicherstellen, dass Ihre Befehle ausreichend phonetische Inhalte enthalten, um die Wahrscheinlichkeit zu minimieren, dass Ihre App unbeabsichtigt gestartet wird.

    Auf diese Weise können Sie Ihre Anwendung für den bestmöglichen Erfolg einrichten, damit Ihre Anwendung nicht fälschlicherweise gestartet wird, wenn der Benutzer beispielsweise "Find Kinect Adventure works" sagt.

    Hier sind ungültige Deklarationen, die dazu führen können, dass Cortana die Adventure Works-App startet, wenn der Benutzer etwas wie "Hey Adventure Works" oder "Kinect Adventure Works suchen" sagt.

    <ListenFor RequireAppName="ExplicitlySpecified">Hey {builtin:AppName}</ListenFor>
    <ListenFor RequireAppName="ExplicitlySpecified">Find {searchPhrase} {builtin:AppName}</ListenFor>
    

Hinweise

Die Unterstützung weiterer Variationen, wie ein Sprachbefehl von einem Benutzer in Cortana ausgesprochen werden kann, erhöht auch die allgemeine Benutzerfreundlichkeit Ihrer App.

Vermeiden Sie "Hey [App-Name]" als AppName. Benutzer sagen viel eher "Hey Cortana", um Cortana über die Sprachaktivierung aufzurufen, und wenn "Hey [App-Name]" in der Äußerung nicht natürlich klingt. Beispiel: "Hey Cortana, meine nächste Reise nach Las Vegas auf Hey Adventure Works zeigen".

Erwägen Sie das Hinzufügen von Infix-/Suffixvariationen zu Ihren vorhandenen Sprachbefehlen. Wie wir hier gezeigt haben, ist es nicht erforderlich, ihrem vorhandenen ListenFor-Element ein zusätzliches Attribut hinzuzufügen und Suffixvarianten zu unterstützen. Es fühlt sich viel natürlicher an, "Hey Cortana, meine nächste Reise nach Las Vegas auf Adventure Works zeigen" als "Hey Cortana, Adventure Works, zeigen meine nächste Reise nach Las Vegas".

Erwägen Sie die Verwendung Ihres App-Namens als Präfix in Fällen, in denen der Sprachbefehl mit vorhandenen Cortana-Funktionen (Anrufe, Messaging usw.) in Konflikt steht. Beispiel: "Adventure Works, Nachricht [Reisebüro] über Las Vegas Reise".

Vollständiges Beispiel

Hier ist eine VCD-Datei, die verschiedene Möglichkeiten veranschaulicht, um Sprachbefehle in natürlicherer Sprache bereitzustellen.

Hinweis

Es ist gültig, mehrere ListenFor-Elemente mit jeweils einem anderen RequireAppName-Attributwert zu haben.

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.1">
  <CommandSet xml:lang="en-us" Name="commandSet_en-us">
    <AppName>Adventure Works</AppName>
    <Example> When is my trip to Las Vegas? </Example>
    <Command Name="whenIsTripToDestination">
      <Example> When is my trip to Las Vegas?</Example>
      <ListenFor RequireAppName="BeforePhrase">
        when is my] trip to {destination} </ListenFor>

      <!-- This ListenFor command will set up Cortana to accept commands like 
           "Show my next trip to Las Vegas on Adventure Works"; "Show my next 
           trip to Las Vegas using Adventure Works" -->
      <ListenFor RequireAppName="AfterPhrase">
        show [my] next trip to {destination} </ListenFor>

      <!-- This ListenFor command will set up Cortana to accept commands when 
           the user specifies your app name either before or after the command. 
           "Adventure Works, show my next trip to Las Vegas"; 
           "Show my next trip to Last Vegas on Adventure works" -->
      <ListenFor RequireAppName="BeforeOrAfterPhrase">
        show [my] next trip to {destination} </ListenFor>

      <!-- This ListenFor command will set up Cortana to accept commands 
           when the user specifies your app name inline. 
           "Show my next Adventure Works trip to Las Vegas" -->
      <ListenFor RequireAppName="ExplicitlySpecified">
        show [my] next {builtin:AppName} trip to {destination} </ListenFor>

      <Feedback> Looking for trip to {destination} </Feedback>
      <Navigate />
    </Command>
    <PhraseList Label="destination">
      <Item> Las Vegas </Item>
      <Item> Dallas </Item>
      <Item> New York </Item>
    </PhraseList>
  </CommandSet>
  <!-- Other CommandSets for other languages -->
</VoiceCommands>