Come modificare in modo dinamico gli elenchi frasi VCD (Voice Command Definition) (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Informazioni su come accedere e aggiornare l'elenco delle frasi supportate (elementi PhraseList) in un file VCD usando il risultato del riconoscimento vocale in fase di esecuzione.

La modifica dinamica di un elenco frasi in fase di esecuzione può essere utile se il comando vocale è specifico di un'attività che implica l'uso di un qualche tipo di preferito definito dall'utente o di dati dell'app transitori.

Supponiamo ad esempio di avere un'app per i viaggi in cui gli utenti possono immettere destinazioni e di voler consentire agli utenti di avviare l'app pronunciando il nome dell'app seguito da "Mostra il viaggio a <destinazione>". Non è necessario creare un elemento ListenFor per ogni possibile destinazione. Puoi invece popolare in modo dinamico PhraseList in fase di esecuzione con le destinazioni create dall'utente. Nell'elemento ListenFor stesso puoi specificare qualcosa come: <ListenFor> Show trip to {destination} </ListenFor>, dove "destination" è il valore dell'attributo Label per PhraseList.

Vedi il riferimento a VCD elements and attributes v1.2 per altre info su PhraseList e altri elementi VCD.

Prerequisiti

Questo argomento si basa su Guida introduttiva: Comandi vocali con Cortana. Continueremo a fornire una dimostrazione delle funzionalità con un'app per la pianificazione e la gestione dei viaggi denominata Adventure Works.

Per completare questa esercitazione ti consigliamo di leggere gli argomenti seguenti per acquisire familiarità con le tecnologie descritte:

Istruzioni

Passaggio 1: Identificare il comando

Per aggiornare un elemento PhraseList nel file VCD, ottieni l'elemento CommandSet che contiene l'elenco frasi. Usa l'attributo Name dell'elemento CommandSet (Name deve essere univoco nel file VCD) come chiave per accedere alla proprietà VoiceCommandManager.installedCommandSets property e ottenere il riferimento voiceCommandSet.

Passaggio 2: Sostituire l'elenco frasi

Dopo aver identificato il comando impostato, ottieni un riferimento all'elenco frasi che desideri modificare e chiama il metodo setPhraseListAsync usando l'attributo Label dell'elemento PhraseList e una matrice di stringhe come nuovo contenuto dell'elenco frasi.

Nota  Se modifichi un elenco frasi, lo sostituisci interamente. Per inserire nuovi elementi in un elenco frasi, devi specificare sia gli elementi esistenti, sia quelli nuovi nella chiamata a setPhraseListAsync.

 

In questo caso, il file VCD definisce un elemento Command"showTripToDestination" con un elemento PhraseList che definisce tre opzioni per la selezione di una destinazione nella nostra app per i viaggi Adventure Works. Quando l'utente salva ed elimina destinazioni nell'app, l'app aggiorna le opzioni in PhraseList.

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.1">
  <CommandSet xml:lang="en-us" Name="AdventureWorksCommandSet_en-us">
    <CommandPrefix> Adventure Works, </CommandPrefix>
    <Example> Show trip to London </Example>

    <Command Name="showTripToDestination">
      <Example> show trip to London  </Example>
      <ListenFor> show trip to {destination} </ListenFor>
      <Feedback> Showing trip to {destination} </Feedback>
      <Navigate/>
    </Command>

    <PhraseList Label="destination">
      <Item> London </Item>
      <Item> Dallas </Item>
      <Item> New York </Item>
    </PhraseList>

  </CommandSet>

<!-- Other CommandSets for other languages -->

</VoiceCommands>

Ecco come aggiornare l'elemento PhraseList illustrato nell'esempio precedente con una destinazione aggiuntiva, Phoenix.

N/A

Osservazioni

L'uso di un elemento PhraseList per vincolare il riconoscimento è appropriato per un set di parole relativamente ridotto. Quando il set di parole è troppo grande (ad esempio, con centinaia di parole) o non deve essere vincolato, usa l'elemento PhraseTopic e un elemento Subject per rifinire la rilevanza dei risultati del riconoscimento vocale al fine di migliorare la scalabilità.

Nel nostro esempio, abbiamo un elemento PhraseTopic con "Search" come Scenario, ulteriormente rifinito da "City\State" come Subject.

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.1">
  <CommandSet xml:lang="en-us" Name="AdventureWorksCommandSet_en-us">
    <CommandPrefix> Adventure Works, </CommandPrefix>
    <Example> Show trip to London </Example>

    <Command Name="showTripToDestination">
      <Example> show trip to London  </Example>
      <ListenFor> show trip to {destination} </ListenFor>
      <Feedback> Showing trip to {destination} </Feedback>
      <Navigate/>
    </Command>

    <PhraseList Label="destination">
      <Item> London </Item>
      <Item> Dallas </Item>
      <Item> New York </Item>
    </PhraseList>

    <PhraseTopic Label="destination" Scenario="Search">
      <Subject>City/State</Subject>
    </PhraseTopic>

  </CommandSet>

Argomenti correlati

Interazioni con Cortana

Avviare un'app in primo piano con i comandi vocali di Cortana

Avviare un'app in background con i comandi vocali di Cortana

VCD elements and attributes v1.2

Progettisti

Linee guida per la progettazione di Cortana