News
Serverspace Technologien in den VAE: Einführung von Falconcloud
DF
21. Juni 2022
Aktualisiert Juni 7, 2023

Wie baue ich eine Slackbot rein Python on Ubuntu 20.04

Ubuntu

Erstellen Slackbot verwenden Python on Ubuntu 20.04:

Intro:

Slack – ein Unternehmens-Messenger, der zur Verbesserung der Produktivität an Ihren Arbeitsplätzen entwickelt wurde. Damit können Sie Nachrichten austauschen, öffentliche oder private Chats erstellen, Anrufe tätigen (Sprach- oder Videoanrufe) und sich in verschiedene integrieren Slackbots. Slackbot ist ein Anwendung, die für die Interaktion mit Benutzern durch Gespräche entwickelt wurde. Es verfügt über viele Funktionen und Optionen, wie zum Beispiel: Warnungen und Nachrichten senden, beliebige Aufgaben starten.
Slack messenger logo

In unserem Tutorial zum Bereitstellen Slackbot werden wir verwenden Python und Ubuntu 20.04 Slack verfügt über viele Tools im eigenen Arsenal, die Ihnen bei der Interaktion helfen Python's Anwendungsprogramming-Schnittstelle (API) und seine Integrationen.

Um die Fähigkeiten des zu testen Python und Slack API, eine CoinBot wird gestartet, das den Chat überwacht und bei Auslösung eine Münze wirft. Schließlich können Sie Ihren Bot für praktischere Zwecke und Ihre eigenen Ideen aufrüsten.

Fleck: In unserem Tutorial verwenden wir Python.3 bedeutet, dass der Bot nicht funktionieren kann, wenn Sie Versionen verwenden, die früher veröffentlicht wurden.

Zubereitung:

Alles würde funktionieren, wenn Sie diese Elemente hätten:

1) Slack auf Ihrem PC und Arbeitsplatz (Arbeitsplatz).space), in dem Sie arbeiten werden. Wenn Sie noch keines haben, sollten Sie eines auf der offiziellen Website erstellen Slack-Website.
2) Virtuelle Maschine oder PC mit öffentlicher IP-Adresse.

Stapellauf Slackbot

Lassen Sie uns zunächst unsere starten Slack-Anwendung in der Slack API Systemsteuerung (SCPAPI). Rufen Sie das Menü Ihres Arbeitsplatzes auf und gehen Sie anschließend zu SCPAPI.
Dann, cliKlicken Sie auf das Menü „App erstellen“, wie auf unserem Screenshot:

Context menu "Create an App width

Anschließend müssen Sie Ihrer App einen Namen geben. Unser Name wird sein:CoinBot", aber Ihr Name bleibt Ihnen überlassen. Wählen Sie anschließend ein Werk ausspaWählen Sie den für Sie bequemeren Ort aus, an dem die Anwendung installiert werden soll.Application creation context menu in Slack API

 

Anschließend ist Ihre App betriebsbereit. Sie könnten zur Systemsteuerung gehen.

Slack API Control PanelVon diesem Panel aus können Sie Ihre App anpassen: neue Berechtigungen hochladen, Benachrichtigungen mit beliebigen Ereignissen verknüpfen, Ihre Anwendung an jedem Arbeitsplatz installieren und viele andere Dinge.

Jetzt müssen wir unserer App besondere Rechte gewähren, wenn wir möchten, dass unsere Anwendung Zugriff auf das Senden von Nachrichten in unseren Chats hat.
Um diese Erlaubnis zu haben: Wir müssen cliKlicken Sie auf das Kontextmenü „Berechtigungen“, wie auf unserem Screenshot:

Context menu "Permissions" in Slack2Danach befinden Sie sich im Menü „OAuth & Berechtigungen“. Sie müssen tiefer zum „Scope“ gehen. Dort sollten Sie „Bot Token Scopes“ auswählen. Klicken Sie in diesem Menü auf das Menü „Add on OAuth Scope“:

Add an OAuth Scope button in subsection

Als nächsten Schritt müssen wir die Berechtigung hinzufügen chatten:schreiben. Sie können es im speziellen Schreibtisch suchen.
Enable your app to write to Slack3 API channels height=
Danach erhält Ihre App die Berechtigung, in Chats zu schreiben.

