Waking up is a real struggle for me in the morning. This is why every night I set multiple alarms, most of them every 10-15 minutes, so my alarm looks pretty much like this (that is my actual list of alarms from this morning):
And since every day I have a different schedule (and because the Android app doesn’t allow more than 20 alarms), each night I have to setup my alarms manually, and I often set them up 5, 10 or 15 minutes apart. So I have to do it 7 or 8 times manually, which I really hate.
In the next few weeks, we are going to build AlarmBot – a bot that takes natural language queries from Slack or Facebook Messenger and starts the alarm on an Android or iOS phone at the right time.
Let’s take a look at all the platforms involved:
I really like Slack. I have been using it for almost a year now, I have even implemented an integration with a web application for a public chat and I really like the approach with commands and bots.
The user will setup the alarm by entering natural language in Slack, and a Slack bot will send it further in the pipeline.
I am very interested in bots and conversational AI and in general, with chat based software that helps automatizing specific tasks.
A few weeks ago I built a Twitter Search Bot using Microsoft Bot Framework that takes a natural language query, understands the topic of your query and gives you back tweets containing your query.
Facebook, Microsoft and other big companies started making tools for building bots, and I really think it is going to be one of the next big things.
We will build a bot using Microsoft Bot Framework that will compute the query using LUIS (see below) and will setup the alarm.
LUIS (Language Understanding Intelligent Service) is a service from Microsoft Cognitive Services that allows you to compute natural language query and return a list of intents and entities from it.
One of the key problems in human-computer interactions is the ability of the computer to understand what a person wants, and to find the pieces of information that are relevant to their intent. For example, in a news-browsing app, you might say “Get news about virtual reality companies”, in which case there is the intention to “FindNews”, and “virtual reality companies” is the topic.
LUIS is designed to enable you to very quickly deploy an HTTP endpoint that will take the sentences you send it, and interpret them in terms of the intention they convey, and the key entities like “virtual reality companies” that are present.
LUIS lets you custom design the set of intentions and entities that are relevant to the application, and then guides you through the process of building a language understanding system.
Once your application is deployed and traffic starts to flow into the system, LUIS uses active learning to improve itself. In the active learning process, LUIS identifies the interactions that it is relatively unsure of, and asks you to label them according to intent and entities.
We will build a model that will be able to understand the intent and entities from a queries like: Set an alarm at 6:45 tomorrow morning, please!, or Set some alarms starting at 6:00 every 10 minutes until 7:30.
Azure Notification Hubs provide an easy-to-use, multiplatform, scaled-out push infrastructure that enables you to send mobile push notifications from any backend (in the cloud or on-premises) to any mobile platform.
With Notification Hubs you can easily send cross-platform, personalized push notifications, abstracting the details of the different platform notification systems (PNS). With a single API call, you can target individual users or entire audience segments containing millions of users, across all their devices.
We will use Azure Notifications to start the alarm on the mobile phone, with a very simple app built using Xamarin (see below).
Xamarin is a framework that allows the usage of a common C# code base in order to build iOS, Android and Windows apps.
Build native apps for multiple platforms on a shared C# codebase. Use the same IDE, language, and APIs everywhere.
More on the Xamarin website
If you want to have an app that works on iOS, Android and Windows, and it doesn’t require some very deep platform integrations with iOS or Android, then most probably, building your app with Xamarin is the best course of action.
A few weeks ago, Xamarin was bought by Microsoft, so it will only get more traction among developers.
We will build a lightweight application that will start ringing at the time of the alarm, with the help of Azure Notifications.
In the next few weeks, we are going to develop AlarmBot using (so far) Microsoft Bot Framework, Slack, LUIS, Azure Notifications and Xamarin.