Accéder au contenu principal

Déployez votre bot Facebook Messenger avec Python

Un guide pas à pas pour déployer facilement un chatbot Facebook Messenger avec Python, en utilisant Flask, requests et ngrok.
Actualisé 19 sept. 2026  · 7 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

Bien conçu, l’échange en langage naturel avec un ordinateur est à la fois puissant et ludique. La messagerie et les appareils à commande vocale sont les prochaines grandes plateformes, et le conversationnel jouera un rôle clé dans des expériences de réalité augmentée et virtuelle engageantes. Mais ces programmes posent des défis spécifiques, par exemple : comment rendre mon chatbot accessible au monde extérieur ?

Dans ce tutoriel, vous allez suivre les étapes nécessaires pour déployer un chatbot sur Facebook Messenger, qui compte plus d’1 milliard d’utilisateurs actifs. Avec seulement quelques lignes de code, vous pouvez toucher une audience immense.

Trois grandes étapes suffisent :

  • créer un serveur qui écoute les messages de Facebook (avec flask)
  • définir une fonction pour renvoyer des messages aux utilisateurs (avec requests)
  • rediriger une connexion https vers votre machine locale (avec ngrok)

Pour en savoir plus sur la transformation du langage humain en instructions pour la machine, découvrez le cours DataCamp Building Chatbots in Python.

Notez que cet article n’aborde pas la compréhension du langage par votre bot ni la génération de réponses adaptées. Pour cela, consultez Rasa NLU, Rasa Core, ainsi que le cours DataCamp cité ci‑dessus.

Python chatbot

Encapsuler votre chatbot dans un serveur http

La première étape consiste à créer un serveur http qui écoute les messages envoyés par Facebook, obtient une réponse à ce message, puis renvoie cette réponse à l’utilisateur sur Facebook. Nous utiliserons flask pour créer ce serveur. L’idée générale est la suivante :

  • créer une application flask qui écoute les messages envoyés à localhost:5000/webhook. Lorsque des messages sont envoyés sur Facebook, ils arrivent sous forme de requêtes http à cette URL.
  • la fonction listen() traite ces requêtes http et vérifie qu’elles contiennent un message Facebook valide
  • si le message est valide, la fonction get_bot_response() est appelée et la réponse est renvoyée à Facebook Messenger

En complément, vous allez créer une fonction appelée verify_webhook() qui gère l’authentification initiale entre Facebook et votre application.

Le script final ressemble à ceci (enregistrez‑le sous server.py) :

from flask import Flask, request

app = Flask(__name__)

FB_API_URL = 'https://graph.facebook.com/v2.6/me/messages'
VERIFY_TOKEN = ''# <paste your verify token here>
PAGE_ACCESS_TOKEN = ''# paste your page access token here>"


def get_bot_response(message):
    """This is just a dummy function, returning a variation of what
    the user said. Replace this function with one connected to chatbot."""
    return "This is a dummy response to '{}'".format(message)


def verify_webhook(req):
    if req.args.get("hub.verify_token") == VERIFY_TOKEN:
        return req.args.get("hub.challenge")
    else:
        return "incorrect"

def respond(sender, message):
    """Formulate a response to the user and
    pass it on to a function that sends it."""
    response = get_bot_response(message)
    send_message(sender, response)


def is_user_message(message):
    """Check if the message is a message from the user"""
    return (message.get('message') and
            message['message'].get('text') and
            not message['message'].get("is_echo"))


@app.route("/webhook")
def listen():
    """This is the main function flask uses to 
    listen at the `/webhook` endpoint"""
    if request.method == 'GET':
        return verify_webhook(request)

    if request.method == 'POST':
        payload = request.json
        event = payload['entry'][0]['messaging']
        for x in event:
            if is_user_message(x):
                text = x['message']['text']
                sender_id = x['sender']['id']
                respond(sender_id, text)

        return "ok"

Dans le script ci‑dessus, les variables VERIFY_TOKEN et PAGE_ACCESS_TOKEN ne sont pas encore définies : vous devez donc les renseigner. Le VERIFY_TOKEN peut être n’importe quelle chaîne ; il sert de mot de passe pour indiquer à Facebook que ce serveur souhaite recevoir des messages. Il est recommandé d’utiliser une longue chaîne aléatoire. Vous pouvez en générer une rapidement en exécutant openssl rand -base64 32 dans votre terminal.

