{"id":67775,"date":"2023-12-08T14:32:41","date_gmt":"2023-12-08T13:32:41","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=67775&#038;preview=true&#038;preview_id=67775"},"modified":"2023-12-15T18:25:46","modified_gmt":"2023-12-15T17:25:46","slug":"slack-benachrichtigungen-zur-anwendung","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/","title":{"rendered":"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung"},"content":{"rendered":"<p>Im Bereich des Hochleistungshostings und der vielseitigen Entwicklungstools sticht Kinsta als f\u00fchrende Plattform f\u00fcr <a href=\"https:\/\/kinsta.com\/de\/wordpress-hosting\/\">WordPress<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungen<\/a>, <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Datenbanken<\/a> und sogar <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">kostenloses Statische-Website-Hosting<\/a> hervor.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/de\/blog\/wie-man-slack-nutzt\/\">Slack<\/a>, das f\u00fcr seine Slash Commands bekannt ist, l\u00e4sst sich nahtlos in die von Kinsta gehosteten Anwendungen und Dienste integrieren und erm\u00f6glicht es den Nutzern, Aufgaben zu automatisieren und die Effizienz deutlich zu steigern.<\/p>\n<p>In diesem Leitfaden wird erkl\u00e4rt, wie du die Echtzeitkommunikation zwischen Slack und einer auf Kinsta gehosteten Python-Anwendung einrichtest. Durch die Nutzung von Slash Commands k\u00f6nnen die Nutzer der Anwendung schnell Produkte erstellen, abfragen und l\u00f6schen.<\/p>\n<p>Diese Integration erm\u00f6glicht es ihnen, ihren Produktbestand dynamisch zu aktualisieren und so schnell auf Kundenw\u00fcnsche zu reagieren.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Die Slash-Befehle von Slack verstehen<\/h2>\n<p>Slack Slash-Befehle sind textbasierte Abk\u00fcrzungen. Sie beginnen mit einem Schr\u00e4gstrich (<code>\/<\/code>), gefolgt von einem bestimmten Schl\u00fcsselwort und einem optionalen Parameter.<\/p>\n<p>Slash-Befehle l\u00f6sen Aktionen aus oder interagieren direkt mit Integrationen innerhalb der Slack-Oberfl\u00e4che. Mit <code>\/remind<\/code> kannst du zum Beispiel direkt \u00fcber Slack-Benachrichtigungen Erinnerungen einstellen.<\/p>\n<p>Mit <a href=\"https:\/\/kinsta.com\/de\/blog\/slack-integrationen\/\">Slack-Integrationen<\/a> kannst du ma\u00dfgeschneiderte Befehle f\u00fcr deine Anwendungen konfigurieren. In diesem Leitfaden kann dein Team mit dem <code>\/check_inventory<\/code> Slash Command und anderen Befehlen m\u00fchelos das Inventar unserer Produkt-Anwendung abfragen.<\/p>\n<p>Die Integration von Slack in deine Anwendungen f\u00f6rdert die nahtlose Interaktion und optimierte Arbeitsabl\u00e4ufe an einem modernen Arbeitsplatz. Es verbessert die Kommunikation und Produktivit\u00e4t \u00fcber:<\/p>\n<ul>\n<li><strong>Ein zentraler Kommunikationsknotenpunkt<\/strong> &#8211; Slack fungiert als einheitlicher Raum f\u00fcr Teams. Durch die Integration von Anwendungen in Slack werden die Kan\u00e4le konsolidiert, sodass Unterhaltungen und Informationen an einem Ort stattfinden und die Effizienz gesteigert wird.<\/li>\n<li><strong>Aktualisierungen in Echtzeit<\/strong> &#8211; Integrierte Anwendungen informieren sofort \u00fcber wichtige Ereignisse, damit alle informiert bleiben und schnell auf \u00c4nderungen oder Aktualisierungen reagieren k\u00f6nnen.<\/li>\n<li><strong>Optimierte Arbeitsabl\u00e4ufe<\/strong> &#8211; Integrationen automatisieren Aufgaben wie Benachrichtigungen von Projektmanagement-Tools oder das Ausl\u00f6sen von Aktionen in CRM-Software und reduzieren so die manuelle Arbeit.<\/li>\n<li><strong>Verbesserte Zusammenarbeit<\/strong> &#8211; Wenn Teammitglieder direkt von Slack aus auf Anwendungen zugreifen, f\u00f6rdert das die nahtlose Zusammenarbeit. Sie k\u00f6nnen ganz einfach Dateien austauschen, bearbeiten und Projekte besprechen, was die Teamarbeit \u00fcber alle Funktionen hinweg f\u00f6rdert.<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Du kannst die <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> zusammen mit den Slash-Befehlen von Slack nutzen, um deine auf Kinsta gehosteten <a href=\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\">Anwendungen, Datenbanken und Websites zu verwalten<\/a>.<\/p>\n<\/aside>\n\n<h2>Wie man eine Python-Anwendung auf Kinsta erstellt<\/h2>\n<p>Lass uns eine Produktmanagement-Anwendung auf Kinsta erstellen und bereitstellen. Dann integrierst du sie in Slack, um die Slash-Befehle zu erkunden. Die Benutzer k\u00f6nnen die Produkte des Inventars \u00fcber Slash Commands in Slack hinzuf\u00fcgen, l\u00f6schen und abfragen.<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Um diesem Leitfaden zu folgen, setzen wir voraus, dass du Folgendes hast<\/p>\n<ul>\n<li>Grundkenntnisse in <a href=\"https:\/\/kinsta.com\/de\/thema\/python\/\">Python<\/a><\/li>\n<li>Ein <a href=\"https:\/\/slack.com\/workspace-signin\" target=\"_blank\" rel=\"noopener noreferrer\">Slack-Konto<\/a><\/li>\n<\/ul>\n<p>Als Erstes wollen wir ein Python-Projekt auf Kinsta einrichten. Befolge dazu die unten stehenden Schritte:<\/p>\n<ol start=\"1\">\n<li>Besuche die <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python-Vorlage von Kinsta<\/a> auf GitHub.<\/li>\n<li>W\u00e4hle <strong>Diese Vorlage verwenden<\/strong> &gt; <strong>Neues Repository erstellen<\/strong>, um den Startcode in ein Repository in deinem <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-github\/\">GitHub-Konto<\/a> zu kopieren.<\/li>\n<li>Sobald dein Repository fertig ist, logge dich ein oder erstelle ein Konto, um dein <a href=\"https:\/\/my.kinsta.com\/?lang=de\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta-Dashboard<\/a> zu sehen.<\/li>\n<li>Autorisiere Kinsta bei deinem Git-Anbieter (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> oder <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>).<\/li>\n<li>Klicke in der linken Seitenleiste auf <strong>Anwendungen<\/strong> und dann auf <strong>Anwendung hinzuf\u00fcgen<\/strong>.<\/li>\n<li>W\u00e4hle das Repository und den Zweig aus, von dem aus du die Anwendung bereitstellen m\u00f6chtest.<\/li>\n<li>Gib deiner Anwendung einen eindeutigen Namen und w\u00e4hle den Standort deines Rechenzentrums.<\/li>\n<li>Als N\u00e4chstes konfigurierst du deine Build-Umgebung. W\u00e4hle die <strong>Standard-Build-Maschinen-Konfiguration<\/strong> mit der f\u00fcr diese Demo empfohlenen <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks-Option<\/a>.<\/li>\n<li>Verwende alle Standardkonfigurationen und klicke dann auf <strong>Anwendung erstellen<\/strong>.<\/li>\n<\/ol>\n<p>Die Bereitstellung dauert in der Regel ein paar Minuten. Wenn sie erfolgreich war, erh\u00e4ltst du einen Link zu deiner Anwendung und ein Dashboard mit Informationen zur Bereitstellung.<\/p>\n<h2>So richtest du die Slack-Integration in deiner Python-Anwendung ein<\/h2>\n<p>Beginnen wir mit der Erstellung einer Slack-Anwendung und konfigurieren dann die Slack-Befehle, die \u00fcber einige Token mit deiner Python-Anwendung verbunden werden sollen. Konfigurieren wir eine Slack-Anwendung:<\/p>\n<ol start=\"1\">\n<li>Rufe das <a href=\"https:\/\/api.slack.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Slack API<\/a> Dashboard auf.<\/li>\n<li>Klicke auf <strong>Neue Anwendung erstellen<\/strong> und w\u00e4hle <strong>From Scratch<\/strong>.<\/li>\n<li>Gib deiner Slack-Anwendung einen Namen (z. B. <strong>product-inventory<\/strong>).<\/li>\n<li>W\u00e4hle den Arbeitsbereich aus und klicke auf <strong>Anwendung\u00a0erstellen<\/strong>.<\/li>\n<\/ol>\n<p>Nun zur Authentifizierung:<\/p>\n<ol start=\"1\">\n<li>Aktiviere den <strong>Socket-Modus<\/strong> in der Seitenleiste deines Slack Dashboards.<\/li>\n<li>Erstelle ein Token auf Anwendung-Ebene, indem du einen Token-Namen eingibst und auf <strong>Generieren<\/strong> klickst.<\/li>\n<li>Speichere dieses Anwendung-Level-Token, um sp\u00e4ter Umgebungsvariablen zu konfigurieren.<\/li>\n<\/ol>\n<h3>So konfigurierst du Slash-Befehle<\/h3>\n<p>So richtest du die Slash-Befehle f\u00fcr deine Anwendung\u00a0 ein:<\/p>\n<ol start=\"1\">\n<li>Navigiere im Slack API Dashboard unter <strong>Basisinformationen<\/strong> zum Abschnitt <strong>Funktionen<\/strong>. W\u00e4hle <strong>Slash-Befehle<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/slack-api-features.png\" alt=\"Slack API Dashboard mit Optionen zum Hinzuf\u00fcgen von Features und Funktionen\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Slack API Dashboard mit Optionen zum Hinzuf\u00fcgen von Features und Funktionen<\/figcaption><\/figure><\/li>\n<li>Klicke auf <strong>Neuen Befehl erstellen<\/strong>, um einen neuen Befehl zu konfigurieren.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-slash-command.jpg\" alt=\"Slack-Seite \"Neuen Befehl erstellen\" mit Optionen f\u00fcr den Befehl, einer kurzen Beschreibung und einem Hinweis auf die Verwendung. Au\u00dferdem gibt es Details zu Escape-Kan\u00e4len, Nutzern und Links, die an deine Anwendung gesendet werden, sowie eine Vorschau auf einen Autovervollst\u00e4ndigungseintrag\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Seite &#8222;Neuen Befehl erstellen&#8220; auf Slack<\/figcaption><\/figure><\/li>\n<li>Auf der Seite &#8222;Neuen <strong>Befehl erstellen<\/strong> &#8220; gibst du die Details f\u00fcr deinen neuen Slash-Befehl ein. Gib zum Beispiel <code>\/hi<\/code> in das Feld Befehl ein. F\u00fcge optional eine kurze Beschreibung hinzu, z.B. &#8222;Sagt Hallo!&#8220;, und gib einen Hinweis auf die Verwendung. Klicke auf <strong>Speichern<\/strong>.<\/li>\n<li>Klicke im Abschnitt Anwendung installieren in der Seitenleiste auf <strong>In Arbeitsbereich installieren<\/strong>.<\/li>\n<li>Rufe das OAuth-Token des Bot-Benutzers auf, indem du in der Seitenleiste auf <strong>OAuth &#038; Permissions<\/strong> gehst. Speichere dieses Token f\u00fcr sp\u00e4tere Zwecke.<\/li>\n<\/ol>\n<h3>So f\u00fcgst du Token zur Anwendungsbereitstellung von Kinsta hinzu<\/h3>\n<ol start=\"1\">\n<li>Gehe zum Abschnitt <strong>Umgebungsvariablen <\/strong>unter <strong>Einstellungen<\/strong> deiner Anwendungsbereitstellung in MyKinsta.<\/li>\n<li>Klicke auf <strong>Umgebungsvariable hinzuf\u00fcgen<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/environment-variables-kinsta.png\" alt=\"Slack Umgebungsvariable hinzuf\u00fcgen Popup mit Schl\u00fcsseln, Werten und der Option, sie zu entfernen oder eine weitere hinzuzuf\u00fcgen\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Slack Umgebungsvariable hinzuf\u00fcgen Popup<\/figcaption><\/figure><\/li>\n<li>F\u00fcge f\u00fcr <strong>Schl\u00fcssel 1<\/strong>, SLACK_BOT_TOKEN, das OAuth-Token des Bot-Benutzers in <strong>Wert 1<\/strong> ein. F\u00fcr <strong>Schl\u00fcssel 2<\/strong>, SLACK_APP_TOKEN, f\u00fcge den Anwendungs-Level-Token in <strong>Wert 2<\/strong> ein.<\/li>\n<li>Vergewissere dich, dass beide Optionen markiert sind, und klicke auf <strong>Jetzt bereitstellen<\/strong>, damit Kinsta deine Anwendung mit den Umgebungsvariablen neu bereitstellen kann.<\/li>\n<\/ol>\n<h2>So implementierst du die Kommunikation in Echtzeit<\/h2>\n<p>F\u00fcr diese Demo verwendest du das <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">Python-Template von Kinsta<\/a>, das die folgenden Dateien enth\u00e4lt:<\/p>\n<ul>\n<li><strong>Procfile<\/strong> &#8211; Legt die Befehle fest, mit denen deine Anwendung ausgef\u00fchrt wird.<\/li>\n<li><strong>requirements.txt<\/strong> &#8211; Listet die Abh\u00e4ngigkeiten auf, die f\u00fcr die Python-Anwendung ben\u00f6tigt werden.<\/li>\n<li><strong>server.py<\/strong> &#8211; Die Hauptdatei der Python-Anwendung, die die serverseitigen Funktionen und Vorg\u00e4nge verwaltet.<\/li>\n<\/ul>\n<p>Kinsta erstellt beim Deployment einer Anwendung automatisch einen <a href=\"https:\/\/docs.sevalla.com\/applications\/processes\">Prozess<\/a>, der auf dem <strong>Procfile <\/strong>im Stammverzeichnis des Repository basiert. Das <strong>Procfile<\/strong> enth\u00e4lt den folgenden Code.<\/p>\n<pre><code class=\"language-python\">web: python server.py<\/code><\/pre>\n<p>Dieser Befehl f\u00fchrt den Code aus, den <strong>server.py<\/strong> enth\u00e4lt. Kinsta installiert auch die Python-Abh\u00e4ngigkeiten in der Datei <strong>requirements.txt<\/strong> w\u00e4hrend der Bereitstellung und des Redeployments.<\/p>\n<p>Nun wollen wir das <a href=\"https:\/\/slack.dev\/bolt-python\/concepts\" target=\"_blank\" rel=\"noopener noreferrer\">Bolt-Framework<\/a> verwenden, um die Echtzeitkommunikation mit deiner Anwendung einzurichten. F\u00fcge die folgenden Zeilen in die Datei <strong>requirements.txt<\/strong> ein, um Bolt automatisch auf deiner Python-Anwendung zu installieren, wenn du das Repository aktualisierst.<\/p>\n<pre><code class=\"language-markdown\">slack-bolt==1.18.0\nslack-sdk==3.23.0<\/code><\/pre>\n<p>F\u00fcge au\u00dferdem die Bibliothek <code>psycopg2<\/code> in die Datei <strong>requirements.txt<\/strong> ein. Diese wird f\u00fcr die Verbindung mit einer Postgres-Datenbank verwendet.<\/p>\n<pre><code class=\"language-markdown\">psycopg2-binary==2.9.9<\/code><\/pre>\n<h3>So implementierst du eine Postgres-Datenbank mit Kinsta<\/h3>\n<p>Die Produktinventarisierungs-Anwendung braucht eine M\u00f6glichkeit, die Produktdaten, die Slash Commands der <a href=\"https:\/\/kinsta.com\/database\/\">Datenbank<\/a> hinzuf\u00fcgt, dauerhaft zu speichern. Um die Daten dauerhaft zu speichern, kannst du die gehostete Datenbank von Kinsta nutzen.<\/p>\n<ol start=\"1\">\n<li>Richte zun\u00e4chst eine <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Postgres-Datenbank<\/a> in deinem Kinsta-Dashboard ein, indem du zum Abschnitt <strong>Datenbanken<\/strong> in der Seitenleiste des MyKinsta-Dashboards navigierst.<\/li>\n<li>Klicke auf <strong>Datenbank erstellen<\/strong>. Konfiguriere die Details deiner Datenbank, indem du einen Namen eingibst und den Datenbanktyp ausw\u00e4hlst. W\u00e4hle die Option <strong>PostgreSQL<\/strong> und gib die gew\u00fcnschte Gr\u00f6\u00dfe an. Ein <strong>Datenbank-Benutzername<\/strong> und ein <strong>Passwort<\/strong> werden automatisch generiert:\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-database-app.png\" alt=\"Formular zur Erstellung einer Datenbank. Zu den Feldern geh\u00f6ren der Datenbankname, der Anzeigename, der Datenbanktyp und die Version, der Benutzername und das Passwort f\u00fcr die Datenbank, der Standort des Rechenzentrums und die Gr\u00f6\u00dfe. Am unteren Rand des Formulars befinden sich zwei Schaltfl\u00e4chen: Abbrechen und Weiter\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Formular zum Erstellen einer Datenbank<\/figcaption><\/figure><\/li>\n<li>Klicke auf <strong>Weiter<\/strong>, um die Einrichtung deiner Datenbank abzuschlie\u00dfen. Warte, bis die PostgreSQL-Datenbank erstellt wurde.<br \/>\nWenn die Erstellung erfolgreich war, kannst du den Verbindungsstring f\u00fcr den externen Zugriff auf deine Datenbank abrufen, indem du zum Abschnitt <strong>Externe Verbindungen<\/strong> im Dashboard deiner eingerichteten Datenbank navigierst und den externen Verbindungsstring kopierst.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/basic-info-database.png\" alt=\"Die Infoseite f\u00fcr das eingesetzte Datenbank-Dashboard. Zu den Details geh\u00f6ren Ressourcen, Standort, Version, Erstellungsdatum, eine Liste der internen Verbindungen und Informationen zu den internen Verbindungen, einschlie\u00dflich des Verbindungsstrings\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Informationen zur externen Verbindung der Datenbank<\/figcaption><\/figure>\n<p>Jetzt kannst du diesen Verbindungsstring verwenden, um dich von deiner Python-Anwendung aus mit der Datenbank zu verbinden.<\/p>\n<p><aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Speichere den Verbindungsstring im Dashboard deiner Python-Anwendung als Umgebungsvariable unter <code>DATABASE_CONNECTION_STRING<\/code>, so wie du es zuvor mit deinen Slack-Tokens getan hast.<\/p>\n<\/aside>\n<\/li>\n<li>Erstelle in deinem Python-Projekt eine Datei <strong>db.py<\/strong> in deinem Projektverzeichnis f\u00fcr die Datenbankinitialisierungsfunktionen. F\u00fcge den folgenden Code ein:\n<pre><code class=\"language-python\">import psycopg2\nimport os\n\n# get connection string from environment variable\nconnection_string = os.environ.get(\"DATABASE_CONNECTION_STRING\")\n \ndef get_conn():\n   # create connection\n   conn = psycopg2.connect(connection_string)\n\n   # Return connection to the database\n   return conn\n     \ndef init_db():\n   # get connection\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   cur.execute(\"\"\"\n       DROP TABLE IF EXISTS products;\n                   \n       CREATE TABLE products (\n           id INTEGER PRIMARY KEY,\n           name TEXT UNIQUE NOT NULL,\n           quantity INTEGER NOT NULL\n       );\n   \"\"\")\n\n   cur.close()\n   conn.commit()\n   conn.close()<\/code><\/pre>\n<p>Wenn die Funktion <code>get_conn()<\/code> aufgerufen wird, erstellt sie eine Verbindung zu der bereitgestellten Kinsta-Datenbank und gibt sie mit deinem externen Verbindungsstring zur\u00fcck.<\/p>\n<p>Die Funktion <code>init_db()<\/code> ruft eine Datenbankverbindung ab, definiert das Datenbankschema und erstellt die Tabelle, w\u00e4hrend sie gleichzeitig die \u00c4nderungen festschreibt. Du solltest die Funktion <code>init_db()<\/code> nur einmal aufrufen, wenn du den Anwendungsserver einrichtest. Verwende die Funktion <code>get_conn()<\/code> bei sp\u00e4teren Aufrufen, um eine Verbindung zur Datenbank herzustellen.<\/li>\n<\/ol>\n<h3>So implementierst du die Slash Command Handler<\/h3>\n<p>Erstelle nun den Code des Anwendungsservers.<\/p>\n<ol start=\"1\">\n<li>L\u00f6sche den Inhalt der Datei <strong>server.py<\/strong> und importiere die folgenden Bibliotheken:\n<pre><code class=\"language-python\">import os\nfrom slack_bolt import App\nfrom slack_bolt.adapter.socket_mode import SocketModeHandler\nfrom db import get_conn, init_db\nfrom psycopg2 import DatabaseError<\/code><\/pre>\n<p>Diese werden f\u00fcr die Funktionalit\u00e4t der Slack-Anwendung, die Datenbankverbindungen und die Fehlerbehandlung ben\u00f6tigt.<\/li>\n<li>F\u00fcge den folgenden Code in die Datei <strong>server.py<\/strong> nach den import-Anweisungen ein:\n<pre><code class=\"language-python\"># Initialize your app with your bot token\napp = App(\n  token=os.environ.get(\"SLACK_BOT_TOKEN\"),\n)<\/code><\/pre>\n<p>Die Klasse <code>App<\/code> von <code>slack_bolt<\/code> wird verwendet, um eine Instanz der Slack-Anwendung zu erstellen. Sie initialisiert die Anwendung mit dem OAuth-Token des Bot-Benutzers, der aus der Umgebungsvariablen <code>SLACK_BOT_TOKEN<\/code> abgerufen wird.<\/li>\n<li>Als N\u00e4chstes implementierst du einen Handler f\u00fcr den <code>\/hi<\/code> Slash-Befehl, den du zuvor zu deiner Slack-Anwendung hinzugef\u00fcgt hast. F\u00fcge die folgenden Zeilen in die Datei <strong>server.py<\/strong> ein.\n<pre><code class=\"language-python\"># The hi command simply sends back a greeting\n@app.command(\"\/hi\")\ndef send_hello(ack, respond, command):\n  # Acknowledge command request\n  ack()\n  respond(f\"Hello!\")<\/code><\/pre>\n<p><code>@app.command()<\/code> erstellt einen Listener f\u00fcr den als Argument \u00fcbergebenen Befehlsstring und bildet die folgende Funktion f\u00fcr die Anfragen dieses Slash Command ab. Die Funktion <code>send_hello()<\/code> verwaltet die Anfragelogik.<\/p>\n<p>Der Code \u00fcbergibt au\u00dferdem die Anforderungsvariablen <code>ack<\/code>, <code>respond<\/code> und <code>command<\/code>, die die Funktion verwenden soll. Rufe <code>ack<\/code> auf, um die Slash Command-Anfrage zu best\u00e4tigen, da dies der erste Schritt vor der weiteren Verarbeitung ist, und rufe <code>respond<\/code> auf, um eine Textantwort zur\u00fcckzusenden.<\/p>\n<p>Wenn der Nutzer den Slash Command <code>\/hi<\/code> in deinem Slack-Arbeitsbereich eingibt, erh\u00e4lt er die Antwort &#8222;Hallo!&#8220;<\/li>\n<li>Kehre zum Dashboard deiner Slack-Anwendung zur\u00fcck und f\u00fcge die folgenden Befehle hinzu.<br \/>\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Befehl<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Kurzbeschreibung<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Hinweis zur Verwendung<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/add_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">F\u00fcge ein Produkt zum Inventar hinzu.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id, product_name, product_quantity<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/check_inventory<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Suche nach einem Produkt mit einer passenden ID im Bestand.<\/td>\n<td colspan=\"1\" rowspan=\"1\">produkt_id<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/delete_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Produkt mit passender ID aus dem Bestand l\u00f6schen.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Jetzt sollte deine <strong>Slash-Befehlsseite<\/strong> wie der folgende Screenshot aussehen und eine Liste der Befehle und ihrer Details enthalten.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/all-slash-commands.png\" alt=\"Schr\u00e4gstrich-Befehlsseite, die den Namen und die Beschreibung jedes Befehls mit Optionen zum Bearbeiten oder L\u00f6schen auflistet, sowie eine Schaltfl\u00e4che \"Neuen Befehl erstellen\"\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Slack API Slash-Befehlsseite<\/figcaption><\/figure><\/li>\n<li>F\u00fcge den <code>\/add_product<\/code> Handler in die Datei <strong>server.py<\/strong> ein.\n<pre><code class=\"language-python\"># command to add products\n@app.command(\"\/add_product\")\ndef add_product(ack, respond, command, request):\n #Acknowledge command request\n ack()\n\n # Extract payload from request\n payload = request.body['text']\n id, name, quantity = [i.strip() for i in payload.split(\",\")]\n  \n # conn object\n conn = None\n\n try:\n   # get conn\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   # Insert product into the database\n   cur.execute(\n     \"INSERT INTO products (id, name, quantity) VALUES (%s, %s, %s)\",\n       (int(id), name, int(quantity))\n   )\n   \n   # close communication with postgresql\n   cur.close()\n   \n   # commit changes\n   conn.commit()\n   \n   # Response\n   respond(f\"\"\"Added product to inventory:\n     id - {id},\n     name - {name},\n     quantity - {quantity}\n   \"\"\")\n\n except DatabaseError:\n   # Send a response\n   respond(f\"Product with ID {id} exists in inventory!\")\n  \n finally:\n   # close connection\n   if conn is not None:\n     conn.close()<\/code><\/pre>\n<p><code>request.body<\/code> greift auf den vollst\u00e4ndigen Request Payload zu, den Slack w\u00e4hrend des Bearbeitungsprozesses sendet.<\/p>\n<p>Wenn ein Nutzer den <code>\/add_product<\/code> Slash-Befehl eingibt, sendet die Anwendung die folgende JSON-Nutzdaten als POST-Anfrage.<\/p>\n<pre><code class=\"language-python\">{\n    'token': , \n    'team_id': , \n    'team_domain': , \n    'channel_id': , \n    'channel_name': , \n    'user_id': , \n    'user_name': , \n    'command': '\/add_product', \n    'text': '1, notebook, 5', \n    'api_app_id': , \n    'is_enterprise_install': , \n    'response_url': , \n    'trigger_id': \n}<\/code><\/pre>\n<p>Die Felder <code>command<\/code> und <code>text<\/code> sind enthalten. <code>command<\/code> enth\u00e4lt den ausgel\u00f6sten Slash Command, w\u00e4hrend <code>text<\/code> den zus\u00e4tzlichen Text enth\u00e4lt. Wenn der Benutzer zum Beispiel den Befehl <code>\/add_product 1, notebook, 5<\/code> eingibt, enth\u00e4lt <code>text<\/code> &#8222;1, notebook, 5&#8220;.<\/p>\n<p>Der <code>add_product<\/code> Handler extrahiert die ID, den Namen und die Menge des Produkts aus der Anfrage des Benutzers und stellt mit der Hilfsfunktion <code>get_conn()<\/code> eine Verbindung zur Datenbank her. Au\u00dferdem f\u00fchrt er eine SQL-Operation zum Einf\u00fcgen des Produkts in die Datenbank aus. Wenn die Produkt-ID bereits in der Datenbank existiert, behandelt der Code den Fehler und antwortet, dass die ID bereits existiert.<\/li>\n<li>F\u00fcge nun den Rest der Befehlshandler in die Datei <strong>server.py<\/strong> ein.\n<pre><code class=\"language-python\"># command to check inventory for a product_id\n@app.command(\"\/check_inventory\")\ndef check_inventory(ack, respond, command, request):\n   # Acknowledge command request\n   ack()\n\n   # Extract payload from request\n   id = request.body['text'].strip()\n\n   # Get a database connection\n   conn = None\n   try:\n       # get conn\n       conn = get_conn()\n\n       # get cursor\n       cur = conn.cursor()\n \n       # Fetch matching product with ID from database\n       cur.execute(\n           \"SELECT * FROM products WHERE id=%s\",\n           (int(id),)\n       )\n\n       product = cur.fetchone()\n\n       # close comms\n       cur.close()\n\n       if product is None:\n           respond(f\"No product with matching ID {id} found.\")\n       else:\n           # Deconstruct tuple if the product exists\n           _, name, quantity = product\n          \n           respond(f\"\"\"Product with ID {id} found:\n                      name - {name},\n                      quantity - {quantity}\n                  \"\"\")\n         \n   except Exception as e:\n       print(\"Connection error: %s\", e)\n         \n   finally:\n       # close connection\n       if conn is not None:\n           conn.close()\n\n# command to delete the matching product_id from inventory\n@app.command(\"\/delete_product\")\ndef delete_product(ack, respond, command, request):\n    #Acknowledge command request\n    ack()\n\n    # Extract payload from request\n    id = request.body['text'].strip()\n    \n    # Get connection\n    conn = None\n    try:\n        # Get connection\n        conn = get_conn()\n   \t \n        # get cursor\n        cur = conn.cursor()\n   \t \n        # Insert the product into the database\n        cur.execute(\n        \t\"DELETE FROM products WHERE id = %s\",\n        \t(int(id),)\n        )\n        cur.close()\n        conn.commit()\n   \t \n        # Response\n        respond(f\"Product with ID {id} deleted from inventory!\")\n    except Exception as e:\n        print(\"Connection error: %s\", e)\n    finally:\n        # close connection\n        if conn is not None:\n            conn.close()\n<\/code><\/pre>\n<p>Diese beiden Befehlshandler fragen die passende Produkt-ID im Inventar ab bzw. l\u00f6schen sie.<\/li>\n<\/ol>\n<h3>Wie man den Server ausf\u00fchrt<\/h3>\n<ol start=\"1\">\n<li>Um die Datenbankinitialisierung und die Socket-Verbindung zusammenzubringen, f\u00fcge die folgenden Zeilen in deine Datei <strong>server.py<\/strong> ein.\n<pre><code class=\"language-python\"># Start your app\nif __name__ == \"__main__\":\n    # Initialize database on start\n    init_db()\n\n    # Connect socket\n    handler = SocketModeHandler(app, os.environ[\"SLACK_APP_TOKEN\"])\n    handler.start()<\/code><\/pre>\n<p>Du musst <code>SocketModeHandler<\/code> mit deinem Anwendungs-Level-Token initialisieren. Verwende <code>SLACK_APP_TOKEN<\/code>, um auf die Umgebungsvariable zuzugreifen, die in der Kinsta-Anwendung eingesetzt wird.<\/li>\n<li>\u00dcbertrage die \u00c4nderungen in dein Remote-Repository, damit sie automatisch in Kinsta bereitgestellt werden. Jetzt initialisiert <strong>server.py<\/strong> die Datenbank und stellt die Socket-Verbindung her. Kinsta wird eine automatische Neuverteilung deiner Python-Anwendung ausl\u00f6sen.<\/li>\n<\/ol>\n<h2>Teste und behebe Fehler in deiner Anwendung<\/h2>\n<p>Du kannst deine Anwendung auf Slack mit den konfigurierten Slash-Befehlen testen.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li>Gehe zu dem Arbeitsbereich, der mit deiner Anwendung verkn\u00fcpft ist. Gib den Schr\u00e4gstrich (&#8218;\/&#8216;) ein, um die Befehle der Anwendung anzuzeigen:\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/testing-slack-slash-commands.png\" alt=\"Kinsta-Demo-Kanal mit einer Liste von Befehlen, darunter Produkt-ID im Bestand pr\u00fcfen, Produkt-ID, Name oder Menge hinzuf\u00fcgen, Produkt-ID l\u00f6schen\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Der kinsta-demo Kanal<\/figcaption><\/figure><\/li>\n<li>Teste jeden Slash-Befehl. Gib zum Beispiel <code>\/hi<\/code> ein. Du erh\u00e4ltst die Antwort &#8222;Hallo!&#8220;\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/returns-hello.png\" alt=\"Antwort auf den Hi-Befehl\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Antwort auf den Hi-Befehl<\/figcaption><\/figure><\/li>\n<li>Teste, was passiert, wenn du das gleiche Produkt zweimal hinzuf\u00fcgst. F\u00fchre den Schr\u00e4gstrich-Befehl <code>\/add_product 1, notepad, 2<\/code> zwei Mal aus.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/adding-product.png\" alt=\"Ergebnis der zweimaligen Ausf\u00fchrung des Befehls \"Produkt hinzuf\u00fcgen\". Es wird eine Menge von 2 angezeigt\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Ein Produkt zweimal hinzuf\u00fcgen<\/figcaption><\/figure>\n<p>Wie der Screenshot oben zeigt, hat der erste Befehl funktioniert. Es wurde ein neues Produkt hinzugef\u00fcgt. Der zweite Befehl f\u00fchrte zu der Antwort, dass die ID bereits existiert.<\/li>\n<li>Versuche, die Produkt-ID abzufragen, die wir gerade hinzugef\u00fcgt haben. Gib <code>\/check_inventory 1<\/code> ein.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/getting-a-product.png\" alt=\"Abfrage einer Produkt-ID mit dem Befehl Bestandspr\u00fcfung. Er listet die ID, den Namen und die Menge.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">\u00dcberpr\u00fcfe den Bestand<\/figcaption><\/figure>\n<p>Die Abfrage liefert das Produkt mit der passenden ID.<\/li>\n<li>Versuche schlie\u00dflich, das hinzugef\u00fcgte Produkt zu l\u00f6schen. Gib <code>\/delete_product 1<\/code> ein.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/deleting-inventory.png\" alt=\"Nach dem L\u00f6schen des Produkts wird die Meldung angezeigt: Produkt mit ID 1 aus dem Bestand gel\u00f6scht!\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Ein Produkt l\u00f6schen<\/figcaption><\/figure><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>Fehlersuche und -behebung<\/h3>\n<p>Bei der Konfiguration und Bereitstellung deiner Anwendung k\u00f6nnen Fehler auftreten, die du beheben musst, damit deine Anwendung richtig funktioniert. Probiere die folgenden Methoden aus, um typische Fehler zu erkennen und zu beheben.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>\u00dcberpr\u00fcfe deine Token<\/strong>: Vergewissere dich, dass du dein Token auf Anwendungs-Ebene mit dem Bereich <code>connections:write<\/code> richtig konfiguriert hast, um den Zugriff \u00fcber den Socket-Modus zu erm\u00f6glichen. Verwende au\u00dferdem die richtigen Token f\u00fcr die Anwendungs-Klasse. Das Bot-Benutzer-Token beginnt mit <code>xoxb-&lt;...&gt;<\/code>. Verwende das Anwendungs-Level-Token (<code>xapp-&lt;...&gt;<\/code>) f\u00fcr die Klasse <code>SocketModeHandler<\/code>.<\/li>\n<li><strong>\u00dcberpr\u00fcfe deine Slash-Befehle<\/strong>: Vergewissere dich, dass du die Slash-Befehle im Dashboard deiner Slack-Anwendung konfiguriert und die richtigen Handler im Code deines Anwendungsservers konfiguriert hast.<\/li>\n<li><strong>Setze eine bessere Fehlerbehandlung ein<\/strong>: Stelle sicher, dass deine Anwendungslogik Fehler richtig behandelt, z. B. bei der Ausf\u00fchrung von Datenbankoperationen.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Zusammenfassung<\/h2>\n<p>In diesem Leitfaden hast du gelernt, wie du eine Python-Anwendung mit Echtzeitkommunikation \u00fcber die Slash-Befehle von Slack erstellst. Du hast auch gelernt, wie du die Anwendung auf Kinsta bereitstellst.<\/p>\n<p>Die Integration einer von Kinsta gehosteten Anwendung mit Slack erm\u00f6glicht es den Nutzern, mit Slash-Befehlen schnell \u00c4nderungen vorzunehmen, was die Interaktivit\u00e4t und die Effizienz der Arbeitsabl\u00e4ufe verbessert und gleichzeitig einen sofortigen Zugriff auf Echtzeitdaten erm\u00f6glicht. Die Mitarbeiter k\u00f6nnen jetzt nahtlos Produktbest\u00e4nde hinzuf\u00fcgen, l\u00f6schen oder \u00fcberpr\u00fcfen, ohne ihre Kommunikationsplattform zu verlassen, und so die Produktivit\u00e4t w\u00e4hrend eines arbeitsreichen Tages steigern.<\/p>\n<p>Kinstas <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-paas\/\">PaaS<\/a> bietet noch mehr M\u00f6glichkeiten &#8211; du kannst Anwendungen und Datenbanken miteinander verbinden und so Komplettl\u00f6sungen f\u00fcr Unternehmen und Betriebe bereitstellen. Und das Beste daran? Deine <a href=\"https:\/\/kinsta.com\/de\/anmelden\/\">ersten 20 Dollar werden von uns \u00fcbernommen<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Bereich des Hochleistungshostings und der vielseitigen Entwicklungstools sticht Kinsta als f\u00fchrende Plattform f\u00fcr WordPress, Anwendungen, Datenbanken und sogar kostenloses Statische-Website-Hosting hervor. Slack, das f\u00fcr seine &#8230;<\/p>\n","protected":false},"author":199,"featured_media":67776,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[974],"class_list":["post-67775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Slack-Kommunikation in Echtzeit (mit Python-Anwendung)<\/title>\n<meta name=\"description\" content=\"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung\" \/>\n<meta property=\"og:description\" content=\"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-08T13:32:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-15T17:25:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung\",\"datePublished\":\"2023-12-08T13:32:41+00:00\",\"dateModified\":\"2023-12-15T17:25:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\"},\"wordCount\":2411,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\",\"name\":\"Slack-Kommunikation in Echtzeit (mit Python-Anwendung)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\",\"datePublished\":\"2023-12-08T13:32:41+00:00\",\"dateModified\":\"2023-12-15T17:25:46+00:00\",\"description\":\"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Slack-Kommunikation in Echtzeit (mit Python-Anwendung)","description":"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/","og_locale":"de_DE","og_type":"article","og_title":"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung","og_description":"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!","og_url":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-12-08T13:32:41+00:00","article_modified_time":"2023-12-15T17:25:46+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Jeremy Holcombe","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung","datePublished":"2023-12-08T13:32:41+00:00","dateModified":"2023-12-15T17:25:46+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/"},"wordCount":2411,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/","url":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/","name":"Slack-Kommunikation in Echtzeit (mit Python-Anwendung)","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","datePublished":"2023-12-08T13:32:41+00:00","dateModified":"2023-12-15T17:25:46+00:00","description":"In diesem Leitfaden erf\u00e4hrst du, wie du eine nahtlose Integration der Slack-Kommunikation in Echtzeit f\u00fcr deine auf Kinsta gehostete Python-Anwendung erstellen kannst!","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/slack-notifications-to-app.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/slack-benachrichtigungen-zur-anwendung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/de\/thema\/python\/"},{"@type":"ListItem","position":3,"name":"Slack-Kommunikation in Echtzeit mit deiner Kinsta Hosted Python-Anwendung"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/de\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/67775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=67775"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/67775\/revisions"}],"predecessor-version":[{"id":67928,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/67775\/revisions\/67928"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/67775\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/67776"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=67775"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=67775"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=67775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}