Build Facebook messenger bots with Python and Django

Build Facebook messenger bots with Python and Django

In this post we will give you information about Build Facebook messenger bots with Python and Django. Hear we will give you detail about Build Facebook messenger bots with Python and DjangoAnd how to use it also give you demo for it if it is necessary.

Throughout this tutorial ,we are going to see how to build a Facebook messenger bot using Python and Django framework .The Facebook messenger platform is one of the biggest platforms for messaging on the Internet in these days .

If you are a business and your have a Facebook page that it might be a good idea to provide your users with an automatic method to get some answers such as the frequently asked questions that get asked all the time by customers but you can also build more advanced bots that use artificial intelligence (AI) .

Here is a list of the best messenger bots

Also watch this video from CNNMoney which talks about how Messenger Bots can replace customer service for brands

You’ll learn how to build a simple Facebook bot step by step .The bot will not use any advanced AI algorithms but only a simpleIF based statements so you need to have some knowledge about Python language and Django framework .

Creating a Facebook app

A Facebook bot is just another type of Facebook apps so we need to create a Facebook app for our bot .

Simply go to Facebook developers website then create an app by providing informationdetails .

For the category of your app select Apps for Messenger then fill in the details and hit Create App ID button .

You will be redirected to your app dashboard so you can tweak different settings .

The most important setting is the associated page since your users will be interacted with your page .

So if you don’t have a page yet go ahead and create one or just use an existing page then go to your messenger settings

When you select a page and grant page permissions to your app ,a token to access the page will be generated .

You need this token so your app can be able to send messages to page users .

A Facebook bot needs to have a server side so you need a server to host your bot code which will process messages and respond with the appropriate messages depending on the logic you have implemented .This can be a simple IF statements and regular expressions or can be more advanced AI algorithms .

Setting up Django

I’m assuming you already have Python and related development tools installed on your system .

Open up your terminal under Linux/MAC or command prompt under Windows and follow these steps .

Create a virtual environment with

 virtualenv env  source env/bin/activate 

Next install Django framework with

pip install django

Next create a Django project startproject fb-django-bot         cd fb-django-botpython runserver

Your Django server will be running at

The next thing is to create a Django app

python startapp  bot

Next wire up your app in the file under INSTALLED_APPS

INSTALLED_APPS = ['django.contrib.admin','django.contrib.staticfiles','bot',]

Now we need to setup the URLS so go ahead and open the project file and add the app urls

urlpatterns = [    url(r'^admin/',,    url(r'^bot/', include('bot.urls')),]

So now we have created both a Facebook app for our bot and a Django project/app for the bot but how can we hook both apps to create our complete working Facebook messenger bot .

Hooking up Django server with Facebook messenger platform with Webhooks

How can our Django app receives messages sent from Facebook users to page/bot ?

Simply Facebook provides web hooks so whenever there is a realtime message (sent by users to page ) our server receives it via a hook .

How to hook up Facebook and our Django server ?

The steps are easy ,you just need to add an URL to your Django App then let Facebook knows about it so open bot/urls.pyand add the following url

from .views import bviewurlpatterns = [                url(r'^a_secret_web_hook/?$', bview)             ]

Make sure you add a secret name for your web hook so you can avoid any intrusions from bad guys .

You also need to create a view which handles requests from Facebook .Go ahead and open bot/ then add this view

from django.http.response import HttpResponsedef bview(request):    return HttpResponse("Hello World")

So our web hook is but that is only accessible locally .To tell Facebook aboutour hook we need to put our server online .

I’m going to use the free tier offered by Heroku to host the bot server which provides also HTTPS access required by Facebook to accept the url as a webhook for your messenger bot .

Next just copy the web hook and go to your Facebook app dashboard then look for Webhooks which is just below Token Generationthen click on setup WebHooks button

Next fill in the details as in the screen shot below .

The verification token is not the Page token your generated before but your own secret token ,you can use any password .Also make sure you choose the subscription fields .

Next click Verify and Save button .The verification process will fail ,why ?

Our web hook needs to return a challenge token which gets send with our secret token by Facebook when you hit Verify and Save

So before your verify again ,go to your bview function and modify it to return back the challenge token

from django.http.response import HttpResponsedef bview(request):    if request.GET['hub.verify_token'] == 'YOUR_SECRET_TOKEN':        return HttpResponse(request.GET['hub.challenge'])    else :        return HttpResponse('Invalid Token !')

Now if you hit Verify and Save ,you should see a success message in the form of a green tick with a “complete” message

Next hit Subscribe .You Django server will now receive any Page events that you have selected as POST requests .

So that is all for this part ,in the next part we are going to see how to handle POST requests and send feedback to our users depending one the sent event .

Hope this code and post will helped you for implement Build Facebook messenger bots with Python and Django. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US