Skip to Content

How to make a WhatsApp bot with Node js?

WhatsApp has become one of the most popular messaging platforms with over 2 billion monthly active users. Developing a chatbot for WhatsApp using Node.js offers many advantages for businesses looking to automate conversations and engage with customers.

What are the benefits of building a WhatsApp bot?

Here are some of the key benefits of building a WhatsApp chatbot with Node.js:

  • Reach a huge user base – WhatsApp has over 2 billion active users worldwide so a chatbot allows you to reach a massive audience.
  • Instantaneous conversations – WhatsApp chats happen in real-time so conversations feel more natural.
  • Cost-effective – Building a bot is cheaper than developing a standalone app and maintaining large support teams.
  • 24/7 availability – Bots can engage customers day and night without human intervention.
  • Automate conversations – Take care of common questions and requests to save time and effort.
  • Personalized experience – Bots can provide customized recommendations and offers to each user.
  • Analytics – Get valuable usage metrics and insights on how to improve the bot.

Prerequisites for building a WhatsApp bot

Before you can start developing your WhatsApp chatbot, there are a few requirements you need:

  • A business WhatsApp account – This allows you to access WhatsApp Business API.
  • A Facebook developer account – Required to create apps that integrate with WhatsApp.
  • Node.js installed – This JavaScript runtime will execute the bot’s code.
  • ngrok account – For tunneling requests from WhatsApp to your local server.
  • Code editor – Like VS Code for writing your Node.js code.

Step 1 – Set up a Facebook Developers account

Since WhatsApp is owned by Facebook, you need a Facebook Developers account to create a new WhatsApp application and get access keys. Here are the steps:

  1. Go to Facebook for Developers and login with your Facebook account.
  2. Click on My Apps in the top navigation bar.
  3. Select Create App in the dropdown.
  4. Enter a name for your app and contact email and click Create App.
  5. From the sidebar menu, select Settings > Basic to view your App ID, App Secret and more.

Your app ID will be needed later to connect your bot to WhatsApp.

Step 2 – Get a WhatsApp Business account

To integrate your chatbot with WhatsApp, you’ll need a WhatsApp Business account and activate the Business API:

  1. Install the WhatsApp Business app on your phone and verify your business phone number.
  2. Open WhatsApp, go to the main menu > Business Settings > Use WhatsApp Business API
  3. Tap Activate and follow the on-screen prompts to activate the API.

This will give you access credentials for the API that will be used in your Node.js bot code.

Step 3 – Set up a local development environment

We’ll need Node.js installed and an ngrok account to tunnel requests from WhatsApp to our local computer while testing:

  1. Download and install Node.js if you don’t already have it.
  2. Create an account on ngrok. ngrok will give you a public URL that forwards requests to your local server.
  3. Open a command prompt/terminal and run npm install -g nodemon to install nodemon which will auto restart our server when file changes are detected.

Step 4 – Install the WhatsApp Business SDK

The official WhatsApp Business SDK makes it easy to get started building bots by handling the API calls and webhooks integration. Install it:

npm install @promisepay/whatsapp-cloud-api

This will add the SDK package to your project dependencies.

Step 5 – Set up a Node.js server

With our environment set up, we can now create a Node.js server that will receive messages from WhatsApp and handle responses.

  1. Create a server.js file and import the SDK:
    
    const { Client } = require('@promisepay/whatsapp-cloud-api');
    
  2. Instantiate the Client:
    
    const client = new Client({
      accessToken: 'YOUR_ACCESS_TOKEN' 
    });
    

    Replace YOUR_ACCESS_TOKEN with the token from your WhatsApp business account.

  3. Add a listener for incoming messages:
    
    client.on('message', message => {
      // message handling
    });  
    

    We will add the message handling logic inside here.

  4. Start the server:
    
    client.initialize();
    

Step 6 – Handle incoming messages

Now we can implement functions to handle different types of incoming messages from users and respond appropriately.

For example, to respond to text messages:


client.on('message', async msg => {

  if(msg.body === 'Hi' || msg.body === 'Hello') {
    await client.sendMessage(msg.from, 'Hello there!');
  }

});

We check if the message body equals “Hi” or “Hello” and send back a greeting response.

Similarly, you can handle images, documents, contacts etc by checking msg.type and respond accordingly.

Step 7 – Run the bot

Finally, we can test out our WhatsApp bot locally:

  1. Run nodemon server.js to start the Node.js server.
  2. Run ngrok on a separate terminal ngrok http 3000 to create a public URL.
  3. Update your WhatsApp Business Profile webhook to point to the ngrok HTTPS URL.
  4. Send a “Hi” or “Hello” message to your business account number. You should receive an automated response.

That’s it! Your basic WhatsApp bot with Node.js is now up and running.

Going further with a WhatsApp bot

Here are some ways you can improve and enhance your WhatsApp bot:

  • Use a library like Dialogflow to add natural language processing for richer conversations.
  • Implement notifications and alerts based on certain events.
  • Add rich media like images, audio and video in responses.
  • Integrate with a database to store and retrieve conversations.
  • Implement an onboarding conversational flow for new users.
  • Analyze conversations to identify common questions and pain points.
  • Implement authentication to identify and verify users.

The possibilities are endless! WhatsApp bots are a cost-effective way to engage customers and automate conversations at scale. Get started building yours today with Node.js.

Conclusion

Developing a WhatsApp chatbot using Node.js provides businesses an easy way to tap into the platform’s vast user base. The WhatsApp Business SDK speeds up the development process significantly.

Here are some key takeaways:

  • Get a WhatsApp Business account and activate the Business API
  • Create a Facebook developer account to get app credentials
  • Use the WhatsApp Business SDK to simplify bot development
  • Set up a Node.js server to respond to incoming messages
  • Implement handlers for different message types
  • Tunnel your local server with ngrok for testing

With these steps, you can quickly build and iterate on your customized WhatsApp bot to engage customers in meaningful conversations.