Ne vous préoccupez pas encore du PAGE_ACCESS_TOKEN : vous verrez ci‑dessous comment l’obtenir !

Renvoyer des messages aux utilisateurs

Ensuite, vous allez écrire une fonction qui envoie une réponse à Facebook Messenger à l’aide de la bibliothèque Python requests. En particulier, vous utiliserez la méthode post(), qui crée une requête HTTP POST. Une requête POST est la manière classique d’envoyer des informations à un serveur.

Votre fonction devrait ressembler à ceci :

import requests

def send_message(recipient_id, text):
    """Send a response to Facebook"""
    payload = {
        'message': {
            'text': text
        },
        'recipient': {
            'id': recipient_id
        },
        'notification_type': 'regular'
    }

    auth = {
        'access_token': PAGE_ACCESS_TOKEN
    }

    response = requests.post(
        FB_API_URL,
        params=auth,
        json=payload
    )

    return response.json()

Exposer un point de terminaison https et connecter une page Facebook

L’URL localhost:5000 ne fonctionne que pour des requêtes émises depuis la même machine que le serveur en cours d’exécution. Vous devez donc indiquer à Facebook comment joindre votre serveur flask. Pour cela, commencez par installer ngrok.

Rendez‑vous sur cette page et installez la version adaptée à votre système. Si vous êtes sur Mac et utilisez homebrew, le moyen le plus rapide d’installer ngrok est brew cask install ngrok.

Démarrez le serveur ngrok dans votre terminal avec ngrok http 5000. Cela mettra en place un point de terminaison https redirigé vers votre machine sur le port 5000, par exemple https://51b6b3fa.ngrok.io.

Remarque : si vous quittez puis relancez ngrok, cette URL changera.

Créer une application et une page Facebook

L’étape suivante consiste à créer une application et une page sur Facebook. La documentation Facebook est bien faite, mais voici les grandes lignes.

Pour créer l’application, allez ici et :

  • cliquez sur My Apps -> Add a New App et saisissez un nom
  • vous serez redirigé vers le tableau de bord de l’application
  • dans Products, trouvez Add a Product puis cliquez sur Messenger -> Set Up

Pour créer la page, vous devez :

  • aller dans les paramètres de Messenger, descendre jusqu’à Token Generation et cliquer sur le lien pour create a new page pour votre application

Une fois la page créée, revenez dans les paramètres Token Generation et sélectionnez cette page dans le menu déroulant. Copiez le Page Access Token dans l’emplacement prévu pour PAGE_ACCESS_TOKEN dans server.py ci‑dessus.

Démarrer le serveur de votre bot

Maintenant que tout est en place, il est temps de lancer votre serveur de chatbot ! Dans un autre onglet de terminal, exécutez

FLASK_APP=server.py flask run

Configurer le webhook

Pour finir, vous devez enregistrer votre webhook sur la page développeurs de Facebook.

  • Retournez dans l’onglet Messenger de Products, faites défiler jusqu’à Webhooks et cliquez sur Setup Webhooks
  • Dans Callback URL, saisissez votre URL ngrok, par exemple https://51b6b3fa.ngrok.io/webhook. Il est important que votre application flask soit en cours d’exécution à ce stade, car verify_token() sera appelé à l’étape suivante
  • Dans le champ Verify Token, indiquez la valeur que vous avez définie dans votre fichier server.py
  • Dans Subscription Fields, assurez‑vous que messages et messaging_postbacks sont cochés. Cliquez sur Verify and Save pour effectuer l’authentification

Important : retournez dans Products -> Messenger et, sous Select a page to subscribe your webhook to the page events, sélectionnez votre page puis cliquez sur Subscribe.

C’est terminé !

Votre bot est désormais prêt à envoyer et recevoir des messages via Facebook Messenger. Pour l’instant, votre fonction get_bot_response() reste très simple et ne donne pas encore l’impression d’un vrai chatbot ! Pour tout apprendre sur la création de chatbots, consultez le cours DataCamp Building Chatbots in Python et le tutoriel Building a Chatbot using Chatterbot in Python, ainsi que les bibliothèques Python Rasa NLU et Rasa Core

Sujets
Python
Science des données

En savoir plus sur Python

Cours

Introduction à Python

4 h
7M
Apprenez les bases de l’analyse de données avec Python en quatre heures et explorez ses principaux packages.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow