Insegnare a Cortana i comandi vocali in Windows Phone 8.1

di Matteo Tumiati, in Windows Phone 8.1, Universal App, WinRT,

Cortana è l'assistente personale creato da Microsoft che ritroviamo nei nostri Windows Phone, così come da Windows 10 ritroveremo nei nostri PC e tablet. Cortana è guidata sia da comandi scritti che da comandi dettati vocalmente e possiamo anche fare in modo di insegnare a Cortana dei comandi specifici per interagire con la nostra applicazione.
Ci basterà infatti creare un file XML con la lista dei comandi ed aggiungerlo alla nostra applicazione:

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">
  <CommandSet xml:lang="it-it">
    <CommandPrefix> Mia app, </CommandPrefix>
    <Example> mostrami viaggi per? </Example>

    <Command Name="showTripToDestination">
      <Example> mostra viaggi per Londra </Example>
      <ListenFor> mostra viaggi per {destination} </ListenFor>
      <Feedback> caricando i viaggi per {destination} </Feedback>
      <Navigate/>
    </Command>

    <PhraseList Label="destination">
      <Item> Londra </Item>
      <Item> Milano </Item>
      <Item> New York </Item>
    </PhraseList>
  </CommandSet>
</VoiceCommands>

In seguito quello che dobbiamo fare è registrare questo file XML all'avvio della nostra applicazione così da istruire Cortana che sarà in grado di interagire con la nostra app:

var storageFile = await StorageFile.GetFileFromApplicationUriAsync(
  new Uri("ms-appx:///myVCD.xml"));
await VoiceCommands.VoiceCommandDefinitionManager.
  InstallCommandDefinitionFromStorageFileAsync(storageFile);

Chiaramente potremo poi interagire nuovamente intercettando la richiesta dell'utente e il comando dato a Cortana attraverso gli argomenti di tipo ActivationKind.VoiceCommand che vengono passati direttamente nel metodo OnActivated della classe App:

var commandArgs = e as Activation.VoiceCommandActivatedEventArgs;
SpeechRecognitionResult speechRecognitionResult = commandArgs.Result;

// comando: es. showTripToDestination
string voiceCommandName = speechRecognitionResult.RulePath[0];

// testo: es. Mostra viaggi per Londra
string textSpoken = speechRecognitionResult.Text;

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi