But the chat bot idea is not new at all.

A chat bot interface is mentioned in the famous Turing test in 1950. Then there was Eliza in 1966, a simulation of a Rogerian psychotherapist and an early example of primitive natural language processing. After that came Parry in 1972, a simulation of a person with paranoid schizophrenia (and yes, of course, Parry met Eliza).

In 1983, there was a book named The Policeman’s Beard Is Half Constructed, which was generated by Racter, an artificial intelligence computer program that generated random English-language prose, later released as a chat bot.

One of the most famous was Alice (artificial linguistic internet computer entity), released in 1995. It wasn’t able to pass the Turing test, but it won the Loebner Prize three times. In 2005 and 2006, the same prize was won by two Jabberwacky bot characters.

And in 2014, Slackbot made chat bots popular again. In 2015, Telegram and then Facebook Messenger released chat bot support; then, in 2016 Skype did the same, and Apple and some other companies announced even more chat bot platforms.

What do you need to know to build a chat bot?

The answer to that mostly depends on what you want to build, of course.

In most cases, you can build a chat bot without knowing much about artificial intelligence (AI), either by avoiding it completely or by using some existing libraries for basic AI.

The same goes for natural language processing (NLP); it’s more important than AI, but you can build a chat bot using an NLP library or, for some platforms, simply by using buttons and UI elements instead of word processing.

And finally, do you even need to know programming? There are a lot of visual bot builders, so probably not. But it can be useful.

How to build a Facebook Messenger bot

This is an article about building chat bots, so let’s finally dive deep into it. Let’s build a simple Facebook Messenger bot.

We’ll use Node.js, but you can build a chat bot with any programming language that allows you to create a web API.

Why Node.js? Because it’s perfect for chat bots: You can build a simple API quickly with hapi.js, Express, etc.; it supports real-time messages (RTM) for Slack RTM bots; and it’s easy to learn (at least easy enough to build a simple chat bot).

Facebook already has a sample chat bot written in Node.js, available on the Github. If you check the code, you’ll see that it uses the Express framework and that it has three webhooks (for verification, authentication and receiving messages). You’ll also see that it sends responses with Node.js’ Request module.

Sounds simple?

It is. But this complete sample bot has 839 lines of code. It’s not much and you probably need just half of that, but it’s still too much boilerplate code to start with.

What if I told you that we could have the same result with just five lines of JavaScript?

Or even fewer if you use ECMAScript 6:

Meet the Claudia Bot Builder

The Claudia Bot Builder helps developers create chat bots for Facebook Messenger, Telegram, Skype and Slack, and deploy them to Amazon Web Services’ (AWS) Lambda and API Gateway in minutes.

The key idea behind the project is to remove all of the boilerplate code and common infrastructure tasks, so that you can focus on writing the really important part of the bot — your business workflow. Everything else is handled by the Claudia Bot Builder.

Why AWS Lambda? It’s a perfect match for chat bots: Creating a simple API is easy; it responds much faster to the first request than a free Heroku instance; and it’s really cheap. The first million requests each month are free, and the next million requests are just $0.20!

Here’s how easy it is to build a Facebook Messenger bot with Claudia Bot Builder:

Let’s build a Space Explorer bot

Space Explorer is a simple Messenger chat bot that uses NASA’s API to get data and images about space.

Before we begin, create a Facebook page and app, and add Messenger integration, as described in Facebook’s Getting Started guide.

Then, create a file named bot.js with the following content:

Install these dependencies:

npm init; npm install claudia-bot-builder -S; npm install claudia -g;

Create a Lambda function and follow the instructions in the video above to connect it with your Facebook app:

claudia create --region us-east-1 --api-module bot --configure-fb-bot

That’s it! You’ve created your first chat bot for Facebook Messenger.

If you send a message to your page, your bot will reply. But the answer is too simple. Let’s add something more interesting!

Integrate NASA’s API

Before we continue, visit NASA’s API portal and get an API key.

Then, add your API key as a nasaApiKey stage variable in API Gateway. You can do that from the UI or by running the following command:

aws apigateway create-deployment \

--rest-api-id API_ID --stage-name latest \

--variables nasaApiKey=YOUR_NASA_API_KEY

Here, API_ID is your API ID from the claudia.json file that was auto-generated in the previous step.

Let’s add a better answer to the text messages. Claudia Bot Builder has a simple builder for Facebook Messenger template messages (the documentation is on GitHub).

Now our bot has a nice welcome answer:

Much better!

Next, we want to handle postbacks. Let’s start with NASA’s Astronomy Picture of the Day:

And here are the Mars rovers (Curiosity, Opportunity and Spirit):

Finally, add some static content to the end:

Final result

After minor refactoring, our code should look something like the source on GitHub.

And here’s how our bot works:

You can try it live on your page or on the Space Explorer bot page on Facebook Messenger.

That’s it! You’ve successfully built your first chat bot using Claudia Bot Builder. It was easy, wasn’t it?

Now go and build more cool chat bots.