Nachdem Sie dieses Recht hinzugefügt haben, sollten Sie als Nächstes Ihre App erneut zu Ihrer Arbeit hinzufügenspace.
Gehen Sie auf dieser Seite etwas tiefer zu den „OAuth-Tokens für Ihre Arbeit“.space“ und klicken Sie dann auf „Install to Work“.space"-Taste:

Menu for adding the Slak API application to your workspace
Nach unseren Taten, Slack wird Sie nach den für diese App verfügbaren Wurfberechtigungen durchsuchen. Wenn dir alles gefällt, cliKlicken Sie auf die Schaltfläche mit „Zulassen“:

Adding an app to your Slack API workspace

Dann ist unser Bot einsatzbereit, Slack stellt Ihnen Ihr Benutzertoken zur Verfügung, das für den Zugriff auf Ihre Arbeit verwendet wirdspace:
Your Slack API Access Token

In diesem Menü gibt es immer noch die Schaltfläche „Reinstall to Work“.space“, das Sie verwenden können, wenn bei Ihrem Bot Fehler auftreten, wird er anschließend neu installiert cliKlicken Sie auf diesen Knopf.
Als letztes müssen wir unseren Chatbot in Ihre Arbeit integrierenspace. Wenn Sie bereits einen Kanal erstellt haben, können Sie jetzt mit diesem Schritt fortfahren: „Hinzufügen eines Bots zu deinem Kanal“

Falls Sie noch keine Chats gestartet haben, befolgen Sie diese Schritte:
Suchen Sie das Kontextmenü „Kanal hinzufügen“ und wählen Sie darin die Schaltfläche „Neuen Kanal erstellen“ aus:

Adding a new channel in Slack
Wählen Sie anschließend einen Namen für Ihren Kanal aus und füllen Sie optional die Beschreibungsleiste aus.

Creating a channel for the Slack API bot

 

Hinzufügen eines Bots zu Ihrem Kanal

Wenn Sie einen Bot zu Ihrem Chat hinzufügen möchten, sollten Sie Ihren Cursor auf den Namen des Chats setzen und cliKlicken Sie im Kontextmenü „Kanaldetails anzeigen“ auf:

View Slack channel details
Wechseln Sie dann in das Menü „Integration“ und cliKlicken Sie auf die Schaltfläche „Anwendung hinzufügen“:

Menu for adding an app to a Slack channel

Suchen Sie dann nach dem Namen Ihrer Anwendung oder scrollen Sie einfach nach unten, um sie zu finden. In unserem Fall „CoinBot“:

Select the app you want to add to your Slack channel
Nach all unseren Aktionen wird der Bot in unserem Chat gestartet:

Application added to your channel

 

Python Setup

Wir müssen uns einrichten Python, damit wir unsere installieren und verwalten können Slack Bots.
Lassen Sie uns zunächst installieren python v.3 und entsprechende Tool-Helfer. Wir werden das auf unserer VM mit tun Ubuntu v.20.04 darauf bereitgestellt.
Zunächst Python v.3 ist auf allen bereits vorinstalliert Ubuntu Serverversion 20.04, aber um zu überzeugen, dass alle Updates verfügbar sind, sollten wir alle vorherigen Updates mit diesen Befehlen auf unser System herunterladen:

sudo apt update
sudo apt -y upgrade

Danach können wir sehen, welche Version wir haben:

python3 -V

Die Antwort wird etwa so aussehen:

Python 3.8.2

Als nächstes sollten wir das Pip-Tool herunterladen, das uns Zugriff auf die Paketverwaltung verschafft:

sudo apt install -y python3-pip

Danach werden wir die virtuelle Umgebung (VE) bereitstellen:

python3 -m venv ~/.venvs/slackbot

Danach müssen wir es aktivieren:

source ~/.venvs/slackbot/bin/activate

Jetzt zeigt unser Terminal in Klammern unsere virtuelle Umgebung an, sie sollte etwa so aussehen:

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

