Building a Facebook Chatbot with Python and Flask

Facebook Chatbot

Table of Contents

Introduction

A Facebook chatbot can automate interactions with users, providing instant responses and improving engagement. This tutorial will guide you through building a Facebook Messenger chatbot using Python and Flask.

Requirements

  • Basic knowledge of Python and Flask
  • A Facebook Developer account
  • Access to the Facebook Graph API
  • Python libraries: Flask, Requests
  • A text editor (e.g., VSCode, PyCharm)

Step 1: Setting Up Facebook API Access

  1. Create a Facebook Developer Account: Go to the Facebook for Developers site and create an account.
  2. Create an App: In your developer dashboard, create a new app and set up a Facebook Page for your bot.
  3. Generate Access Tokens: Obtain the necessary Page Access Token and verify your webhook.

Step 2: Installing Required Python Libraries

Install the necessary Python libraries using pip:

pip install flask requests

Step 3: Writing the Python Script

Import Libraries: Create a Python script named app.py and start by importing the necessary libraries:

from flask import Flask, request
import requests

app = Flask(__name__)

PAGE_ACCESS_TOKEN = 'YOUR_PAGE_ACCESS_TOKEN'
VERIFY_TOKEN = 'YOUR_VERIFY_TOKEN'

Set Up Webhook Verification:

@app.route('/webhook', methods=['GET'])
def verify_webhook():
    if request.args.get('hub.mode') == 'subscribe' and request.args.get('hub.verify_token') == VERIFY_TOKEN:
        return request.args.get('hub.challenge')
    return 'Verification token mismatch', 403

Handling Incoming Messages:

@app.route('/webhook', methods=['POST'])
def handle_messages():
    data = request.get_json()
    for entry in data['entry']:
        for message in entry['messaging']:
            if 'message' in message:
                sender_id = message['sender']['id']
                message_text = message['message']['text']
                send_message(sender_id, message_text)
    return 'EVENT_RECEIVED', 200

def send_message(recipient_id, message_text):
    url = 'https://graph.facebook.com/v12.0/me/messages'
    params = {'access_token': PAGE_ACCESS_TOKEN}
    headers = {'Content-Type': 'application/json'}
    data = {
        'recipient': {'id': recipient_id},
        'message': {'text': message_text}
    }
    requests.post(url, params=params, headers=headers, json=data)

Running the Flask App:

if __name__ == '__main__':
    app.run(debug=True)

Replace 'YOUR_PAGE_ACCESS_TOKEN' and 'YOUR_VERIFY_TOKEN' with your actual tokens.

Step 4: Deploying the Chatbot

Expose Your Local Server: Use Ngrok to expose your local server to the internet:

ngrok http 5000

Set Up Webhook URL: Configure your webhook URL in the Facebook Developer portal using the Ngrok URL.

Test Your Bot: Send messages to your Facebook Page and verify that the bot responds correctly.

Conclusion

Building a Facebook chatbot with Python and Flask can enhance your engagement by providing automated responses to user messages. This tutorial provided a step-by-step guide to setting up and deploying your chatbot.

Try
RecurPost

Schedule and Publish your posts on multiple social accounts, read and reply to incoming messages with social inbox, and collaborate with your team and clients with ease.

Scroll to Top