Erstellen Slackbot verwenden Python on Ubuntu 20.04:
- Einleitung / Intro
- Vorbereitung
- Stapellauf Slackbot
- Konfigurieren Python.3
- Nachrichten von unserem Bot
- Testen Sie Aktionen mit unserem Bot
- Starten einer Flask-App
- Starten unserer Flask-App
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.
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:
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.
Anschließend ist Ihre App betriebsbereit. Sie könnten zur Systemsteuerung gehen.
Von 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:
Danach 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“:
Als nächsten Schritt müssen wir die Berechtigung hinzufügen chatten:schreiben. Sie können es im speziellen Schreibtisch suchen.
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:
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“:
Dann ist unser Bot einsatzbereit, Slack stellt Ihnen Ihr Benutzertoken zur Verfügung, das für den Zugriff auf Ihre Arbeit verwendet wirdspace:
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:
Wählen Sie anschließend einen Namen für Ihren Kanal aus und füllen Sie optional die Beschreibungsleiste aus.
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:
Wechseln Sie dann in das Menü „Integration“ und cliKlicken Sie auf die Schaltfläche „Anwendung hinzufügen“:
Suchen Sie dann nach dem Namen Ihrer Anwendung oder scrollen Sie einfach nach unten, um sie zu finden. In unserem Fall „CoinBot“:
Nach all unseren Aktionen wird der Bot in unserem Chat gestartet:
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:
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“:
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:
Öffnen Sie anschließend das Menü „Bot-Ereignisse abonnieren“ und wählen Sie „ message.channels:
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:
Anschließend wird ein Kontextmenü angezeigt, in dem die neuen Berechtigungen angewendet werden. Wenn Sie mit allem einverstanden sind, cliKlicken Sie auf „Zulassen“:
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!