//Build 2018 – Conversational AI: Best Practices for Building Bots

Conversational AI: Best Practices for Building Bots
Elaine Chang, Vishwac Sena Kannan

This session focused on the best practices to build bots at every step of the development cycle.
And breaking news, Bot development follows the same best practices as any other development!

You should define what you want to achieve with the bot. It must add value, be accessible and be effective.


You should include domain experts when designing your bot and iterate with some final users to make an effective design. Also plan how your bot should react, but do not over do it at the start. Start simple, and grow in complexity step by step later.

For example, you should plan simple interaction at first, no AI. And make sure to measure the users interaction with your bot to have successfully core features. Later you can think of adding adaptive cards for faster and prettier interactions, then move on language understanding and other advanced features.


You should also set success metrics for your bot to achieve, making sure your bot is useful to your users.

When planning your conversation dialogs, always think to add escape hatches to let your users start over, especially if your bot is doing something critical.


Finally when your bot is deployed and used, you must have some ways to monitor it and get feedback from your users.

And always take those metrics into account to enhance your bot over time.


//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 »


//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.


//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 – 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.


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:
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.

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.

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.

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

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.


//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


//Build 2018 – Building event-driven Serverless Apps with Azure Functions and Azure Cosmos DB

Building event-driven Serverless Apps with Azure Functions and Azure Cosmos DB
Rafat Sarosh

In this session, Rafat Sarosh explained how to make a completely serverless backend with only Azure Functions and Azure Cosmos DB (with its ChangeFeed feature).

Despite being a very trendy subject, I found this session to be a little boring.
Not enough demos, not really explaining why use Azure Cosmos DB, and the speaker was not dynamic enough.

Azure Functions is part of the new FaaS offering of Azure that help make truly serverless development.

Azure Functions has 2 runtimes available. Version 1.x which is already GA (General Availability) and 2.x which is currently in preview.

Rafat demoed the tooling in the func CLI, Visual Studio and the Azure Portal to create new functions from templates. Those have been around for quite some time now.

Despite Azure Functions being serverless, you still have the choice to host them on your own App Service in Azure. This has the advantage to control a few scaling/performance options like AlwaysOn. By default, the Hosting Plan (no App Service) will put your functions to sleep if not used for 5 min.


Azure Functions has a trigger for Azure Cosmos DB that allows it to monitor for changes with the ChangeFeed functionality of Azure Cosmos DB and call a function when new content is available.
That allows to create automated workflows.


At the end of the session, 2 companies (Johnson Controls and Asos) explained their usage of both Azure Functions and Azure Cosmos DB.