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.
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>"defget_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)defverify_webhook(req):if req.args.get("hub.verify_token")== VERIFY_TOKEN:return req.args.get("hub.challenge")else:return"incorrect"defrespond(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)defis_user_message(message):"""Check if the message is a message from the user"""return(message.get('message')and
message['message'].get('text')andnot message['message'].get("is_echo"))@app.route("/webhook")deflisten():"""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"Propulsé par
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
defsend_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()Propulsé par
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.
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
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.
Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
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 :
flask)requests)httpsvers votre machine locale (avecngrok)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.
Encapsuler votre chatbot dans un serveur
httpLa première étape consiste à créer un serveur
httpqui écoute les messages envoyés par Facebook, obtient une réponse à ce message, puis renvoie cette réponse à l’utilisateur sur Facebook. Nous utiliseronsflaskpour créer ce serveur. L’idée générale est la suivante :flaskqui écoute les messages envoyés àlocalhost:5000/webhook. Lorsque des messages sont envoyés sur Facebook, ils arrivent sous forme de requêteshttpà cette URL.listen()traite ces requêteshttpet vérifie qu’elles contiennent un message Facebook valideget_bot_response()est appelée et la réponse est renvoyée à Facebook MessengerEn 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) :Dans le script ci‑dessus, les variables
VERIFY_TOKENetPAGE_ACCESS_TOKENne sont pas encore définies : vous devez donc les renseigner. LeVERIFY_TOKENpeut ê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écutantopenssl rand -base64 32dans 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éthodepost(), qui crée une requêteHTTP POST. Une requêtePOSTest la manière classique d’envoyer des informations à un serveur.Votre fonction devrait ressembler à ceci :
Exposer un point de terminaison
httpset connecter une page FacebookL’URL
localhost:5000ne 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 serveurflask. Pour cela, commencez par installerngrok.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’installerngrokestbrew cask install ngrok.Démarrez le serveur ngrok dans votre terminal avec
ngrok http 5000. Cela mettra en place un point de terminaisonhttpsredirigé vers votre machine sur le port5000, par exemplehttps://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 :
Pour créer la page, vous devez :
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_TOKENdansserver.pyci‑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
Configurer le webhook
Pour finir, vous devez enregistrer votre webhook sur la page développeurs de Facebook.
https://51b6b3fa.ngrok.io/webhook. Il est important que votre applicationflasksoit en cours d’exécution à ce stade, carverify_token()sera appelé à l’étape suivanteserver.pymessagesetmessaging_postbackssont cochés. Cliquez sur Verify and Save pour effectuer l’authentificationImportant : 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.