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