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
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Eseguire attività con Azure Container Jobs
Miglioramenti nell'accessibilità con Angular CDK
Implementare il throttling in ASP.NET Core
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Gestire undefined e partial nelle reactive forms di Angular
Evitare il flickering dei componenti nel prerender di Blazor 8
Usare un KeyedService di default in ASP.NET Core 8
Effettuare delete massive con Entity Framework Core 7
.NET Conference Italia 2023
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati