azure-icon-250x250

[Azure] News for Developers, July 2017

This entry is part of 3 in the series Azure news for Developers

Are you having trouble keeping track of everything that’s going around in Azure? You’re not alone! In an effort to do so myself, I’m starting a monthly series called “News for developers” which is exactly that: a summary of all of the Azure flavored news specifically for software developers. Now this is based on my personal feeds and my personal opinion, so you might miss things or see things which in your opinion do not matter. Feel free to leave and comment below and I’ll see what I can do for the next edition. And honestly, this is more a personal reference than anything else so having actual readers would already be awesome ūüôā Enjoy!

 

App Services updates

Here are some important updates from the world of Azure App Services:

  • .NET 4.7 is now supported on Azure App Service. For more information about what 4.7 brings for you, check out this post.
  • .NET Core 2.0 Preview 2 also rolled out to Azure App Service. For more information about that release, click here.
  • Durable Functions are on App Service now. These are built on the Durable Task Framework which allows writing long running workflows using async/await operations. For Functions, this brings us a way to facilitate longer running processes on Functions, which was not possible previously. Check out this post for more information.
  • NodeJS versions have been updated to include¬†v4.8.4, v6.11.1, v7.10.1 and v8.1.4 along with the corresponding NPM packages. These updates provide a fix for a known vulnerability.
  • Azure App Service Environment (ASE)¬†v2 has been released. Most important changes include scaling based on the App Service Plan (managing worker pools is no longer required). The creation process is now integrated into the Create new App Service Plan experience, increasing the visibility. And the new ASE can scale to bigger, which is of course better ūüėČ Check out the blog post here.
    fda25968-0d56-464b-84b2-c2887a21c4cf
  • A preview of¬†App Service Domains makes it easier to combine Azure DNS hosted domain names with your app service instances. A few of the benefits include: subdomain management, automatic renewals and free cancellation within 5 days. That post is over here.

The app services team now keeps track of their updates in blog posts and in this github repo!  And you can find a monthly update on their blog as well.

Visual Studio (Team Services)

From the world of Visual Studio team services:

  • There’s a new editor for¬†release definitions and an updated workflow for¬†pull requests. The editor I already used myself and it’s a pretty sweet visual representation of the release flow in your application. Check it out!
  • Upon completion of a pull request, you can now automatically mark all linked workitems as Done. Get it done!
  • Also in the PR department: a policy now allows an automatic reset of reviewer votes when new code is being pushed.
  • Personal favorite: you can now view the original diff of a file once a code update has been pushed. This makes it a lot easier to check out changes to¬†the code which you commented on previously.
  • Multiple updates to¬†task groups¬†include: versioning (draft), references and import/export of a task group.

07_14_09

Check out https://www.visualstudio.com/en-us/articles/news/2017/jul-14-team-services for the complete overview.

 

Other

Here’s all the stuff that didn’t fit into one of the above categories:

  • John Papa¬†(yes, the one and only) released Azure Function Tools for Visual Studio Code which allows you to use TypeScript within your Azure Functions. Download it from the marketplace here.
  • For all of you Angular folks out there, Angular version 4.2 is now available.
  • In the “services that might come in handy one day” department;¬†Microsoft Stream has been made generally available. Stream offers powerful video streaming services combined with intelligent stuff like automatic captioning, face detection and other AI features. Click here for more.

That’s it for this month, see you next month for another round of Azure news!

[Azure] Building a Cortana based skilled bot

In my previous post¬†I discussed how to build a bot using a Web Project and deploying it as a DLL to an Azure Function. The Azure Function would then function as the endpoint for your bot which you can make available through¬†channels which include Facebook, Skype (for Business) and many more. Starting at //BUILD this year, Cortana was also included in that list of channels. Cortana of course is a bit of a special channel, since we’ll then be using voice to communicate with our bot. But if you think of it, voice translates to text and text is the input of choice for the bot that we build. So it should be that difficult, right? It’s not!

 