Als nächstes werden wir mit dem Pip-Tool einige wichtige installieren Python Komponenten:

pip install slackclient slackeventsapi Flask

ErklärungnatIon: slackclient und slackeventsapi - Werkzeuge, die die Verwendung erleichtern Slack API Einfacher. Kolben - Microweb framework, das zur Bereitstellung unseres Bots verwendet wird.
Nachdem wir uns eingerichtet haben Python, können wir unseren Bot einrichten.

Erstellen einer Klasse für Slackbot-Nachrichten ein Python

Slack verwendet speziell formatierte JSON-Daten zum Senden von Nachrichten.
Lassen Sie uns a starten Python Klasse, die einen Münzwurf simuliert.
Zur Erinnerung: Wir führen alle Aktionen in einer virtuellen Umgebung durch. In unserem Fall ist die virtuelle Umgebung root@Ubuntu-Bot-Python: ~ #
Erstellen Sie zunächst mit dem Befehl „touch“ eine Datei namens „coinbot.py“:

touch coinbot.py

Dann öffnen Sie diese Datei mit dem Nano-Editor, Sie können jeden anderen Editor verwenden:

nanocoinbot.py

Fügen Sie unserer Datei den folgenden Inhalt hinzu:

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

# Erstellen Sie die CoinBot-Klasse
Klasse CoinBot:
# Erstellen Sie eine Konstante, die den Standardtext für die Nachricht enthält
COIN_BLOCK = {
„Typ“: „Abschnitt“,
„Text“: {
„type“: „mrkdwn“,
„Text“: (
„Ok! Eine Münze werfen....\n\n“
),
},
}
& # Der Konstruktor für die Klasse. Es nimmt den Kanalnamen als a an
#parameter und legt es dann als Instanzvariable fest
def __init__(self, Kanal):
self.channel = Kanal
# Generieren Sie eine Zufallszahl, um das Werfen einer Münze zu simulieren. Dann gib das zurück
# gefertigt slack-Payload mit der Coin-Flip-Meldung.
def _flip_coin(self):
rand_int = random.randint(0,1)
wenn rand_int == 0:
Ergebnisse = "Köpfe"
sonst:
Ergebnisse = „Zahlen“
text = f „Das Ergebnis ist {results}“
return {"type": "section", "text": {"type": "mrkdwn", "text": text}},
# Erstellen Sie die gesamte Nachrichtennutzlast und geben Sie sie als Wörterbuch zurück.
def get_message_payload(self):
Rückkehr {
„channel“: self.channel,
"Blöcke": [
self.COIN_BLOCK,
*self._flip_coin(),
],
}
Dann speichern und schließen wir unsere Datei mit einer Tastenkombination.
Jetzt kann unser Bot Nachrichten senden und Sie können diese zu Ihrer Arbeit hinzufügenspace.

Testnachrichten von unserem Slackbot

Überprüfen wir nun, ob unsere Klasse die richtige Last erstellt.
Erstellen Sie eine Datei mit dem Namen „coinbot_test.py“:

nano coinbot_test.py

Fügen Sie dann den folgenden Inhalt zur erstellten Datei hinzu
Wichtig: Stellen Sie sicher, dass Sie den Servernamen in Coin_bot = Coinbot("#YOUR_CHANNEL_HERE") in Ihren eigenen ändern.

from slack import WebClient
from coinbot import CoinBot
import os

# Ein ... kreieren slack client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

# Holen Sie sich einen neuen CoinBot
coin_bot = CoinBot("#YOUR_CHANNEL_HERE")

# Holen Sie sich die Nutzlast der Onboarding-Nachricht
message =coin_bot.get_message_payload()

# Veröffentlichen Sie die Onboarding-Nachricht in Slack
slack_web_client.chat_postMessage(**Nachricht)
Speichern und schließen Sie diese Datei.
Bevor Sie den Test ausführen, müssen Sie Ihr Token exportieren, das auf der aufgeführt ist Slak API:
Your Slack API token
Exportieren Sie nun Ihr Token:

export SLACK_TOKEN="Your token"

Jetzt können wir unseren Bot testen. Führen Sie das folgende Skript in Ihrem Terminal aus:

