Skill Name = Trellexa

Skill ID = amzn1.ask.skill.9949fcc9-7ea4-49cb-b008-0027a267b342

Our Story

We love Trello and us it to manage everything. From our daily todo list to more specific project work with a full Kanban board. So naturally we wanted Alexa to help us manage that via spoken word instead of always typing on a physical device. Trellexa combines the organizational power of Trello and the vocal powers of Alexa!

Applications

We think everyone will use this skill many times a day to manage their work. Caretakers, sales people, administrative assistants, executives, technology moguls, anyone! All their items and boards are conveniently stored in Trello and also accessible via their smartphone or computer.

Trellexa creates a new board by default for your general TODO items

Here is a sample of some of the verbal workflows Trellexa supports:

Materials and technology

We built Trellexa using ASP.NET hosted on EC2. We leveraged the AlexaSkillsKit.NET and Manatee.Trello Nuget packages for Alexa and Trello integration. Although we had some bumps along the way with utterance matches, SSL and OAuth we got everything working in the end thanks to some help from the Alexa development teams.

Steps taken to build our skill:

Create a new project in the Alexa Developer Console

Develop an intent schema and sample utterances

Create an ASP.NET project to host our skill web service

Install the AlexaSkillsKit.NET Nuget package and configure with Alexa

Setup hosting in EC2 with a valid FQDN and SSL certificate

Install the Manatee.Trello Nuget package and configure with Trello

Test HelloWorld to prove connectivity between Alexa and service

Add logic in the service to handle each intent/utterence

Configure account linking to link the user to their Trello account

Here is a sample of the intent logic in C# for moving a card:

var itemName = intent.Slots.FirstOrDefault().Value.Value.ToString(); var stageName = intent.Slots.FirstOrDefault(x => x.Key == "Stage").Value.Value.ToString().ToLower(); Board board = GetBoard(intent, member); var lists = board.Lists.FirstOrDefault(x => x.Name.ToLower().Contains(stageName)); var card = board.Cards.FirstOrDefault(x => x.Name.ToLower().Contains(itemName)); if (card != null) { lists.Cards.Add(card); card.Delete(); speechOutput = string.Format("{0} has been moved to {1}. {2}", itemName, stageName, GetRandomCompliment()); } else { speechOutput = string.Format("I couldn't find an item called {0}?"); } var response = await BuildSpeechletResponse("Success", speechOutput, true); return response;

Summary

We had a ton of fun building this Alexa skill. Considering we had never seen the Alex Skill Kit before this week, its amazing to have built, tested, refactored and submitted a skill to the store for certification in less than 3 days. We hope this paves the way for other .NET developers to get started building Alexa skills quickly and easily.