Cortana Skills

The Cortana SDK or development framework or whatever you’d like to call it calls this¬†skills. Basically you’re learning Cortana new skills as you would learn a pet or child something new. The set-up on the Cortana side is simpler than you might think. You simply enable the Cortana channel for your bot, fill in some fields and you’re good to go.

cortana-skillOne of these fields is the¬†invocation name. That’s how Cortana will understand she needs to route a message to our bot. For my home automation sample, I’ll be using “The House” as invocation name, so a command might be “Hey Cortana, tell¬†The House to turn on¬†the lights in the kitchen”. If you haven’t read it yet, take 5 minutes to read¬†Cortana kills + LUIS pre-built domains¬†on how to effortlessly teach you bot these kinds of intents.

Another cool thing you can configure is which data Cortana will supply your bot with. Since Cortana is the digital assistant of the user you will be communicating with, she knows things about this user. These things you can request for so that you can make use of the data in your bot code.

cortana-userprofile

Be aware though: the user does need to consent to Cortana sending this information to the bot before she actually does so.

cortana_permission

Developer mode

Another handy thing is to put Cortana herself into¬†Developer Mode. You can do this by heading over to the Cortana Dashboard (the link is displayed with the Cortana channel itself). Here, under the¬†Debug section there’s the option to enable Developer Mode by simply clicking a checkbox.

 

cortana-debug

After which invoking a command will show you debug info:

cortana-debugon

 

Debugging the bot

For testing and debugging your bot, you get all of the options you normally have for bots (and for Azure Functions by the way). Of course you cannot get the online version of Cortana to call a local instance of your bot, but you can simply pass in the text of the intent you want to test via the bot framework emulator. One feature gap at this moment is the fact that the bot emulator does not allow us to pass in the additional channel data that Cortana can supply (context / user info). What you could do is attach your debugger to an Azure hosted instance of your bot and then debug that specific part.

 

That’s it for now, in my next post I’ll be going in a bit deeper into how this all comes together.

 

azure-icon-250x250

[Azure] News for Developers, June 2017

This entry is part 1 of 3 in the series Azure news for Developers

Are you having trouble keeping track of everything that’s going around in Azure? You’re not alone! In an effort to do so myself, I’m starting a monthly series called “News for developers” which is exactly that: a summary of all of the Azure flavored news specifically for software developers. Now this is based on my personal feeds and my personal opinion, so you might miss things or see things which in your opinion do not matter. Feel free to leave and comment below and I’ll see what I can do for the next edition. And honestly, this is more a personal reference than anything else so having actual readers would already be awesome ūüôā Enjoy!

 

App Services updates

The app services team announced a couple of new updates in their monthly blog post. These include:

  • Azure CDN now supports https on¬†custom domains, something that you could previously only do with one of the external CDN services (link).
  • New App Service Overview Blade
    The new overview blade should perform faster making is easier to switch between apps. The charts can be pinned to custom dashboards which might improve the performance of those as well (a little bit).
  • Integrated experience for Windows and Linux based apps
    When creating a new app service instance, you can now pick which OS the instance needs to host your app.
  • App Service Advisor recommendation history
    The app service advisor will provide proactive recommendations on how to solve problems within your application. It now features the ability to view past recommendations.

Blog post: https://blogs.msdn.microsoft.com/appserviceteam/2017/06/30/june-2017-app-service-update/

Visual Studio (Team Services)

