nouvelles
Serverspace Technologies aux Emirats Arabes Unis : Lancement de Falconcloud
DF
Le 21 juin 2022
Mise à jour en juin 7, 2023

Comment construire un Slackbot dans Python on Ubuntu 20.04.

Ubuntu

La création Slackbot utilisant Python on Ubuntu 20.04:

Intro:

Slack - un messager d'entreprise, conçu pour améliorer la productivité de vos lieux de travail. Avec lui, vous pourrez échanger des messages, créer des chats publics ou privés, passer des appels (appels vocaux ou vidéo) et intégrer différents Slackbots. Slackbot est un application conçue pour interagir avec les utilisateurs par le biais de conversations. Il a de nombreuses fonctions et options, comme : envoyer des avertissements et des messages, lancer des tâches.
Slack messenger logo

Dans notre tutoriel, pour déployer Slackbot nous allons utiliser Python ainsi que Ubuntu 20.04. Slack a beaucoup d'outils dans son propre arsenal, afin de vous aider à interagir avec Python's Programme d'applicationraminterface de connexion (API) et ses intégrations.

Pour tester les capacités du Python ainsi que Slack APIun CoinBot sera lancé, qui surveillera le chat et lancera une pièce quand il sera déclenché. Après tout, vous pouvez mettre à niveau votre bot à des fins plus pratiques et selon vos propres idées.

Tache: Dans notre tutoriel, nous utilisons Python.3, cela signifie que si vous utilisez des versions antérieures, le bot ne pourra pas fonctionner.

Préparation :

Tout fonctionnerait, si vous aviez ces éléments :

1) Slack sur votre PC et lieu de travail (travailspace) dans lequel vous allez travailler. Si vous n'en avez pas, vous devez en créer un sur le site officiel Slack site Web.
2) Machine virtuelle ou PC avec adresse IP publique.

Lancement Slackbot

Tout d'abord, lançons notre Slack application dans le Slack API Panneau de configuration (SCPAPI). Entrez dans le menu de votre lieu de travail et après cela, allez à SCPAPI.
Puis, click sur le menu "Create an App", comme sur notre capture d'écran :

Context menu "Create an App width

Par la suite, vous devrez nommer votre application. Notre nom sera "CoinBot", mais votre nom dépend de vous. Après cela, choisissez une œuvrespace qui est plus pratique pour vous, où l'application sera installée.Application creation context menu in Slack API

 

Ensuite, votre application sera prête à fonctionner. Vous pourriez aller au panneau de contrôle.

Slack API Control PanelÀ partir de ce panneau, vous pouvez personnaliser votre application : télécharger de nouvelles autorisations, connecter des notifications à tous les événements, installer votre application dans n'importe quel lieu de travail, et bien d'autres choses.

Maintenant, nous devons donner des droits spéciaux à notre application, si nous voulons que notre application ait accès pour envoyer des messages dans nos chats.
Pour avoir cette autorisation : nous devons click sur le menu contextuel "Permissions", comme sur notre capture d'écran :

Context menu "Permissions" in Slack2Après cela, vous serez dans le menu "OAuth & Permissions". Vous devez descendre jusqu'à la "Portée". Là, vous devez sélectionner "Bot Token Scopes". Dans ce menu, appuyez sur le menu "Add on OAuth Scope":

Add an OAuth Scope button in subsection

Dans une prochaine étape, nous devons ajouter l'autorisation discuter : écrire. Vous pouvez le rechercher dans le bureau spécial.
Enable your app to write to Slack3 API channels height=
Après cela, votre application aura la permission d'écrire dans les chats.

Ensuite, après avoir ajouté ce droit, vous devez à nouveau ajouter votre application à votre travailspace.
Allez un peu plus bas sur cette page vers les "Oauth Tokens for Your Workspace", puis cliquez sur "Installer pour travaillerspabouton ce" :

Menu for adding the Slak API application to your workspace
Après nos actions, Slack va vous demander de consulter les autorisations de lancement disponibles pour cette application. Si tout vous arrange, click sur le bouton avec "Autoriser":

Adding an app to your Slack API workspace

Que notre bot est prêt à partir, Slack va vous fournir votre jeton d'utilisateur, il va être utilisé pour accéder à votre travailspace:
Your Slack API Access Token

