//Build 2018 – Conversational AI: What’s New?

Conversation AI: What’s New?
Chris Mullins, Darren Jefford

As a bot developer, I waited a lot from this session and wasn’t let down! So much new cool features in this BotBuilder SDK v4.

Unfortunately it also renders a lot of the BotBuilder SDK v3 obsolete. A lot of problems that I’ve tackled down with difficulties are now handled by a simple turn key feature.

New features of the BotBuilder SDK v4:

  • Turnkey authentication: Just like WebApp, we now can configure authentication into the Azure portail for our bot, so that it can request the user to connect at the right time.
  • New languages supported: Java and Python
  • New command line tools: « msbot » (manage configuration file of the bot), « luis » (manage Luis), « qnamaker » (manage QnA Maker), « az bot » (command to create/manage bot resources on Azure – useful for automated deployment)
  • LuDown and LuDown CLI – a Markdown variant to give a training sets of data to Luis. « ludown.exe parse toluis » parse the Markdown file and configure Luis with the parsed file.
  • BotBuilder now runs on ASP.NET Core!
  • Middleware (ex. Machine Translation Middleware that translates whatever language the user use to english for the bot to handle, then the bot speaks english but it’s translated to the user’s language through the middleware)
  • Visual Studio has a new Bot Template for the BotBuilder v4

The Bot Framework Emulator has been redone entirely. It nows supports plugins and transcript files. Thanks to the Luis and QnA plugins, we can train our AIs directly from the Bot Framework Emulator based on what we tell our bot.