From the world of Visual Studio team services:

  • Visual Studio 15.3 preview has been released. You can install and check it out today! (link) It features:
    • Azure Continous Delivery support for .NET Core and ASP.NET Core apps.
    • Increased visibility on extension impact on performance. For some reason it recently advised me to close the Errors pane. That’s right, just ignore them!
  • The¬†Visual Studio Team Services updates for this month include:
    • Sharing fields across processes, making it easier to query across team projects that use different processes.
    • Support for custom work item icons and a library to pick them from.
    • Filtering a pull request tree by file name. Same goes for the tree view in Code views.
    • Web view for¬†Git Tags.¬†This view allows to view, delete and filter based on tags. Managing tags can be set-up with separate permissions.
    • Import and Export on¬†Build Defintions.¬†This was one of the top-voted items on UserVoice!
    • Hosted agent pools for building your code are changing. No longer are there agents that support multiple versions of Visual Studio; you need to pick the correct pool now.
    • Comprehensive updates have been made to the¬†NuGet, npm,¬†Maven and¬†dotnet task manager tasks, fixing a lot of bugs.
    • Streamlined¬†user management including bulk remove, optionally add new users to projects and easily view subscriptions.

Check out https://www.visualstudio.com/en-us/articles/news/2017/jun-22-team-services for the complete overview.

 

Other

Here’s all the stuff that didn’t fit into one of the above categories:

  • Manage ACS, Cosmos DB, Active Directory Graph and more with release 1.1 of the Azure¬†management libraries for .NET (link).
  • Text Analytics API now supports sentiment analysis in 16 languages (including Dutch, HOERA!) (link).
  • Azure¬†SQL Data Sync was refreshed, bringing portal support and a REST API (link).
  • Azure Traffic manager got two new features: fast failover and TCP probing (link). The failover options include:
    • Endpoint checking interval can now be set to 10 seconds instead of the default 30
    • Configure the number of tolerated failures (0 – 9)
    • Configure the time-out interval for each probe attempt
    • TTL can be down to 0

    The TCP probing enables probing of resources that might not be able to return a HTTP response.

  • The¬†Cognitive Toolkit v2.0 is¬†fully released. This toolkit allows developers to incorporate self-created and trained neural networks into their applications. (link)

That’s it for this month, see you next month for another round of Azure news.

[O365] Synced security group member without permissions in SharePoint

Had a strange thing happen at my client yesterday. We were working on an Office365 set-up and had created some AD security groups in order to have reusable permission groups across a bunch of SharePoint site collections. We missed one person in the org due to which she was not able to access a site she was supposed to have permissions to. So we added here, but still she couldn’t access the site… weird…

TL/DR version: rebooting the machine fixed the problem. If your first response is: “huh?”, read on…

(more…)

[Azure] Building a bot using DLL / WebProject

In previous articles I explained how you can build bots using the Microsoft Bot Framework and the Azure Bot Service. The latter is built on top of Azure Functions, one of my favorite components in Azure. Both the Functions and Bot teams are releasing stuff in a fast pace, but sometimes this leads towards the two not being 100% in sync with each other. This post addresses one of these issues, namely the Bot Service having old-style templates for new instances.

When you create a new Bot Service instance and download the code, you get a solution with .CSX files. These are used in Azure Functions and they still work great. The issue though is that when you load these in Visual Studio and want to debug your code locally, there’s no IntelliSense to go with them. Althought this is on the teams backlog, it’s not there yet and if you’re a VS dev like I am, you probably can’t live without it ūüôā

 

.NET Class library as Function App

Two months ago, Donna Malayeri (who’s doing absolutely awesome work on the Functions team) wrote this post¬†detailing how you can build a web project which uses the local functions runtime to host and debug the code. This brings two great worlds together: it allows you to build code in Visual Studio with all the benefits (Intellisense!) whilst utilizing the func.exe CLI runtime as well.

The post does a very good job at explaining how to set this up, but what if you want this for your Bot Service instances?

 

Converting a Bot Service

To convert your bot service instance to a Web Project, here’s what you need:

  • A web project (well duh…).
  • The CSX files that you want to convert to ‘regular’ C# classes.
  • The function.json file that defines the endpoint for your bot.
  • A appsettings file should you have one. This is typically where your Microosft App ID and password are stored.
  • The project.json file. You don’t really need this, but it’s handy to look up which packages your instance is using.