Toujours dans ce menu, vous avez un bouton "Réinstaller pour travaillerspace", que vous pouvez utiliser si vous avez des erreurs avec votre bot, il va être réinstallé, après cliappuyant sur ce bouton.
Notre dernière chose à faire est d'ajouter notre chatbot dans votre travailspace. Si vous avez déjà créé une chaîne, vous pouvez passer à cette étape maintenant : "Ajouter un bot à votre chaîne"

Si vous n'avez pas encore lancé de chat, suivez ces quelques étapes :
Recherchez le menu contextuel "Ajouter une chaîne" et sélectionnez-y le bouton "Créer une nouvelle chaîne":

Adding a new channel in Slack
Ensuite, sélectionnez un nom pour votre chaîne et remplissez éventuellement la barre de description.

Creating a channel for the Slack API bot

 

Ajouter un bot à votre chaîne

Si vous voulez ajouter un bot à votre chat, vous devez placer votre curseur sur le nom du chat et click sur le menu contextuel "Afficher les détails de la chaîne":

View Slack channel details
Passez ensuite au menu "Intégration" et click sur le bouton "Ajouter une application":

Menu for adding an app to a Slack channel

Ensuite, recherchez votre application par son nom ou faites simplement défiler vers le bas pour la trouver. Dans notre cas "CoinBot":

Select the app you want to add to your Slack channel
Après toutes nos actions, le bot sera lancé dans notre chat :

Application added to your channel

 

Python installation

Nous devons mettre en place Python, afin que nous puissions installer et gérer notre Slack robots.
Tout d'abord, installons python v.3 et les outils d'aide correspondants. Nous allons le faire sur notre VM avec Ubuntu v.20.04 déployé dessus.
Dans un premier temps, Python v.3 est déjà préinstallé sur tous Ubuntu serveurs version 20.04, mais pour nous convaincre que toutes les mises à jour sont disponibles, nous devons télécharger toutes les mises à jour précédentes sur notre système à l'aide de ces commandes :

sudo apt update
sudo apt -y upgrade

Après cela, nous pouvons voir quelle version nous avons :

python3 -V

La réponse ressemblera à ceci :

Python 3.8.2

Ensuite, nous devrions télécharger l'outil pip, qui nous donnera accès à la gestion des packages :

sudo apt install -y python3-pip

Après cela, nous allons déployer l'environnement virtuel (VE):

python3 -m venv ~/.venvs/slackbot

Après cela, nous devons l'activer:

source ~/.venvs/slackbot/bin/activate

Maintenant notre terminal entre parenthèses affichera notre environnement virtuel, ça devrait ressembler à ça :

(slackbot) root@Ubuntu-Bot-Python:~#

Ensuite, avec l'outil pip, nous allons installer d'importants Python Composants:

pip install slackclient slackeventsapi Flask

Explicationnation: slackclient et slaévénementsapi - des outils qui permettent d'utiliser le Slack API Plus facile. Flacon - microweb framework qui va être utilisé pour déployer notre bot.
Après avoir mis en place Python, nous pouvons configurer notre bot.

Création d'une classe pour Slamessages ckbot dans Python

Slack utilise des données JSON spécialement formatées pour envoyer des messages.
Lançons un Python classe qui simule un tirage au sort.
Rappel - nous faisons toutes les actions dans un environnement virtuel. Dans notre cas, l'environnement virtuel est root@Ubuntu-Bot-Python: ~ #
Tout d'abord, à l'aide de la commande touch, créez un fichier appelé coinbot.py :

touch coinbot.py

Ouvrez ensuite ce fichier avec l'éditeur nano, vous pouvez utiliser n'importe quel autre éditeur :

nanocoinbot.py

Ajoutez le contenu suivant à notre fichier :

# import the random library to help us generate the random numbers
import random