python coinbot_test.py

Danach wird Ihnen eine Nachricht über einen Münzwurf in dem Kanal gesendet, auf dem Sie Ihre Anwendung installiert haben. Stellen Sie sicher, dass Ihr Bot Ihnen tatsächlich Kopf oder Zahl gegeben hat.

Erstellen einer Flask-App zur Ausführung Slackbot

Da Ihr Bot nun eine Münze werfen, Nachrichten erstellen und senden kann, stellen wir Flask bereit, das die Nachrichten verarbeitet und auf sie reagiert, wenn ihr Inhalt bestimmten Kriterien entspricht.
Zuerst konfigurieren wir das firewall Einstellungen, um Datenverkehr auf Port 3000 zuzulassen:

sudo ufw allow 3000

Überprüfen Sie nun den Status von ufw:

sudo ufw status

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Output
status: active

Zur Aktion von
-- ------ ----
OffenSSH    Überall zulassen
3000 überall erlauben
OffenSSH (v6) Überall zulassen (v6)
3000 (v6) Überall zulassen (v6)

Anschließend erstellen wir eine Datei für unsere Flask-Anwendung.
Nennen wir diese Datei app.py:

touch app.py

Öffnen Sie diese Datei dann mit einem der Editoren. Wir werden Nano verwenden:

nano app.py

Fügen wir unserer app.py-Datei den folgenden Inhalt hinzu:

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

# Initialisieren Sie eine Flask-App, um den Ereignisadapter zu hosten
app = Flasche(__name__)
# Erstellen Sie einen Ereignisadapter und registrieren Sie ihn bei einem Endpunkt im slack-App zur Ereignisinjektion.
slack_events_adapter = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/events", App)

# Initialisieren Sie ein Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

def flip_coin(channel):
„““Erstellen Sie den CoinBot, werfen Sie die Münze und senden Sie die Nachricht an den Kanal
"" "
# Erstellen Sie einen neuen CoinBot
coin_bot = CoinBot(Kanal)

# Holen Sie sich die Nutzlast der Onboarding-Nachricht
message =coin_bot.get_message_payload()

# Veröffentlichen Sie die Onboarding-Nachricht in Slack
slack_web_client.chat_postMessage(**Nachricht)

# Wenn der Ereignisadapter ein „Nachrichten“-Ereignis erkennt, leiten Sie diese Nutzlast weiter
# zu dieser Funktion.
@slack_events_adapter.on("Nachricht")
Def-Nachricht (Nutzlast):
„““Parsen Sie das Nachrichtenereignis und wenn die Aktivierungszeichenfolge im Text enthalten ist,
Simulieren Sie einen Münzwurf und senden Sie das Ergebnis.
"" "

# Holen Sie sich die Ereignisdaten aus der Nutzlast
event = payload.get("event", {})

# Holen Sie sich den Text des aufgetretenen Ereignisses
text = event.get("text")

# Überprüfen Sie, ob der Aktivierungssatz im Text der Nachricht enthalten war.
# Wenn ja, führen Sie den Code aus, um eine Münze zu werfen.
wenn „Hey Sammy, wirf eine Münze“ in text.lower():
# Da die Aktivierungsphrase erfüllt wurde, rufen Sie die Kanal-ID des Ereignisses ab
# wurde ausgeführt am
channel_id = event.get("channel")

# Führen Sie die Funktion flip_coin aus und senden Sie die Ergebnisse von
# eine Münze in den Kanal werfen
return flip_coin(channel_id)

if __name__ == "__main__":
# Erstellen Sie das Protokollierungsobjekt
logger = logging.getLogger()

# Setzen Sie die Protokollebene auf DEBUG. Dadurch wird die Ausführlichkeit der Protokollierungsnachrichten erhöht
logger.setLevel(Protokollierung.DEBUG)

# StreamHandler als Protokollierungshandler hinzufügen
logger.addHandler(logging.StreamHandler())

# Führen Sie unsere App stattdessen auf unserer externen IP-Adresse auf Port 3000 aus
# Führen Sie es auf localhost aus, was für die Entwicklung traditionell ist.
app.run(host='0.0.0.0', port=3000)
Speichern und schließen Sie die Datei.
ErklärungnatIon: Wir fügen die folgenden Aussagen hinzu, weil:

