Maison > Article > développement back-end > Exemple détaillé de la façon d'implémenter un chatbot à l'aide de l'API Python+Slack
Un chatbot (Bot) est un service de chat interactif pratique comme Slack. Si vous n'avez jamais créé de chatbot auparavant, cet article fournit un guide d'introduction simple sur la façon de créer votre premier chatbot à l'aide de Python et de l'API Slack.
Nous construisons votre environnement de développement, obtenons un jeton de chatbot de l'API Slack et utilisons Python Développons un chatbot simple .
Outils dont nous avons besoin
Notre chatbot, nous l'appellerons « StarterBot », il a besoin de Python et de l'API Slack. Pour exécuter notre code Python, nous avons besoin de :
Python 2 ou Python 3
pip et virtualenv pour gérer les dépendances des applications Python
Un compte Slack gratuit avec accès à l'API, ou vous pouvez vous inscrire à une équipe Slack Developer Hangout.
Base de code client Python Slack officielle construite par l'équipe Slack
Test de l'API Slack Jetons
La documentation de l'API Slack vous sera utile lors de la construction de ce didacticiel.
Tout le code de ce tutoriel est placé dans la bibliothèque publique slack-starterbot et est open source sous la licence MIT.
Construire notre environnement
Nous savons maintenant de quels outils nous avons besoin pour notre projet, alors mettons en place notre environnement de développement. Accédez d’abord au terminal (ou à l’invite de commande sous Windows) et accédez au répertoire dans lequel vous souhaitez stocker ce projet. Dans ce répertoire, créez un nouveau virtualenv pour isoler nos dépendances d'application des autres projets Python.
Activer virtualenv :
Votre invite devrait maintenant ressembler à la capture d'écran :
Invite de commande du virtualenv activé de starterbot Cette bibliothèque officielle d'aide de l'API du client Slack est construite par Slack, qui peut envoyer et recevoir des messages via les canaux Slack. Installez la bibliothèque slackclient via cette commande pip :
Une fois la commande pip terminée, vous devriez voir quelque chose comme cette sortie et renvoie l'invite.
Le résultat de l'installation de slackclient avec pip dans un environnement virtuel activé que nous devons également obtenir pour notre projet Slack Un jeton d'accès pour que notre chatbot puisse l'utiliser pour se connecter à l'API Slack.
API Slack Real-Time Messaging (RTM)
Slack permet aux programmes d'accéder à leurs messages via une API Web Canal de livraison. Accédez à cette page de l'API Web Slack pour vous inscrire et créer votre propre projet Slack. Vous pouvez également vous connecter à un compte existant pour lequel vous disposez de droits d'administrateur.
Après vous être connecté à l'aide du bouton de connexion dans le coin supérieur droit de la page de l'API Web, vous arriverez sur la page utilisateur du chatbot.
Personnaliser la page utilisateur du chatbot Nommez votre chatbot « starterbot » et cliquez sur le bouton « Ajouter une intégration de bot ».
Ajoutez une intégration de bot et nommez-la "starterbot". La page se rechargera et vous verrez un jeton de visite nouvellement généré. Vous pouvez également modifier le logo en un de vos propres designs. Par exemple, j'ai donné ce drapeau "Full Stack Python".
Copiez et collez le jeton d'accès de votre nouveau chatbot Slack en bas de la page Bouton "Enregistrer l'intégration". Votre chatbot est maintenant prêt à se connecter à l'API Slack.
Une pratique courante parmi les développeurs Python consiste à exporter le jeton secret en tant que variable d'environnement. Le nom du jeton Slack de sortie est SLACK_BOT_TOKEN :
D'accord, nous sommes désormais autorisés à utiliser cette API Slack comme chatbot.
Nous avons besoin d'une information supplémentaire pour construire le chatbot : l'identifiant de notre chatbot. Nous allons ensuite écrire un court script pour obtenir cet identifiant de l'API Slack.
Obtenir l'identifiant de notre chatbot
Il est enfin temps d'écrire du code Python. Écrivons un court A ! Script Python pour réchauffer l'ID du StarterBot. Cet identifiant varie en fonction du projet Slack.
Nous avons besoin de cet identifiant pour authentifier notre application lors de l'analyse des messages envoyés à StarterBot depuis Slack RTM. Notre script testera également si notre variable d'environnement SLACK_BOT_TOKEN est correctement définie.
Créez un nouveau fichier nommé printbotid.py et remplissez le code suivant :
Notre code importe SlackClient et l'instancie avec la variable d'environnement SLACK_BOT_TOKEN que nous avons définie. Lorsque ce script est exécuté via la commande python, nous accédons à l'API Slack pour lister tous les utilisateurs Slack et obtenir un identifiant correspondant au nom « satrterbot ».
Il suffit d’exécuter ce script une seule fois pour obtenir l’identifiant du chatbot.
Lorsqu'il s'exécute en nous donnant l'ID du chatbot, le script imprime une simple ligne de sortie.
Utilisez un script Python dans votre projet Slack pour imprimer l'ID du chatbot Slack. Copiez l'ID unique imprimé par ce script. Et affichez l'ID en tant que variable d'environnement BOT_ID.
Ce script ne doit être exécuté qu'une seule fois pour obtenir l'identifiant du chatbot. Nous pouvons désormais utiliser cet identifiant dans notre application Python exécutant StarterBot.
Codage de notre StarterBot
Nous avons maintenant tout ce dont nous avons besoin pour écrire le code de notre StarterBot. Créez un nouveau fichier nommé starterbot.py et incluez le code suivant.
L'importation d'os et de SlackClient semble familière car nous les avons déjà utilisés dans theprintbotid.py.
Grâce aux packages de dépendances que nous avons importés, nous pouvons les utiliser pour obtenir les valeurs des variables d'environnement et instancier le client Slack.
Ce code instancie le client SlackClient` via la variable d'environnement SLACK_BOT_TOKEN que nous exportons.
Le client Slack se connecte à l'API WebSocket de Slack RTM, puis effectue une boucle continue tout en analysant les messages de Firehose. Si des messages sont envoyés au StarterBot, une fonction appelée handle_command détermine quoi faire.
Ajoutez ensuite deux fonctions pour analyser la sortie de Slack et gérer les commandes. La fonction parse_slack_output accepte les messages de Slack et détermine s'ils ont été envoyés à notre StarterBot. Le message commence par une commande directe adressée à notre identifiant de chatbot et est ensuite transmis à notre code pour traitement. Actuellement, je viens de publier un message via le pipeline Slack pour dire à l'utilisateur d'écrire plus de code Python
Voici à quoi ressemble l'ensemble du programme (vous pouvez également voir le fichier dans GitHub ! ) :
Maintenant que notre code est là, nous pouvons exécuter notre StarterBot via le code python starterbot.py .
Créez une nouvelle chaîne dans Slack et invitez StarterBot. Envoyez maintenant des commandes à StarterBot dans votre chaîne.
Envoyez des commandes à votre StarterBot dans votre chaîne Slack Si vous rencontrez des problèmes avec les réponses que vous recevez de votre chatbot, vous pouvez A une modification doit être apportée. Comme écrit ci-dessus pour ce tutoriel, la ligne AT_BOT = « : » nécessite deux points après « @starter » (le nom que vous avez donné à votre propre chatbot). Supprimer : à la fin de la chaîne AT_BOT. Slack semble exiger deux points après le nom d'une personne, mais cela semble un peu incongru.
Fin
Nous pouvons faire beaucoup de choses en utilisant l'API Slack RTM et Python. Découvrez ce que vous pouvez apprendre d'autre grâce à ces articles : Attachez une base de données relationnelle persistante ou un backend NoSQL tel que PostgreSQL, MySQL ou SQLite pour enregistrer et récupérer les données utilisateur Ajouter un autre canal pour interagir avec le chatbot, comme un SMS ou un appel téléphonique Intégrer d'autres API web, comme GitHub, Twilio ou api.ai
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!