Inspiration

As first year students in university, we're really on top of the work we have to do (most of the time). But this means that we don't have time to watch our favourite TV shows and more often than not, end up missing them. In addition, we don't really have time to look for new shows to binge watch over a weekend.

A lot of the tools used for keeping track of TV shows are full fledged apps which are a bit bulky and cumbersome to use. We decided to make a lightweight, Facebook Messenger bot that would remind us to watch TV once in a while.

What it does

The Facebook Messenger bot allows us to 'follow' certain TV shows that we are interested in, and it will automatically find the release date and time for the next episode (if available).

The bot will periodically message you at various times so that you'll remember to watch the episode (because who doesn't love getting messages, even if it is from a bot).

The bot also loves to learn, so we made it capable of knowing the cast and plot summary, because why not.

In addition, because we love finding new TV shows, we included a recommendation feature, which allows the bot to recommend certain shows to you based on whatever shows you like to watch.

The bot uses Natural Language Processing to understand what the user says, so it's flexible in terms of the type of input it can handle. No need to talk to it like a robot, just talk to it like you would to a friend.

How we built it

The Facebook Messenger platform was used as the platform of choice, and in order to allow the bot to understand complex user input, we used api.ai, an NLP platform which allowed us to make our bot more capable and a bit more human.

We used NodeJS and Firebase as a backend to store user data. Heroku was used as a webhook for the Messenger bot, and was also used as a middle man between api.ai and the Messenger bot itself, which determined the various responses and actions. Notification scheduling was handled by Heroku Scheduler and Moment.js.

For scheduling information and miscellaneous information about various TV shows, we used the TVMaze API, which gave us access to pretty much everything we needed.

The recommendation feature was powered by TasteDive, which allowed us to find TV shows that were similar to the ones specified by the user.

Challenges we ran into

Hooking together all the various APIs needed to get the project off the ground was really tough! Only one of us had experience in making a Messenger bot, and none of us had ever touched NLP (let alone api.ai) in any way. None of us really expected to finish the project, let alone have it even work.

We ran into challenges early on with integrating Facebook Messenger with api.ai and Heroku (took us 4 hours to stop making the bot just echo the input!) Luckily, we had experience with Firebase, so setting up the backend wasn't too hard. We spent a lot of time trying to make the notifications work correctly, since it was our first time using a scheduler tool for a task like this and there were a lot of weird bugs that we encountered.

Accomplishments that we're proud of

We're all really proud of the fact that we were able to use a lot of tools that none of us really knew all that well, and that we somehow made it work in the end.

In addition, making a tool that we would actually love to use, and that would have practical applications in our own lives was really satisfying and motivated us to complete the project.

What we learned

We learned not to trust asynchronous calls in Javascript, as this caused a bunch of bugs where the bot's messages would appear out of order all the time.

What's next for TV-Upd8er

Although we're super proud of our project, there are some things that we would love to add if we had more time. Features such as allowing the user to customize notifications, and using some of the cool Facebook Messenger content style APIs (to format the information better) are on the top of the list.

Share this project:

Updates