# Créer la classe CoinBot
classe CoinBot :
# Crée une constante qui contient le texte par défaut du message
COIN_BLOC = {
"type": "section",
"texte": {
"type": "mrkdwn",
"texte": (
"Ok ! Lancer une pièce...\n\n"
),
},
}
& # Le constructeur de la classe. Il prend le nom du canal comme a
# anrameter puis le définit comme une variable d'instance
def __init__(soi, canal):
self.canal = canal
# Générez un nombre aléatoire pour simuler le lancer d'une pièce. Retournez ensuite le
# fabriqué slack payload avec le message coin flip.
def _flip_coin(soi) :
rand_int = aléatoire.randint(0,1)
si rand_int == 0 :
résultats = "Têtes"
autre:
résultats = "Tails"
text = f"Le résultat est {résultats}"
return {"type": "section", "text": {"type": "mrkdwn", "text": text}},
# Créez et renvoyez l'intégralité de la charge utile du message sous forme de dictionnaire.
def get_message_payload(self):
revenir {
"canal": self.channel,
"blocs": [
soi.COIN_BLOCK,
*self._flip_coin(),
],
}
Ensuite, enregistrons et fermons notre fichier avec un raccourci clavier.
Maintenant, notre bot peut envoyer des messages et vous pouvez l'ajouter à votre travailspace.

Testez les messages de notre Slackbot

Vérifions maintenant que notre classe crée la bonne charge.
Créez un fichier appelé coinbot_test.py :

nano coinbot_test.py

Ajoutez ensuite le contenu suivant au fichier créé
Important : Assurez-vous de changer le nom du serveur pour le vôtre dans coin_bot = coinbot("#YOUR_CHANNEL_HERE").

from slack import WebClient
from coinbot import CoinBot
import os

# Créer un slack client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

# Obtenez un nouveau CoinBot
coin_bot = CoinBot("#VOTRE_CANAL_ICI")

# Obtenir la charge utile du message d'intégration
message = coin_bot.get_message_payload()

# Postez le message d'intégration dans Slack
slack_web_client.chat_postMessage(**message)
Enregistrez et fermez ce fichier.
Avant d'exécuter le test, vous devez exporter votre jeton, qui est répertorié sur le Slak API:
Your Slack API token
Exportez maintenant votre jeton :

export SLACK_TOKEN="Your token"

Nous pouvons maintenant tester notre bot. Exécutez le script suivant dans votre terminal :

python coinbot_test.py

Après cela, un message concernant un tirage au sort vous sera envoyé dans le canal sur lequel vous avez installé votre application. Assurez-vous que votre bot vous a bien donné pile ou face.

Créer une application Flask à exécuter Slackbot

Maintenant que votre bot peut lancer une pièce, créer et envoyer des messages, nous allons déployer Flask, qui traitera les messages et leur donnera une sorte de réaction si leur contenu correspond à certains critères.
Tout d'abord, configurons le firewall paramètres pour autoriser le trafic sur le port 3000 :

sudo ufw allow 3000

Vérifiez maintenant le statut de ufw :

sudo ufw status

Vous devriez voir une sortie semblable à celle-ci :

Output
status: active

À l'action de
-- ------ ----
OuvertSSH    AUTORISER n'importe où
3000 AUTORISER n'importe où
OuvertSSH (v6) AUTORISER n'importe où (v6)
3000 (v6) AUTORISER n'importe où (v6)

Nous allons ensuite créer un fichier pour notre application Flask.
Appelons ce fichier app.py :

touch app.py

Ensuite, ouvrez ce fichier avec l'un des éditeurs. Nous utiliserons nano :

nano app.py

Ajoutons le contenu suivant à notre fichier app.py :

import os
import logging
from flask import Flask
from slack import WebClient
from slackeventsapi import SlackEventAdapter
from coinbot import CoinBot

# Initialiser une application Flask pour héberger l'adaptateur d'événements
app = Flacon (__ nom__)
# Créez un adaptateur d'événements et enregistrez-le sur un point de terminaison dans le slack app pour l'injection d'événements.
slack_events_adapter = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/events", appli)

# Initialiser un Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

def flip_coin(canal):
""" Fabriquez le CoinBot, lancez la pièce et envoyez le message à la chaîne
"" "
# Créer un nouveau CoinBot
coin_bot = CoinBot(canal)

# Obtenir la charge utile du message d'intégration
message = coin_bot.get_message_payload()

# Postez le message d'intégration dans Slack
slack_web_client.chat_postMessage(**message)

# Lorsqu'un événement 'message' est détecté par l'adaptateur d'événements, transférez cette charge utile
# à cette fonction.
@slack_events_adapter.on("message")
def message (charge utile):
"""Analysez l'événement de message, et si la chaîne d'activation est dans le texte,
simuler un tirage au sort et envoyer le résultat.
"" "

# Obtenir les données d'événement à partir de la charge utile
événement = charge utile.get("événement", {})