And here’s the steps:

  • Follow Donna’s post to set-up a new web project.
  • When creating the classes, create one for your dialog and one for your entry point. You can combine them as well of course, but I personally like to separate them. In the example these are named¬†Dialog.cs and¬†DialogEntryPoint.cs.
  • DialogEntryPoint.cs will contain the contents from the ‘run.csx’ file. This the entry point that’s being called when the user communicates with your bot. It’s referenced in¬†function.json as follows:

    Note the scriptFile and entryPoint settings which point to the output DLL and the class/method which handles the incoming message.
  • Dialog.cs contains your dialog code.
  • Ensure that you set-up the project to load the correct NuGet packages. Normally you will need¬†Microsoft.Bot.Builder.Azure¬†which will include some dependencies. If you include this, ensure the project is set-up to run .NET framework version 4.6 instead of 4.5.

Lastly, you need to configure the start options of the project. This is detailed in Donna’s post as well, but for your reference, below are the settings I used. Note that the location of func.exe might differ based on the installation type you used.

botasweb

With everything configured, running the project should now start your bot in the func.exe runtime and hook up VS at the same time for local debugging! Awesome!

funcrunning

 

Sample @ github

If you’re struggling, I took the liberty of adjusting the sample project from the blog post and making a bot specific one from it. You can use it to see how it has been set-up. Be aware that my sample is based on the LUIS bot service, so it does require a settings file with your specific LUIS keys to actually work. Should you have any questions or remarks; feel free to leave them below!

Check out the code: https://github.com/jsiegmund/BotAsWebProject

[Azure] Cortana skills + LUIS pre-built domains

A while ago I was planning on doing a few posts on bots, but I never really got to that it seems. I did get into the bot building business though, so here’s one about a little bit more advanced use of bots: language understanding. And although I might write “more advanced”, I don’t really mean it. That’s because LUIS makes things so much easier. LUIS? Yeah, that’s short for Language Understanding Intelligence Service. And it’s awesome. (more…)

azure-icon-250x250

[Azure] News for developers, May 2017

This entry is part 2 of 3 in the series Azure news for Developers

Are you having trouble keeping track of everything that’s going around in Azure? You’re not alone! In an effort to do so myself, I’m starting a monthly series called “News for developers” which is exactly that: a summary of all of the Azure flavored news specifically for software developers. Now this is based on my personal feeds and my personal opinion, so you might miss things or see things which in your opinion do not matter. Feel free to leave and comment below and I’ll see what I can do for the next edition. And honestly, this is more a personal reference than anything else so having actual readers would already be awesome ūüôā Enjoy! (more…)

[Azure] WordPress and Azure Redis Cache

I a quest to optimize the performance of my WordPress powered site, I thought I’d give Redis Cache a go. Redis Cache has become the industry default when it comes to caching in a key-value style. Azure has a Redis Cache offering which you can use to enhance the performance of any app. If you’re not familiar with caching: it’s a mechanism to eliminate timely data retrieval actions. Caching can be implemented several different places: you web browser uses caching so that it does not have to retrieve all files on every load. Redis Cache is usually more targeted towards scenario’s like database connections. Instead of getting items from a database table, which usually is relatively slow, you can get them from the cache instead.

 

(more…)

[O365] Adding your chatbot to Skype for Business

Have you been coding your chat bot using the Microsoft Bot Framework? Good news! One of the long awaited features is finally here: the Skype for Business channel! Using this channel, you can now get your but to communicate with users using Skype for Business. This is especially good news for enterprises where S4B is often the primary communication tool. Bots were already available through Microsoft Teams, but not all companies are ready for that yet. Skype was in there as well, but is mostly used on the consumer side. So great to have Skype for Business joining the club!

(more…)

[VS2017] Unable to login “failed to refresh access token”

I was running into this weird error today. For some reason (you know… it happens) Visual Studio lost it’s license. I was still logged in, but requested to re-enter my credentials. So I tried, but I kept getting errors. I then thought: let’s log out and log in again. So yeah, that didn’t happen…

(more…)