import os - Wir werden verwenden, um auf Umgebungsvariablen zuzugreifen

Protokollierung importieren - Wir werden es verwenden, um Anwendungsereignisse zu protokollieren.

aus Flaschenimport Flasche - Wir werden eine Flask-Anwendung erstellen

für slack import WebClient - Wir werden verwenden, um Nachrichten zu senden Slack

für slackeventsapi importieren SlackEventAdapter - Wir werden verwenden, um Ereignisse von zu empfangen Slaprüfen und verarbeiten

Von Coinbot importieren Sie CoinBot - Wir werden es verwenden, um Ihren CoinBot zu instanziieren und die Nachrichtennutzlast zu generieren.

Starten Sie Ihre Flask-Anwendung

Schließlich ist unsere Flask-Anwendung bereit, mit der Anwendung zu arbeiten. Testen wir sie.
Fügen wir zunächst unsere hinzu Slackbot-App.
Auf dem Slack API Gehen Sie auf der Seite „Grundlegende Informationen“ zum Abschnitt „Grundlegende Informationen“ und scrollen Sie nach unten zum Unterabschnitt „App-Anmeldeinformationen“:
The secret of signing your application in Slack API

CliKlicken Sie auf „Anzeigen“, wie im Screenshot gezeigt, und kopieren Sie dann das Signaturgeheimnis.
Jetzt exportieren wir unsere SignaturnatIhr Geheimnis mit diesem Befehl:

export SLACK_EVENTS_TOKEN="MY_SIGNING_SECRET_TOKEN"

Jetzt können wir unsere Anwendung testen.
Starten Sie die Flask-Anwendung mit diesem Code:

python3 app.py

Beispiel für die Ausgabe:

(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)

Lassen Sie uns nun die Einrichtung unserer Anwendung im abschließen Slack-Benutzeroberfläche.
Zunächst werden wir unserer Anwendung das Recht einräumen, Aktivitäten im Chat zu lesen, zu verarbeiten und darauf zu antworten.
Wählen Sie im Menü der Benutzeroberfläche den Abschnitt „Ereignisabonnements“ und stellen Sie den Kippschalter „Ereignisse aktivieren“ auf die Position „Ein“, wie im Screenshot gezeigt:
Enable events toggle switch in Slack API

 

Öffnen Sie anschließend das Menü „Bot-Ereignisse abonnieren“ und wählen Sie „ message.channels:

 

Adding permission for your Slack API app

Nach unseren Maßnahmen wird Ihre Bewerbung in Zukunft die Möglichkeit haben, Nachrichten zu verarbeiten.
Sobald Sie die Änderungen gespeichert haben, wird oben auf dem Bildschirm ein gelbes Kontextmenü angezeigt, das Sie darüber informiert, dass Sie die Anwendung neu installieren müssen, um die folgenden Änderungen zu übernehmen.
CliKlicken Sie auf den Link zur Neuinstallation in diesem Banner, um die App neu zu installieren:

Notice about reinstalling the app to apply Slack API changes
Anschließend wird ein Kontextmenü angezeigt, in dem die neuen Berechtigungen angewendet werden. Wenn Sie mit allem einverstanden sind, cliKlicken Sie auf „Zulassen“:

Allow the app in your Slack0 API workspace
Schließlich wird unser Bot bereit sein. Gehen Sie zu Ihrem Chat und senden Sie eine Nachricht mit dem Satz „Hey Danny, wirf eine Münze“.
Sie werden Ihr Glück überprüfen und Ihnen das Ergebnis zeigen. Herzlichen Glückwunsch, wir haben unseren Bot gestartet!

Abstimmung:
5 aus 5
Durchschnittliche Bewertung: 5
Bewertet von: 1
1101 CT Amsterdam Niederlande, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Wir verwenden Cookies, um Ihr Erlebnis auf der Website zu verbessern Serverspace besser. Indem Sie weiterhin auf unserer Website surfen, stimmen Sie unseren zu
Cookies und Datenschutzbestimmungen.