# Obtenez le texte de l'événement qui s'est produit
texte = événement.get("texte")

# Vérifiez et voyez si la phrase d'activation était dans le texte du message.
# Si oui, exécutez le code pour lancer une pièce.
si "hey sammy, lancez une pièce" dans text.lower() :
# Étant donné que la phrase d'activation a été rencontrée, obtenez l'ID de canal que l'événement
# a été exécuté le
channel_id = event.get("canal")

# Exécutez la fonction flip_coin et envoyez les résultats de
# lancer une pièce sur le canal
retourner flip_coin(channel_id)

if __name__ == "__main__":
# Créer l'objet de journalisation
enregistreur = journalisation.getLogger()

# Définissez le niveau de journalisation sur DEBUG. Cela augmentera la verbosité des messages de journalisation
logger.setLevel(logging.DEBUG)

# Ajoutez le StreamHandler en tant que gestionnaire de journalisation
logger.addHandler(logging.StreamHandler())

# Exécutez notre application sur notre adresse IP externe sur le port 3000 au lieu de
# l'exécutant sur localhost, ce qui est traditionnel pour le développement.
app.run(hôte='0.0.0.0', port=3000)
Enregistrez et fermez le fichier.
Explicationnation : Nous ajoutons les déclarations suivantes car :

importer os - nous utiliserons pour accéder aux variables d'environnement

journalisation d'importation - nous utiliserons pour enregistrer les événements de l'application.

à partir du flacon import Flacon - nous allons utiliser pour créer une application Flask

de slack importer WebClient - nous utiliserons pour envoyer des messages via Slack

de slaévénementsapi importer SlackEventAdapter - nous utiliserons pour recevoir des événements de Slack et traitez-les

de coinbot importer CoinBot - nous utiliserons pour instancier votre CoinBot et générer la charge utile du message.

Lancer votre application Flask

Après tout, notre application Flask est prête à fonctionner avec l'application, testons-la.
Ajoutons d'abord notre Slaapplication ckbot.
Sur le Slack API page, accédez à la section "Basik information" et faites défiler jusqu'à la sous-section "App Credentials":
The secret of signing your application in Slack API

Click sur "Show" comme indiqué dans la capture d'écran, puis copiez le secret de signature.
Maintenant, nous exportons notre signature secret avec cette commande :

export SLACK_EVENTS_TOKEN="MY_SIGNING_SECRET_TOKEN"

Nous pouvons maintenant tester notre application.
Démarrez l'application Flask en utilisant ce code :

python3 app.py

Exemple de sortie :

(slackbot) [19:37:05] danial:CoinBot$ python app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)

Terminons maintenant la configuration de notre application dans le Slack interface utilisateur.
Premièrement, nous allons fournir à notre application le droit de lire, de traiter les activités dans le chat et d'y répondre.
Dans le menu de l'interface utilisateur, sélectionnez la section « Abonnements aux événements » et basculez l'interrupteur à bascule « Activer les événements » sur la position « Activé », comme indiqué dans la capture d'écran :
Enable events toggle switch in Slack API

 

Ensuite, ouvrez le menu "S'abonner aux événements du bot" et sélectionnez canaux.de.messages :

 

Adding permission for your Slack API app

Après nos actions, votre application in futere aura la possibilité de traiter les messages.
Une fois les modifications enregistrées, vous aurez un menu contextuel jaune en haut de l'écran vous informant que vous devez réinstaller l'application afin d'appliquer les modifications suivantes.
CliCliquez sur le lien de réinstallation dans cette bannière pour réinstaller l'application :

Notice about reinstalling the app to apply Slack API changes
Vous aurez alors un menu contextuel avec les nouvelles autorisations appliquées. Si vous êtes d'accord avec tout, clicochez "Autoriser":

Allow the app in your Slack0 API workspace
Après tout, notre bot sera prêt. Accédez à votre chat et envoyez un message avec la phrase "Hey Danny, lancez une pièce".
Votre va vérifier votre chance et vous montrer le résultat. Félicitations, nous avons lancé notre bot !

Voter:
5 sur 5
Note moyenne : 5
Noté par : 1
1101 CT Amsterdam Pays-Bas, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Nous utilisons des cookies pour rendre votre expérience sur le Serverspace meilleur. En poursuivant votre navigation sur notre site, vous acceptez nos
Utilisation des cookies ainsi que Données privées.