Accueil Nos publications Blog Intégrer son application à l’experience vocale Windows Phone

Intégrer son application à l’experience vocale Windows Phone

cortana-tile-600x408

Cortana est l’assistant personnel sur Windows Phone. Elle permet de faire un certain nombre de tâches de base mais elle est surtout extensible et peut accueillir les fonctionnalités de votre application.

Cortana est utile lorsque l’application tourne autour de préoccupations telles que la communication, le rappel et la recherche.

Nativement, Cortana permet de passer un appel, envoyer des messages, interagir avec l’agenda, mémoriser des rappels (géolocalisés ou temporels), prendre des notes, gérer les alarmes, commander la musique, interagir avec des lieux et rechercher.

Nous allons voir dans cet article quelles sont les interactions possibles, comment l’activer et l’exploiter au sein de vos applications Windows Phone…

Interaction avec Cortana

Cortana_Home_16x9_7E8C8AC9De la même manière que sur Windows Phone 8, il existe des Voice Command Definitions. Ces définitions sont des points d’entrée vers l’application. La grande nouveauté est la flexibilité des définitions. En effet, sur Windows Phone 8, il était obligatoire d’énumérer les différentes combinaisons que l’utilisateur pouvait énoncer. Désormais, c’est un texte libre.
Par exemple, dans une application cinéma, il est intéressant de pouvoir directement lancer la fiche ou les horaires d’un film en prononçant “Montre-moi la fiche de Top Gun”. Auparavant il aurait fallu lister tous les films possibles, chose impossible ! Désormais, Cortana retranscrit le titre du film.

D’un point de vue développeur, il faut toujours définir des Voice Command Definition, enregistrer ces fichiers XML au démarrage de l’application puis gérer l’activation de l’application par commande vocale.

La structure XML a assez peu changé depuis la version précédente, on retrouve une liste de commandes avec des exemples, le feedback à fournir à l’utilisateur et l’action qui sera déclenchée (pour le moment uniquement un lancement de l’application).
Pour enregistrer ces fichiers XML, il faut passer par le VoiceCommandManager ou le VoiceCommandService, selon que l’on est en Silverlight 8.1 ou WinRT.

Gérer l’activation

La gestion de l’activation est assez simple mais différente selon la technologie utilisée.
Dans le cas d’une application Silverlight 8.1, l’élément Navigate du fichier XML contient une propriété target qui est la page vers laquelle on veut naviguer.

Lors de la navigation, cette page sera instanciée et les différentes valeurs de la retranscription de la parole utilisateur seront passées en paramètre de l’URI de navigation.
Dans le cas d’une application WinRT, c’est la classe Application qui doit gérer le lancement. En effet, comme dans le cas de contrats et extensions, la méthode OnActivated est appelée, il faut donc la redéfinir et vérifier que l’argument passé en paramètre a pour sa propriété Kind la valeur ActivationKind.VoiceCommand.
Il est ensuite nécessaire de transtyper l’argument en VoiceCommandActivatedEventArgs qui contient une propriété Result de type SpeechRecognitionResult, contenant les résultats de la reconnaissance vocale.
Voir ici pour plus d’infos :
https://msdn.microsoft.com/en-us/library/windowsphone/develop/windows.media.speechrecognition.speechrecognitionresult.aspx

Interpréter les commandes de l’utilisateur

Lorsque l’on récupère le texte reconnu, il est important de l’interpréter pour trouver les bonnes informations à aller chercher.

La stratégie la plus simple est de parser ce texte avec la méthode Contains de la classe String ou en utilisant des expressions régulières. Par la suite, l’extraction des données au sein de la chaîne peut se faire avec IndexOf ou également des expressions régulières.

Il est important de faire ceci dans l’ordre : de la possibilité la moins ambiguë à la plus ambiguë !

Continuer au sein de l’application

Au sein de l’application il est également possible de profiter de la synthèse et reconnaissance vocale à l’aide des classes SpeechRecognizer et SpeechSynthesizer.

Recommandations

Plusieurs recommandations “de bon sens” sont à prendre en compte :

En cas d’ambiguïté, il est préférable de demander à l’utilisateur plutôt que de deviner. Par exemple, si celui si demande la fiche du film “Star Wars”, il est préférable de lui afficher les différents éléments de l’hexalogie plutôt que de miser sur un en particuliers.

Autre point important : faire un feedback et faire en sorte que celui-ci soit clair (et pas trop verbeux non plus).