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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare gli audit log in Azure DevOps
Implementare il throttle in JavaScript
Collegare applicazioni server e client con .NET Aspire
Escludere alcuni file da GitHub Copilot
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Ottimizzare le performance usando Span<T> e il metodo Split
Utilizzare l nesting nativo dei CSS
Integrare SQL Server in un progetto .NET Aspire
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Gestire pubblicazione Kubernetes tramite .NET Aspire
Rendere i propri workflow e le GitHub Action utilizzate più sicure