Luis.ai also packs a bunch of new features:

  • Integrated experiences: Luis new gives others’ API data in a single call (Sentiment analysis, Automatic Machine Translation)
  • Luis has been enhanced for better privacy (GDPR and such)
  • New ways to recognize keywords: Patterns (I want to fly from [city:origin] to [city:destination]) / Regex / Key phrases
  • Luis gives guidance to enhance its training (ex. « There’s not enough utterances for this intent – Bad training », « This utterance is duplicated/too close to another one from another intent »

QnAMaker new features:

  • General Availability since monday
  • Hosted by our Azure Subscription
  • No more throttling of questions
  • GDPR and other privacy laws compliant
  • Better portal. Same Test/Inspect tools as Luis

New Dispatcher tool that connect to LUIS and QnAMaker to check if everything’s alright.

New Project Conversation Learner AI from Microsoft Research, an AI that can predict what to say based on the ongoing conversation with a very simple and user-friendly configuration portal.

New PersonalityChat feature that allows to adapt the way our bot talks to the user based on a setting (Business, Friendly, Humorous).
Ex. User: « Hello », Bot: « Hello, how are you today? »
Ex. User: « Yo », Bot: « ‘Sup »

Links:
http://aka.ms/PersonalityChat
http://aka.ms/BotBuilderOverview

//Build 2018 – Pair programming made awesome with Visual Studio Live Share

C’est une évidence, mais il est important de rappeler que la collaboration entre développeurs est de plus en plus importante pour plusieurs raisons :

  • On cherche à augmenter la fréquence des releases
  • Les équipes sont de plus en plus distribuées
  • Et on a toujours besoin de feedback à temps

Aujourd’hui on peut déjà collaborer via du partage d’écran, du contrôle de sources ou des messageries instantanées, mais globalement ça peut manquer d’interactivité ou prendre du temps en mise en œuvre. C’est là le but de VS Live Share : fournir une solution de collaboration en temps réels directement depuis son IDE !

Pour lancer une session il suffit de cliquer sur le bouton Share pour obtenir une URL à partager avec son collègue qui a juste besoin d’avoir installé l’extension sur son Visual Studio. Sans rien avoir téléchargé ni installé (ni les sources, ni le dépendances, ni les frameworks), on peut démarrer une session de pair programming :

  • On peut soit suivre exactement ce que fait le développeur Host ou suivre sa propre exploration des sources
  • Chacun peut éditer le code de son côté
  • On partage la même session de debug
  • Le Host peut aussi partager son serveur local ou sa base locale (ça ne partage pas l’écran, chacun peut par exemple ouvrir le site dans un navigateur différent)

VS Live Share fonctionne sur de nombreux langages et types d’application.

Une session Live Share est sécurisée : les invités sont authentifiés, la connexion est encryptée et le host ne partage que ce qu’il souhaite. Les fichiers du .gitignore sont masquées dans le Live Share, plus ceux listées dans un fichier .vsls.json.

Pour télécharger les extensions http://aka.ms/vsls.

Ne reste plus qu’à tester sur un projet !

//Build 2018 – Developing for Sets on Windows 10

Developing for Sets on Windows 10
Raymond Chen, Jason Watson

This session was about how to adapt our Win32/UWP apps to provide a great experience on Windows Sets and Windows Timeline.

Windows Sets allows to group apps together in a single window, much like a web browser do using tabs.
With this, we can group all apps related to do a single task.

For example, I have my solution opened in Visual Studio, I debug my website in Firefox, but I need to search a few Stackoverflow topics, while having my Outlook and Slack opened to stay connected to my colleagues.

I could group Visual Studio, my website and the stackoverflow posts inside a single set, while having my Outlook/Slack or anything else inside another Set.

Windows 10 can automatically restore a previous Set and/or tab from the Timeline.

In this session, we were told that in order to provide a great experience with Sets to our users we should:

  • Support multi instancing: This is the default for Win32 apps, but not for UWP. Only a single manifest option is required to enable it
  • User activities: We should store the user’s activities (such as interacting with an item in the app) in the Microsoft Graph. That way Windows 10 is able to display it into the Windows Timeline and provide the user with a really quick way to resume what they’ve done
  • Support Window grouping: When our app need to open another app, we can specify if it should be opened in the same Set or in another one. The user can set their preferences globally in the Windows Settings
  • App visuals: Our apps should customize its tab’s color and icon in the Set. Fortunately it is the exact same API than the Custom TitleBar API of UWP
  • BackButton : Since Windows Sets introduces a new chrome for our app’s window. We should use the normalized BackButton provided by Microsoft

API wise: the ones for UWP are really simple.
Each bullet point is max 5 lines of code.
For Win32 (WinForms/WPF), the API is quite complex. We need to do P/Invoke call.

Links:
http://aka.ms/DesignForSets
http://aka.ms/FluentBackButton

//Build 2018 – What’s New in Xamarin.Forms 3.0

What’s New in Xamarin.Forms 3.0
David Ortinau

In this quick session (45min compared to 75min normally), David talked both about the recent past of Xamarin.Forms, the new Xamarin.Forms 3.0 and what to expect in the future.

Past features and improvements since last year:

  • First Public Roadmap: http://aka.ms/xfroadmap
  • Native Forms: Embedding Xamarin.Forms inside native UI
  • .NET Embedding: .NET code and Xamarin.Forms UI usable by native-native language like Objective-C
  • .NET Standard 2.0 support
  • Fast renderers, Layout compression, Startup optimization XAMLC, etc…

The new features of Xamarin.Forms 3.0 (available today)

  • VisualStateManager: We can now apply styles to our app based on states, just like UWP. This is useful to handle different screen sizes
  • Right to Left support with a single property (FlowDirection= »{x:Static Device.FlowDirection} »)
  • Improved ResourceDictionaries: There’s now MergedDictionaries, hurray!
  • FlexLayout: The equivalent of the CSS Flex layout. This allows for fewer UI layers and so performance boost
  • CSS support: A mostly valid CSS that support currently almost all the control properties

The future of Xamarin.Forms:

  • XAML Standard: Announced last year, we will have access to the first bits with Xamarin.Forms 3.1
  • Compiled Binding (aka x:Bind) coming to Xamarin.Forms. That’s amazing!
  • Project F100: Xamarin will take the top 100 annoyances and try to fix them. Such as the missing Border properties on all controls.

Xamarin.Forms 3.1-pre1 is available today !

//Build 2018 – Adaptive Cards in Bot, Windows, Outlook and your own application

L’objectif d’une Card est de publier du contenu au sein d’une autre application, il y a donc 2 acteurs : l’auteur du contenu et le conteneur en charge du rendu. Il existe déjà des formats de Card (Twitter, Open Graph, Messenger…) mais qui sont relativement rigides, et le problème d’intégrer un HTML Canvas donnerait trop de liberté, d’où l’idée des Adaptive Cards !

On démarre par une belle démo des différentes expériences utilisateurs dans un Bot, dans Teams, dans le Notification Center de Windows, dans une app UWP, dans Outlook et même Cortana ! Les sources de la démo sont sur https://github.com/matthidinger/ContosoScubaBot.

Au passage, on apprend que le support des Adaptive Cards est déjà sur la version Web d’Outlook Web, et arrivera à la fin du mois sur Outlook Desktop.

Une Adaptive Card a donc un rendu natif et adapté à son conteneur, peut être créer à faible cout, et uniquement via une déclaration JSON décrivant le contenu, les actions, les champs de saisie, de la voix…

La seconde démo nous montre comment créer son Adaptive Card sur http://adaptivecards.io/visualizer . Ils travaillent aussi sur un designer http://acdesignerbeta.azurewebsites.net/ pour créer son fichier JSON plus simplement.

Pour la troisième démo, on voit la construction de bout en bout d’une Adaptive Card « Hello Word » pour Outlook :

  1. Création du modèle dans le designer en ligne
  2. Utilisation d’une Azure Function
  3. Test d’envoi depuis https://messagecardplayground.azurewebsites.net/
  4. Affichage dans Outlook O365
  5. Puis dans Outlook Deskop où le contenu a été mis à jour

Pour construire ses Cards dans son back-end, on peut utiliser les objets C#, parser des templates JSON, utiliser des vues Razor pour générer le JSON ou des composants .acx en NodeJS.

On continue par le rendu d’une Adaptive Card dans son application via les SDK disponibles pour JS/HTML, WPF, UWP, iOS ou Android (Xamarin et ReactNative à venir). Là aussi, on a un fichier host.config pour déclarer comment le rendu doit se faire dans l’application. Ensuite on doit brancher les évènements si la Card contient des actions.

On finit par Adaptive Card V2 (en construction)

  • Inclure simplement des sous Cards juste par une URL vers du contenu décrits via des schémas comme ceux de schema.org (exemple restaurant)
  • Utiliser une bibliothèque de templates
  • Transformer côté client un contenu pour le binder sur son template
  • Gérer un état de la Card en rappelant le fournisseur du contenu

 

Une super session à revoir pour ceux qui veulent se lancer sur le sujet !

//Build 2018 – Behind the scenes: Sets on Windows 10 and Your Phone

Behind the scenes: Sets on Windows 10 and Your Phone
Megan Brown, Shawn Henry

This session showed the features of Project Rome, which exists for quite some time, and how Microsoft leveraged those inside the new Sets and Nearby Share features of Windows 10 and the Your Phone app.

20180508_220917710_iOS.jpg

Project Rome aims at simplifying cross device interaction. It supports a wide range of devices: phone, PC, Xbox, etc.
It allows those devices to communicate between them, being either near by to each other or connected to the cloud.

Project Rome also uses Microsoft Graph to share data between devices.

An SDK is available on Android/iOS/Windows, but the Xamarin SDK is outdated and will be available by next year.

The session was separated into 5 key features:
20180508_221726332_iOS.jpg
Nearby Share allows to share data or files between devices that are near each other. Project Rome will automatically choose the best way for those devices to communicate (Bluetooth, Wifi, Cloud)
Useful for sending a picture from a phone to the PC
Only a handful lines of a code are needed to add this feature to our apps.

20180508_222639812_iOS.jpg
Discovery and Launch allows to discover our devices connected to the cloud and run commands on them at distance.
For instance, we can ask our PC to open a word file directly from our phone.

20180508_223445901_iOS.jpg
This one uses Microsoft Graph to store the activities of the user (such as opening an item in our app) and retrieving it elsewhere. Windows Timeline uses this feature.

20180508_224225138_iOS.jpg
AppService API allows to call a background service on another device (Android or iOS) and retrieve a result. This uses FCM on Android.

20180508_224937350_iOS.jpg
Remote Sessions allows to create a session between multiple devices and to send and receive data while the session is active. This way we can put live collaboration inside our apps.

20180508_225240594_iOS.jpg

//Build 2018 – Visual Studio and Xamarin: The future of app development

Visual Studio and Xamarin: The future of app development
Miguel de Icaza

In this dense but really interesting session, Miguel gave us a complete tour of how to do mobile app development in Xamarin today, as well as what will be the new features of Xamarin.

For the simplicity of this article, I will only list the new tools available and what will be available in the next version of Xamarin.

Don’t hesitate to watch to great session on Channel9 to see all the key points to take into account when designing your mobile apps to optimize user retention.

Announcements :

    • Simplified templates with a new Visual Studio Wizard
    • Automatic Android SDK Management in Visual Studio
    • The XAML editor of Xamarin.Forms is now the same as WPF/UWP
    • Android Designer (Split View Designer of AXML files) now available as a Preview Release
    • Faster build/deploy time when debugging Android apps with Eager Deployment (build and deploy are made in parallel
    • Hyper-V now supports official Android Emulators
    • Visual Studio can now simplifies iOS provisioning by using fastlane
    • Better profiling tools are available in Xamarin
    • Xamarin.iOS can now be compiled with a Full Static Mode to have better performance and memory usage
    • Xamarin.Forms 3.0 is released and comes with CSS / Flex Layout / Visual State Manager / Support for Right to Left languages
    • Xamarin Essentials is a new NuGet package containing most of the most used features for simpler cross platform developments
    • Elmish.XamarinForms is a new framework to make Xamarin a more functional friendly environment (with F#) by writing your app like React (functions return a new view instead of modifying it)
    • Ooui is Xamarin.Forms in the Browser thanks to Web Assembly

20180508_204350043_iOS.jpg20180508_205215943_iOS.jpg20180508_205421734_iOS.jpg20180508_205757867_iOS.jpg20180508_211729360_iOS.jpg20180508_212117449_iOS.jpg20180508_212242391_iOS.jpg20180508_212525352_iOS.jpg20180508_212939499_iOS.jpg