Windows Phone 8: Using the Speech API

La session commence par une démo des features liées au speech qu’on peut maintenant incorporer dans les applis.

On peut par la voix lancer l’application avec une commande vocale. On peut établir une relation qui s’apparente a une conversation. Pour ce faire on va pouvoir déclarer la liste des commandes (VoiceCommandDefinition file), cette liste pouvant être dynamique les commandes peuvent comporter des paramètres, et chaque commande peut avoir plusieurs phrases associées, et être associée a une page de l’application. Le fichier de commande est dispo sous la forme d’un ItemTemplate dans Visual Studio. Ce fichier doit être charge au lancement de l’appli.

Une appli qui supporte la commande présente automatiquement la liste des commandes accessibles dans les settings.

Le dialogue avec l’appli se fait avec un échange commande ou input / text to speech. Il y a des fonctionnalités avancées, basées sur la norme SSML qui permettent d’affiner le text to speech (en accentuant des mots par exemple).

La reconnaissance vocale retourne le texte compris et des meta données comme un taux de confiance. Selon les grammaires utilisées, la reconnaissance est faite en local ou dans le cloud. On peut aussi définir une grammaire avec une liste de mots ou avec le format SRGS (par exemple pour restreindre a une liste de mots possibles).

On peut fournir l’IHM associée au process mais le speaker recommande d’utiliser celle native.

Guillaume

Modern JavaScript

La session commence par un bref retour sur l’historique du JavaScript :

  • des applications de plus en plus grosse (443 000 ligne de js dans GMail en 2010)
  • des moteurs de plus en plus performants

# Le langage

IE10 supporte pleinement Emacscript 5 selon le speaker.

Vérifier notamment avec http://test262.ecmascript.org/

On aborde ensuite quelques éléments de langage :

  • property accessors qui rajoute des getters et setters aux propriétés
  • array
  • use strict

On peut vérifier un comportement sur http://ie.microsoft.com/testdrive.

# Les librairies

On passe maintenant sur les typed arrays qui permettent de manipuler des données binaires (ex. pdf.js de Mozilla qui permet d’afficher des PDF), puis sur les web workers pour faire du multithreading

# Les runtime

On a déjà vu IE10, on voit mainenant WinJS. Le speaker montre que WinJS utilise les principes évoquées précédemment (property accessors, foreach, use strict…).

Et pour finir, il fait la démo de l’homogénéité du js sur la platefome Microsoft en executant le même script sur :

  • une page html dans IE10
  • une app W8
  • une web view dans un app WP8
  • un serveur node.js appelé via un remote web worker

Bref, une session intéressante pour finir la journée.

Pierre-Yves

Analytics for Windows Store Apps

Le Windows Store fournis déjà des informations sur l’utilisation de votre application.

Tout d’abord deux définitions :

  • Analytics : représente les données qui sont capturés par le store (exemple : nombre de téléchargement)
  • Telemetry : il s’agit de données collectées lors du fonctionnement de l’application et cela seulement si le client a accepter de participer au programme d’amélioration.

Une première information fournie par le store est le taux de conversion  (lecture de la description à download à achat):

  • Nombre de lecture de la page de description
  • Nombre de téléchargement
  • Nombre d’achat (trial)

Ensuite nous avons également accès aux « Referer » : les sites depuis lesquels les utilisateurs ont été redirigés vers l’appli.

Bien sûr il y a également les stats de downloads et il est possible de voir la progression.

-> Ces stats peuvent être filtrées : par période de temps, région, age, sexe (H/F)

Des statistiques sont aussi fournies pour :

  • Les achats in-App
  • L’utilisation de l’application

Une autre source d’information est le feedback fait par les utilisateurs.

Le portail donne accès à :

  • Des reports sur le rating qui peuvent être filtrés par marché
  • Revues écrites par les utilisateurs

Le portail fourni également des états sur le bon fonctionnement de l’appli : Nombre d’exceptions, stack, application qui ne répond pas …

  • Le store capture les Top 5 type de crash
  • La même chose s’applique pour le cas où l’application ne réponds pas
  • Dans tous les cas on dispose de graph avec le taux de crash
  • En cas de crash il est possible de télécharger un fichier cab et à l’aide d’un débugger on peut avoir accès au détails de l’exception ce qui peut permettre de déterminer la cause

Il existe également un outils permettant d’évaluer les tendances et donc de comparer avec son application :

  • Il permet de consulter les downloads par categorie/ sous categorie / sexe /age …

Part 2 : Adobe

En dehors de ce qui est fourni par le store et la telemetry il est possible d’utiliser d’autres produits pour instrumenter son application.

Adobe fait une démonstration de son outil SiteCatalyst et comment instrumenter une application.

L’outil est disponible pour l’ensemble des langages de la plateforme Windows 8.

Il permet de capturer beaucoup plus de données et donc de filtrer et analyser l’usage.

Exemple de données capturées :

  • Nombre de jours depuis l’’installation
  • Nombre de jours depuis la dernière installation
  • Type de device (tablette / pc …)
  • Type de device (Lumia 710 / Lumia 920 / HTC …)
  • Longitude / latitude
  • Type de connexion (WAN / LAN)
  • Fournisseur WAN
  •  …

Roch

Windows Phone 8: Photo and Lens Apps

L’idée est de proposer des apps qui vont permettre d’enrichir l’utilisation de la caméra et de l’appareil photo. Ces apps seront mises en avant séparément dans le market place.

On pourra les lancer depuis le start screen ou depuis la prise de photo pour manipuler l’image, créer des contenus riches (ex des panoramas), faire de la réalité augmentée, etc.

La session explique les patterns à suivre, à vous d’imaginer les applications possibles !!

Pierre-Yves

Windows Phone 8 : Tiles, Lock screen and Notifications

