We’ve all been there. You *think* your flight is on time. But sure enough, by the time you get to the airport, you find that it’s been delayed for hours.
What if you could ask Alexa about your flight status before heading out the door? We built a skill that connects Alexa to the Laminar Flight API so that you can ask Alexa the status of your flight. Even better? We created a video tutorial that walks you through every step of the process. Check out the video tutorial below or visit our GitHub to see the code.
This video tutorial will go through…
- Adding the departure time skill to Amazon Alexa
- Creating the skill’s backend in AWS Lambda
- Connecting Alexa to the Laminar Flight API using RapidAPI
The result
The end result will look something like this…
What you’ll need:
- Amazon Echo device
- Amazon account
Let the hacking begin! Watch the tutorial below, follow along on GitHub and feel free to leave any questions in the comments.
Feeling inspired?
One Alexa skill is never enough. Here are other project ideas that you could build by connecting to RapidAPI:
- Use the Twilio API or the Plivo API to have Alexa send a text message
- Build a Google Translate Skill with this written tutorial
- Recommend local events with the Eventbrite API or the Meetup API
Let us know what you come up with and happy hacking.
countesscrawley says
Hi David, really helpful tutorial. I was trying to build a skill for events using the Ticketmaster API on RapidAPI. I was having trouble parsing the responses. I receive an error:
TypeError: Cannot read property ‘name’ of undefined
at Object.EventHub.rapid.call.on [as success] (/var/task/index.js:25:41)
at Request.e [as _callback] (/var/task/node_modules/rapidapi-connect/index.js:90:46)
The error refers to the var eventName line in the index.js code below. I have tried but am having trouble parsing the response. It seems that the callback is successful but it cannot access the slots. Any ideas?
var Alexa = require(‘alexa-sdk’);
const RapidAPI = new require(‘rapidapi-connect’);
const rapid = new RapidAPI(‘EventHub’, ‘####’);
var handlers = {
‘LaunchRequest’: function() {
this.emit(‘:ask’, ‘Welcome to Event Hub. Ask something like, find rock concerts near Seattle’);
},
‘EventHub’: function() {
var keyword = this.event.request.intent.slots.keyword.value;
//var region = this.event.request.Events.slots.Region.value;
rapid.call(‘Ticketmaster’, ‘searchEvents’, {
‘apiKey’: ‘####’,
‘keyword’: keyword
}).on (‘success’, (payload) => {
//console.log(payload);
var eventList = payload[0][“_embedded”][“events”];
this.emit(‘:tell’, ‘Listing 5 most recents events for ‘ + keyword);
for (var i = 0; i {
this.emit(‘:tell’, ‘Sorry, there was an error finding the event.’);
});
}
};
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = “####”;
alexa.registerHandlers(handlers);
alexa.execute();
};
Tanya says
Very nice article!
Kris says
So interesting article! Thanx!
Andrew says
Wow, it’s amazing! I like it!
Liana says
I think, it’s interesting!