La session commence par la situation actuelle (WP7) :

  • On a des tile et des toast notifications qui peuvent être générée localement ou à distance
  • La plateforme de notification actuelle n’est pas la même que sur Windows 8

Ensuite c’est un rappel sur le fonctionnement des push notification.

Il y a eu des retours sur les push notifications :

  • Pourquoi une limite de 30 endpoint
  • Les utilisateurs veulent plus de fonctionnalité
  • Les apis ne sont pas très consistantes

Les nouveautés :

  • Plus de limite sur le nombre d’appli qui utilisent les push notification (limite des 30)
  • Possibilité d’envoyer une push notification pour inititier un appel VoiP

Maintenant les différents de type de mise à jour des tiles peuvent toutes faire l’ensemble des mises à jour. Il est également possible de faire les mises à jour en utilisant des classes C# ou du XML.

Il y a maintenant plusieurs template de tile qui se décline en trois tailles (pour les trois tailles de tile) :

  • flipTemplate (text + image)
  • Cycle Tile template (image)
  • Iconic tile template (icône de l’app + badge + text)

Première démo : création des différents types de tile

Sujet Compatibilité des anciennes applications : il n’y a rien à faire ! (WP8 génère automatiquement la petite tile mais pas la grande. Il est cependant possible de déclarer dans le manifest de l’application qu’elle supporte les nouvelles tailles. Ensuite en code il est possible de tester la version de l’os et d’instancier le bon template par réflexion.

On passe ensuite à une nouveauté de WP8 : les notifications sur l’écran de vérouillage. Il est possible d’afficher un statut résumé (icône + compteur) ou un statut détaillé.

Une application peut aussi se déclarer comme fournisseur d’image de fond pour l’écran de vérouillage.  Il faut déclarer cette fonctionnalité dans le manifest et peut ensuite  changer l’écran de fond en code (classe LockScreen).

Roch

Building services for any client with ASP.NET Web API

Il y a plus de plateformes disponibles (téléphones, tablettes, pc etc…) qu’auparavant.

Un Web API est un service HTTP, prévu pour être consommé par un maximum de types d’appareils et d’applications.

Les services Web API utilisent HTTP comme un protocole d’application et non de transport.

On nous présente ensuite brivement que Lync Unified Communications Web API utilise les ASP.NET Web API pour exposer leurs données.

Une petite démonstration de Lync sur WP8 et Navigateur utilisant les services API est ensuite effectuée.

Quelques points sur ASP.NET Web API :

  • Model de programmation modern
  • Facile de lier des ressources à des URIs et d’implémenter une interface uniforme autour de http
  • Support de nombreux formats et de la négociation de contenu
  • Gestion des medias et de la génération de liens
  • Permet une meilleure séparation des différentes couches de l’application
  • Facile à héberger
  • Léger, testable et se scale facilement.
  • Est inclus dans ASP.NET MVC 4 et dans Visual Studio 2012 et est disponible dans Nuget
  • Supporté à partir de .NET

S’ensuit un démonstration de création d’un nouveau service Web API, de la génération automatique de documentation et du tracing activé par défaut dans le template de projet.

Après la démonstration le fonctionnement interne est montré la liste des attributs correspondants aux méthodes HTTP aussi (HttpGet/HttpPost/HttpPut/HttpDelete).

Si on veut changer le nom d’une action on peut aussi utiliser un attribut).

En ce qui concerne les paramètre des actions,  il existe des MediaTypeFormatters pour le JSON, XML, and form-url-encoded par défaut pour désérialiser des types complexes.

On peut les sur définir en utilisant [FromUrl], [FromBody], [ModelBinder]. On peut toujours travailler avec HttpRequestMessage pour traiter le message http directement.

Il est possible de valider les données grâce aux attributs définis sur les classes. Cela fonctionne de manière presque identique à MVC.

L’objet de réponse http est formatté grâce aus HttpTypeFormatters. Le requête http indique généralement le type de format préféré par le client et les formatters appropriés

sont choisis automatiquement.

Il est possible de retourner directement un HttpResponseMessage.

Démonstration de scaffolding à partir d’un modèle de donnée EntityFramework. (Erreurs et Réponse de création avec succès HttpStatusCode.Created ou d’échecs).

Présentation des filtres :

  • Action filters
  • Authorization filters
  • Exception filters

Ajout du support de OData pour la gestion des requêtes en retournant un IQueryable et de la pagination associée.

Ce dernier fait d’ailleurs l’objet d’une démonstration.

Quelques compléments :

  • Web API peut être ajouté à .NET 4
  • On a la main sur la doc générée via l’area help inclus au projet
  • Même si notre source ne supporte pas OData, on peut quand même utiliser le parser OData de la requête et traiter ensuite la query autrement
  • Fiddler = un bon outil pour appeler et tester ses apis !

On peut hoster Web API dans n’importe quel process, ici démo avec un projet console.

La dernière démo illustre la création de 3 clients : un site SPA, une app W8 et une app WP8. A noter au passage l’implementation d’un controller OAuth cote serveur, et l’utilisation du web authentication brocker cote W8 pour afficher la page de login du site web.

Une session d’introduction intéressante à voir pour ceux intéressés par les Web API.

John & Pierre-Yves

Deep dive on WinJS ListView

Dans les applications Modern UI en HTML et js on dispose d’un même contrôle pour les listes et les grilles. Autant dire que ce contrôle prend rapidement des aspects de couteau suisse. Cette session devrait permettre d’explorer les possibilités offertes. Malheureusement cette session ne restera qu’une introduction (qui vaut le coup si vous souhaitez avoir un bon aperçu).

On a quand même quelques infos plus détaillées en fin de session sur la customisation de l’interactivité d’un item.

Guillaume