{"id":65134,"date":"2023-08-22T09:23:24","date_gmt":"2023-08-22T08:23:24","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=65134&#038;preview=true&#038;preview_id=65134"},"modified":"2023-08-29T13:35:33","modified_gmt":"2023-08-29T12:35:33","slug":"kinsta-dienste-api-slack","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/","title":{"rendered":"Kinsta-Dienste mit Kinsta-API und Slack verwalten"},"content":{"rendered":"<p>Im Laufe der Jahre wurden unsere Dienste bei Kinsta immer manuell \u00fcber das MyKinsta-Dashboard bedient. Doch mit der Einf\u00fchrung der Kinsta-API und der laufenden Ver\u00f6ffentlichung neuer API-Endpunkte kannst du dein Spiel verbessern, indem du eine personalisierte Methode zur Nutzung der Kinsta-Dienste entwickelst. Eine solche Methode ist die Entwicklung eines Slackbots zur \u00dcberwachung und Verwaltung von Aktivit\u00e4ten wie der Erstellung von Websites.<\/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>Was du baust<\/h2>\n<p>In diesem Lernprogramm wird erkl\u00e4rt, wie du einen Slackbot (oder eine Slack-Anwendung) entwickelst, der mit der <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> interagiert, um Informationen abzurufen und sie als Echtzeitnachrichten an einen bestimmten Slack-Kanal zu senden, indem du die <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Slack-API Incoming Webhooks<\/a> verwendest.<\/p>\n<p>Zu diesem Zweck erstellst du eine <a href=\"https:\/\/kinsta.com\/de\/blog\/so-installierst-du-node-js\/\">Node.js<\/a>-Anwendung mit dem <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-express-js\/\">Express<\/a>-Framework, um eine Benutzeroberfl\u00e4che f\u00fcr die Erstellung von <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a>-Sites zu erstellen und sie in die Kinsta-API zu integrieren. Die Anwendung verwendet ein Formular, um die Konfigurationsdaten deiner WordPress-Site zu erfassen, und sendet dann eine Echtzeitaktualisierung der Site-Informationen und Informationen dar\u00fcber, wie du den Betriebsstatus \u00fcberpr\u00fcfen kannst, an den angegebenen Slack-Kanal.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/kinsta-services-slack.gif\" alt=\"Das Gif zeigt die Anwendung, die gebaut werden soll und wie sie Echtzeitinformationen an Slack sendet\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Das Gif zeigt die Anwendung, die gebaut werden soll und wie sie Echtzeitinformationen an Slack sendet<\/figcaption><\/figure>\n<h3>Voraussetzungen<\/h3>\n<p>Um an diesem Projekt mitzuarbeiten, solltest du folgende Voraussetzungen mitbringen:<\/p>\n<ul>\n<li>Grundkenntnisse in <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> und Node.js<\/li>\n<li>Node.js Version 12 oder h\u00f6her<\/li>\n<li>npm (<a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-npm\/\">Node Package Manager<\/a>) auf deinem Computer installiert haben<\/li>\n<li>Einen Slack-Arbeitsbereich<\/li>\n<\/ul>\n<h2>Einrichten der Entwicklungsumgebung<\/h2>\n<p>Um loszulegen, erstelle ein neues Verzeichnis f\u00fcr deine Anwendung und initialisiere es mit npm:<\/p>\n<pre><code class=\"language-bash\">mkdir my-express-app \ncd my-express-app \nnpm init -y<\/code><\/pre>\n<p>Nachdem du den Befehl <code>npm init -y<\/code> ausgef\u00fchrt hast, wird im Verzeichnis deines Projekts eine neue <strong>package.json<\/strong>-Datei mit Standardwerten erstellt. Diese Datei enth\u00e4lt wichtige Informationen \u00fcber dein Projekt und seine Abh\u00e4ngigkeiten.<\/p>\n<p>Als n\u00e4chstes installierst du die notwendigen Abh\u00e4ngigkeiten f\u00fcr dein Projekt. Die folgenden Abh\u00e4ngigkeiten sind unerl\u00e4sslich:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/ejs\" target=\"_blank\" rel=\"noopener noreferrer\">ejs<\/a>: EJS (Embedded JavaScript) ist eine Templating-Engine, mit der du dynamische HTML-Inhalte mit JavaScript erzeugen kannst.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a>: Express ist ein schnelles und minimalistisches Webanwendungs-Framework f\u00fcr Node.js. Es vereinfacht die Entwicklung von Webanwendungen und APIs, indem es wichtige Funktionen wie Routing, Middleware-Unterst\u00fctzung und die Verarbeitung von HTTP-Anfragen und -Antworten bietet.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express-ejs-layouts\" target=\"_blank\" rel=\"noopener noreferrer\">express-ejs-layouts<\/a>: Express EJS-Layouts ist eine Erweiterung f\u00fcr Express, die die Verwendung von Layouts oder Vorlagen erm\u00f6glicht, um eine einheitliche Struktur \u00fcber mehrere Ansichten hinweg zu erhalten.<\/li>\n<\/ul>\n<p>Um diese Abh\u00e4ngigkeiten zu installieren, f\u00fchre den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-bash\">npm install ejs express express-ejs-layouts<\/code><\/pre>\n<p>Au\u00dferdem musst du die folgenden Abh\u00e4ngigkeiten installieren, damit du dein Node.js-Projekt leichter bauen und testen kannst:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a>: Ein wertvolles Tool, das deine Node.js-Anwendung automatisch neu startet, wenn sich Dateien im Verzeichnis \u00e4ndern, und so f\u00fcr einen reibungslosen Entwicklungsablauf sorgt.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>: Dieses Zero-Dependency-Modul spielt eine wichtige Rolle beim Laden von Umgebungsvariablen aus einer <strong>.env<\/strong>-Datei.<\/li>\n<\/ul>\n<p>Um diese Dev-Abh\u00e4ngigkeiten zu installieren, f\u00fchre den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-bash\">npm install -D nodemon dotenv<\/code><\/pre>\n<p>Sobald deine <strong>package.json<\/strong> initialisiert ist und alle Abh\u00e4ngigkeiten installiert sind, erstelle eine neue Datei, z.B. <strong>app.js<\/strong>.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<p>Hier ist ein Standard-Setup f\u00fcr deine <strong>app.js<\/strong>-Datei, bei dem du die notwendigen Module importierst und festlegst, dass sie auf einem bestimmten Port l\u00e4uft:<\/p>\n<pre><code class=\"language-js\">\/\/ Import required modules\nconst express = require('express');\nconst app = express();\n\n\/\/ Set up your routes and middleware here\n\/\/ ...\n\n\/\/ Start the server to listen on the specified port\napp.listen(process.env.PORT || 3000, () =&gt; {\n  console.log(`Server is running on port ${process.env.PORT || 3000}`);\n});<\/code><\/pre>\n<p>Um deine Node.js-Anwendung zu starten, f\u00fchre den Befehl aus:<\/p>\n<pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<p>Eine solche Anwendung zu starten, bedeutet jedoch, dass du sie jedes Mal neu starten musst, wenn du \u00c4nderungen an deinem Projekt vornimmst. Um diese Unannehmlichkeit zu umgehen, kannst du <code>nodemon<\/code> verwenden, das du bereits installiert hast. Konfiguriere sie in deiner <strong>package.json<\/strong> Datei, indem du einen Skriptbefehl erstellst:<\/p>\n<pre><code class=\"language-json\">  \"scripts\": {\n    \"dev\": \"nodemon app.js\"\n  },<\/code><\/pre>\n<p>F\u00fchre nun deine Node.js-Anwendung mit automatischen Neustarts aus, indem du den folgenden Befehl verwendest:<\/p>\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<h3>Erste Schritte mit Express und EJS Templating<\/h3>\n<p>In diesem Leitfaden erstellst du eine Node.js-Anwendung, die Inhalte im Browser anzeigt. Dazu verwendest du express.js als Web-Framework und EJS (Embedded JavaScript) als Templating-Engine.<\/p>\n<p>Um EJS als View-Engine festzulegen, f\u00fcgst du die folgende Zeile in deine <strong>app.js<\/strong>-Datei ein. Dadurch wird es m\u00f6glich, <code>.ejs<\/code> Dateien auszuf\u00fchren:<\/p>\n<pre><code class=\"language-js\">\/\/ Use EJS as the view engine \napp.set('view engine', 'ejs');<\/code><\/pre>\n<p>Jetzt, wo Express mit EJS konfiguriert ist, definierst du deine Routen. In Webanwendungen legen Routen fest, wie die Anwendung auf verschiedene HTTP-Anfragen (z. B. GET oder POST) reagiert und welche Aktionen ausgef\u00fchrt werden sollen, wenn eine bestimmte URL aufgerufen wird.<\/p>\n<p>Erstelle zum Beispiel eine Route, die eine bestimmte Seite l\u00e4dt, wenn ein Nutzer zur <strong>Indexseite<\/strong> (<code>\/<\/code>) navigiert. Dazu verwendest du die GET-Anforderungsmethode.<\/p>\n<pre><code class=\"language-js\">\/\/ Define a route for the homepage\napp.get('\/', (req, res) =&gt; {\n  \/\/ Here, you can specify what to do when someone accesses the homepage\n  \/\/ For example, render an EJS template or send some HTML content\n});<\/code><\/pre>\n<p>Im obigen Code f\u00fchrt der Server die als zweiten Parameter angegebene Callback-Funktion aus, wenn ein Nutzer auf den <strong>Index<\/strong> deiner Anwendung zugreift. In dieser Callback-Funktion kannst du die Logik zum Rendern einer EJS-Vorlage oder zum Senden von <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-html\/\">HTML<\/a>-Inhalten, die auf der Homepage angezeigt werden sollen, verarbeiten.<\/p>\n<p>Du kannst die Methode <code>res.render()<\/code> verwenden, um eine EJS-Vorlage zu rendern, oder <code>res.send()<\/code>, um einfache HTML-Inhalte zu senden.<\/p>\n<pre><code class=\"language-js\">app.get('\/', (req, res) =&gt; {\n    res.send('Hello World');\n});<\/code><\/pre>\n<p>Wenn du deine Anwendung startest, wird &#8222;Hello World&#8220; auf der <strong>Indexseite<\/strong> angezeigt.<\/p>\n<h3>EJS-Vorlagen erstellen<\/h3>\n<p>Dieses Tutorial konzentriert sich auf die Logik und enth\u00e4lt Starterdateien, damit du dich nicht um die Erstellung von Vorlagen k\u00fcmmern musst. Befolge diese Schritte, um loszulegen:<\/p>\n<ol start=\"1\">\n<li>Rufe die <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\" target=\"_blank\" rel=\"noopener noreferrer\">Vorlage auf GitHub<\/a> auf, um ein neues Repository zu erstellen.<\/li>\n<li>Aktiviere die Option <strong>Alle Zweige<\/strong> bei der Repository-Erstellung <strong>einbeziehen<\/strong>.<\/li>\n<li>Sobald das Repository erstellt ist, klone das Projekt mit <a href=\"https:\/\/kinsta.com\/de\/thema\/git\/\">Git<\/a> auf deinen Computer.<\/li>\n<li>Um auf den Startcode zuzugreifen, wechsle in deinem lokalen Repository zum Zweig <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a>.<\/li>\n<\/ol>\n<p>Im Startcode gibt es zwei Hauptordner: <strong>public<\/strong> und <strong>views<\/strong>. Der Ordner <strong>public<\/strong> enth\u00e4lt alle statischen Elemente (CSS-Dateien und Bilder). Sie werden der Vorlage als statische Dateien hinzugef\u00fcgt:<\/p>\n<pre><code class=\"language-js\">\/\/ Static files\napp.use(express.static('\/public'));\napp.use('\/css', express.static(__dirname + '\/public\/css'));\napp.use('\/images', express.static(__dirname + '\/public\/images'));<\/code><\/pre>\n<p>Im Ordner <strong>views<\/strong> findest du die Datei <strong>layout.ejs<\/strong> und zwei Ordner: <strong>pages<\/strong> und <strong>partials<\/strong>. Die Datei <strong>layout.ejs<\/strong> enth\u00e4lt das allgemeine Layout des Projekts, damit du nicht f\u00fcr alle Seiten einen wiederkehrenden Code verwenden musst. Importiere die Bibliothek <code>express-ejs-layouts<\/code> in die Datei <strong>app.js<\/strong> und konfiguriere sie dann:<\/p>\n<pre><code class=\"language-js\">\/\/ Import\nconst expressEjsLayouts = require('express-ejs-layouts');\n\n\/\/ Configure\napp.use(expressEjsLayouts);<\/code><\/pre>\n<p>Der Ordner <strong>pages<\/strong> enth\u00e4lt die Routendateien (<strong>index.ejs<\/strong> und <strong>operation.ejs<\/strong>), w\u00e4hrend der Ordner <strong>partials<\/strong> Komponenten enth\u00e4lt (<strong>header.ejs<\/strong> und <strong>footer.ejs<\/strong>). F\u00fcge sie wie folgt zum Layout hinzu:<\/p>\n<pre><code class=\"language-ejs\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/images\/favicon.ico\" \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/index.css\" \/&gt;\n        &lt;title&gt;Site Builder&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div class=\"app-container\"&gt;\n            &lt;%- include('partials\/header') %&gt;\n            &lt;div class=\"container\"&gt;&lt;%- body %&gt;&lt;\/div&gt;\n            &lt;%- include('partials\/footer') %&gt;\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Wenn du <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">deine Node.js-Anwendung startest<\/a>, wird die Benutzeroberfl\u00e4che geladen, aber du musst dieser Anwendung eine Logik hinzuf\u00fcgen, um die Formulardaten an die Kinsta-API zu senden und Informationen \u00fcber die Website an Slack zu senden, wenn der Vorgang beginnt.<\/p>\n<h2>Erste Schritte mit Slack Incoming Webhooks<\/h2>\n<p>Slack Incoming Webhooks bieten eine einfache M\u00f6glichkeit, Nachrichten von externen Anwendungen an Slack zu senden. Um Slack Incoming Webhooks zu nutzen, erstellst und konfigurierst du eine Slack-Anwendung und kopierst dann deine Webhook-URL, um Nachrichten programmatisch an Slack zu senden.<\/p>\n<h3>Einrichten einer Slack-Anwendung und Abrufen der Webhook-URL<\/h3>\n<p>Erstelle eine neue Slack-Anwendung, indem du diese Schritte ausf\u00fchrst:<\/p>\n<ol start=\"1\">\n<li>Navigiere zum <a href=\"https:\/\/api.slack.com\/apps\/\" target=\"_blank\" rel=\"noopener noreferrer\">Slack API<\/a> Dashboard.<\/li>\n<li>Klicke auf die Schaltfl\u00e4che <strong>Neue App erstellen<\/strong>, woraufhin sich ein Modal \u00f6ffnet.<\/li>\n<li>W\u00e4hle die Option <strong>Von Grund auf neu<\/strong>, um deine Anwendung von Grund auf zu erstellen.<\/li>\n<li>Gib einen Namen f\u00fcr deine Slack-Anwendung ein, z. B. <strong>Kinsta Bot<\/strong>.<\/li>\n<li>W\u00e4hle dann den Arbeitsbereich aus, in dem du die Anwendung installieren m\u00f6chtest, und klicke auf die Schaltfl\u00e4che <strong>Anwendung\u00a0erstellen<\/strong>.<\/li>\n<\/ol>\n<p>Sobald deine Slack-Anwendung erstellt ist, kannst du eingehende Webhooks aktivieren, indem du zu <strong>Funktionen<\/strong> navigierst und <strong>eingehende Webhooks<\/strong> ausw\u00e4hlst. Schalte den Schalter um, um eingehende Webhooks f\u00fcr deine Anwendung\u00a0zu aktivieren.<\/p>\n<p>Scrolle runter zum Abschnitt <strong>Webhook-URLs f\u00fcr deinen Arbeitsbereich<\/strong> und klicke auf <strong>Neuen Webhook zum Arbeitsbereich hinzuf\u00fcgen<\/strong>. Du wirst aufgefordert, einen Kanal auszuw\u00e4hlen, \u00fcber den die Nachrichten gesendet werden sollen. W\u00e4hle den gew\u00fcnschten Kanal und klicke auf <strong>Autorisieren<\/strong>.<\/p>\n<p>Nach der Autorisierung erh\u00e4ltst du eine Webhook-URL f\u00fcr den ausgew\u00e4hlten Kanal. Diese URL verwendest du, um Nachrichten programmgesteuert an Slack zu senden. So sieht eine Webhook-URL aus:<\/p>\n<pre><code class=\"language-js\">https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX<\/code><\/pre>\n<p>Dieser Webhook ist f\u00fcr einen einzigen Nutzer und einen einzigen Kanal bestimmt. Bewahre ihn sicher auf, denn er dient als Authentifizierungs-Token f\u00fcr deine Anwendung. Du kannst die eindeutigen Codes nach <code>\/services\/<\/code> in deiner <strong>.env<\/strong>-Datei speichern. Du wirst au\u00dferdem aufgefordert, die Anwendung in deinem Arbeitsbereich neu zu installieren, damit die \u00c4nderungen wirksam werden.<\/p>\n<h2>Nachrichten mit Node.js und der Kinsta-API an Slack senden<\/h2>\n<p>Jetzt, da die Schnittstelle deiner Node.js-Anwendung eingerichtet und der Slackbot erfolgreich erstellt wurde (zusammen mit deiner WebHook-URL), ist es an der Zeit, sich um die Logik zu k\u00fcmmern.<\/p>\n<h3>Formulardaten in Node.js abrufen<\/h3>\n<p>Auf der <strong>Index<\/strong>-Seite gibt es ein Formular, das Daten an die Kinsta-API sendet, um eine neue WordPress-Seite zu erstellen. Damit das funktioniert, musst du eine POST-Anfrage von der Index-Seite erstellen. Achte darauf, dass dein Formular eine Methode <code>POST<\/code> hat und die Eingabefelder ein <code>name<\/code> Attribut haben, das in der <strong>app.js<\/strong> Datei verwendet wird.<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    \/\/ Perform the desired operation with the form data\n});<\/code><\/pre>\n<p>Um Daten aus einem Formular in Node.js abzurufen, musst du die folgende Middleware verwenden:<\/p>\n<pre><code class=\"language-js\">app.use(express.json());\napp.use(express.urlencoded({ extended: true }));<\/code><\/pre>\n<p>Jetzt kannst du mit <code>req.body.[form field name]<\/code> auf deine Formularwerte zugreifen. Unter <code>req.body.displayName<\/code> findest du zum Beispiel den Anzeigenamen, den du \u00fcber das Formular eingegeben hast. Lass uns die gesamten Formulardaten protokollieren:<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    console.log(req.body);\n});<\/code><\/pre>\n<p>Wenn du deinen Code ausf\u00fchrst, werden die Formulardaten angezeigt, nachdem du das Formular ausgef\u00fcllt und auf die Schaltfl\u00e4che <strong>Senden<\/strong> geklickt hast.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/req-details-node-js.jpg\" alt=\"Formulardetails, die aus dem req-Parameter in Node.js abgerufen werden\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Die Formulardaten werden \u00fcber den req-Parameter in Node.js abgerufen<\/figcaption><\/figure>\n<h3>Website-Erstellung mit der Kinsta-API in Node.js<\/h3>\n<p>Um eine WordPress-Website mit der Kinsta-API in Node.js zu erstellen, kannst du die Methode <code>fetch()<\/code> verwenden, die jetzt in den <a href=\"https:\/\/kinsta.com\/de\/blog\/node-js-20\/#performance\">neuesten Node.js-Versionen<\/a> unterst\u00fctzt wird und effizient funktioniert.<\/p>\n<p>Um eine Operation mit der Kinsta-API durchzuf\u00fchren, musst du einen <a href=\"https:\/\/kinsta.com\/de\/blog\/kinsta-api-schluessel\/\">API-Schl\u00fcssel<\/a> generieren. So generierst du einen API-Schl\u00fcssel:<\/p>\n<ol start=\"1\">\n<li>Gehe zu deinem MyKinsta-Dashboard.<\/li>\n<li>Navigiere zur Seite mit den <strong>API-Schl\u00fcsseln <\/strong>(<strong>Dein Name<\/strong> &gt; <strong>Unternehmenseinstellungen<\/strong> &gt; <strong>API-Schl\u00fcssel<\/strong>).<\/li>\n<li>Klicke auf <strong>API-Schl\u00fcssel generieren<\/strong>.<\/li>\n<li>W\u00e4hle ein Ablaufdatum oder lege ein benutzerdefiniertes Startdatum und die Anzahl der Stunden fest, nach denen der Schl\u00fcssel abl\u00e4uft.<\/li>\n<li>Gib dem Schl\u00fcssel einen eindeutigen Namen.<\/li>\n<li>Klicke auf <strong>Generieren<\/strong>.<\/li>\n<\/ol>\n<p>Kopiere den generierten API-Schl\u00fcssel und bewahre ihn sicher auf, da er nur in diesem Moment sichtbar ist. F\u00fcr dieses Projekt erstellst du eine <strong>.env<\/strong>-Datei in deinem Stammverzeichnis und speicherst den API-Schl\u00fcssel als <code>KINSTA_API_KEY<\/code>.<\/p>\n<p>Um eine WordPress-Site mit der Kinsta-API zu erstellen, brauchst du au\u00dferdem deine Unternehmens-ID (die du in MyKinsta unter <strong>Unternehmen<\/strong> &gt; <strong>Rechnungsdetails<\/strong> &gt; <strong>Unternehmens-ID<\/strong> findest). Speichere diese ID auch in der <strong>.env<\/strong><strong>i<\/strong><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">-Datei<\/span><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">, damit du \u00fcber <\/span><code>process.env<\/code><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> auf diese Umgebungsvariablen zugreifen kannst. Um diese Funktion zu aktivieren, musst du die Abh\u00e4ngigkeit <\/span><code>dotenv<\/code><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> am Anfang deiner <\/span><strong style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">app.js<\/strong>-Datei<span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> wie folgt konfigurieren:<\/span><\/p>\n<pre><code class=\"language-js\">require('dotenv').config();<\/code><\/pre>\n<p>Um mit der Erstellung einer WordPress-Site \u00fcber die Kinsta-API fortzufahren, sende eine POST-Anfrage an den <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/addWordPressSite\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites<\/a><\/code> endpunkt und gib die erforderlichen Daten im <code>req.body<\/code> Objekt an:<\/p>\n<pre><code class=\"language-js\">const KinstaAPIUrl = 'https:\/\/api.kinsta.com\/v2';\n\napp.post('\/', (req, res) =&gt; {\n    const createSite = async () =&gt; {\n        const resp = await fetch(`${KinstaAPIUrl}\/sites`, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json',\n                Authorization: `Bearer ${process.env.REACT_APP_KINSTA_API_KEY}`,\n            },\n            body: JSON.stringify({\n                company: process.env.REACT_APP_KINSTA_COMPANY_ID,\n                display_name: req.body.displayName,\n                region: req.body.location,\n                install_mode: 'new',\n                is_subdomain_multisite: false,\n                admin_email: req.body.email,\n                admin_password: req.body.password,\n                admin_user: req.body.username,\n                is_multisite: false,\n                site_title: req.body.siteTitle,\n                woocommerce: false,\n                wordpressseo: false,\n                wp_language: 'en_US',\n            }),\n        });\n        const data = await resp.json();\n        console.log(data);\n    };\n    createSite();\n});<\/code><\/pre>\n<p>Wenn du den obigen Code ausf\u00fchrst, erstellst du eine neue WordPress-Website mit der Kinsta-API. Aber das ist nicht das Hauptziel. Das Ziel ist es, eine Nachricht an Slack zu senden, die Informationen \u00fcber die Website enth\u00e4lt, wenn die Erstellung der Website erfolgreich war.<\/p>\n<h3>Sende eine Nachricht an Slack mit der eingehenden Webhook-URL<\/h3>\n<p>Dazu erstellst du eine <strong>If<\/strong>-Anweisung, um den Antwortstatus der API-Anfrage zu \u00fcberpr\u00fcfen. Wenn sie <code>202<\/code> lautet, bedeutet das, dass die Website-Erstellung begonnen hat und du eine Nachricht mit der eingehenden Webhooks-URL an Slack senden kannst. Um dies zu erreichen, kannst du deine bevorzugte HTTP-Anforderungsbibliothek (z. B. <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-http-anfrage\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>) oder Methode verwenden, um eine POST-Anforderung an Slack zu senden. Wir verwenden die Methode <code>fetch()<\/code>:<\/p>\n<pre><code class=\"language-js\">if (data.status === 202) {\n    fetch(\n        `https:\/\/hooks.slack.com\/services\/${process.env.SLACK_WEBHOOK_ID}`,\n        {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json',\n            },\n            body: JSON.stringify({\n                text: 'Hello, world.',\n            }),\n        }\n    );\n}<\/code><\/pre>\n<p>F\u00fchre den obigen Code aus und f\u00fclle das Formular zur Erstellung einer Website aus. Wenn der Vorgang erfolgreich ist, wird sofort eine Nachricht an Slack gesendet.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/message-sent-with-incoming-webhooks.jpg\" alt=\"Hello World, gesendet von Node.js an Slack mit Incoming Webhooks\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Hello World, gesendet von Node.js an Slack mit Incoming Webhooks<\/figcaption><\/figure>\n<h3>Slack-Nachrichten anpassen<\/h3>\n<p>Das obige Beispiel sendet eine einfache Textnachricht, aber Slack Incoming Webhooks unterst\u00fctzen viel mehr als einfachen Text. Du kannst deine Nachrichten so anpassen, dass sie Anh\u00e4nge, Links, Bilder, Schaltfl\u00e4chen und mehr enthalten.<\/p>\n<p>Eine M\u00f6glichkeit, wie du Slack-Nachrichten anpassen kannst, ist die Verwendung des <a href=\"https:\/\/app.slack.com\/block-kit-builder\" target=\"_blank\" rel=\"noopener noreferrer\">Slack Block Kit Builders<\/a>. Das Block Kit ist ein von Slack bereitgestelltes UI-Framework, mit dem du umfangreiche und interaktive Nachrichten mit verschiedenen Inhaltselementen erstellen kannst.<\/p>\n<p>F\u00fcr diesen Leitfaden haben wir einen Block mit dem Block Kit Builder erstellt, um die Nachricht richtig zu formatieren und einige Werte aus dem Formular und der Antwort auf die Website-Erstellung hinzuzuf\u00fcgen:<\/p>\n<pre><code class=\"language-js\">const message = {\n    blocks: [\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: `Hello, your new site (${req.body.displayName}) has started building. It takes minutes to build. You can check the operation status intermittently via https:\/\/site-builder-nodejs-xvsph.kinsta.app\/operation\/${req.body.displayName}\/${data.operation_id}.`,\n            },\n        },\n        {\n            type: 'divider',\n        },\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: \"_Here are your site's details:_\",\n            },\n        },\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: `1. *Site URL:* http:\/\/${req.body.displayName}.kinsta.cloud\/n2. *WP Admin URL:* http:\/\/${req.body.displayName}.kinsta.cloud\/wp-admin\/`,\n            },\n        },\n    ],\n};<\/code><\/pre>\n<p>In diesem Code erstellst du ein Nachrichtenobjekt, das ein Array von Bl\u00f6cken enth\u00e4lt. Jeder Block steht f\u00fcr einen bestimmten Abschnitt der Slack-Nachricht und kann verschiedene Arten von Inhalten enthalten.<\/p>\n<ol start=\"1\">\n<li><strong>Abschnittsblock<\/strong>: Dieser Blocktyp wird verwendet, um einen Textabschnitt anzuzeigen. Du verwendest das <code>type: 'section'<\/code>, um anzuzeigen, dass es sich um einen Abschnittsblock handelt. Innerhalb des Abschnittsblocks wird die Eigenschaft text mit <code>type: 'mrkdwn'<\/code> verwendet, um anzugeben, dass der Textinhalt im Markdown-Format interpretiert werden soll. Der eigentliche Textinhalt wird in der text-Eigenschaft angegeben, und wir verwenden Vorlagenliterale, um dynamische Werte aus dem Formular und der Antwort auf die Website-Erstellung einzubinden, wie <code>req.body.displayName<\/code> und <code>data.operation_id<\/code>.<\/li>\n<li><strong>Divider Block<\/strong>: Dieser Blocktyp wird verwendet, um Abschnitte der Nachricht durch eine horizontale Linie zu trennen. Wir verwenden <code>type: 'divider'<\/code>, um den Divider Block zu erstellen.<\/li>\n<\/ol>\n<p>Wenn diese Nachricht mit dem Incoming Webhook an Slack gesendet wird, erzeugt sie eine visuell ansprechende und informative Nachricht in deinem Slack-Kanal. Die Nachricht enth\u00e4lt dynamische Werte aus dem Formular (z. B. den Namen der Website) und Informationen aus der Antwort auf die Website-Erstellung, was sie zu einer sehr individuellen und personalisierten Nachricht macht.<\/p>\n<p>Um diese individuelle Nachricht zu versenden, ersetze das Objekt im Body der <code>fetch()<\/code> durch den Inhalt der Nachrichtenvariable:<\/p>\n<pre><code class=\"language-js\">if (data.status === 202) {\n    fetch(\n        `https:\/\/hooks.slack.com\/services\/${process.env.SLACK_WEBHOOK_ID}`,\n        {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json',\n            },\n            body: JSON.stringify(message),\n        }\n    );\n}<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/slack-block-kit-builder-message.jpg\" alt=\"Slack-Nachricht, angepasst mit dem Slack Block Kit Builder\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Slack-Nachricht, angepasst mit dem Slack Block Kit Builder<\/figcaption><\/figure>\n<h2>Website-Erstellung mit der Kinsta-API abwickeln<\/h2>\n<p>In der an Slack gesendeten Nachricht wird ein Link erstellt, der die ID und den Anzeigenamen der Operation enth\u00e4lt. Du kannst eine neue Route f\u00fcr die Seite <strong>Vorg\u00e4nge<\/strong> erstellen, um diese Daten zu verwenden und den Status des Vorgangs zu \u00fcberpr\u00fcfen.<\/p>\n<p>In Express kannst du auf URL-Parameter mit dem Parameter <code>req<\/code> zugreifen. Um zum Beispiel die Vorgangs-ID zu erhalten, verwendest du <code>req.params.operationId<\/code>.<\/p>\n<pre><code class=\"language-js\">const KinstaAPIUrl = 'https:\/\/api.kinsta.com\/v2';\n\napp.get('\/operation\/:displayName\/:operationId', (req, res) =&gt; {\n    const checkOperation = async () =&gt; {\n        const operationId = req.params.operationId;\n        const resp = await fetch(`${KinstaAPIUrl}\/operations\/${operationId}`, {\n            method: 'GET',\n            headers: {\n                Authorization: `Bearer ${process.env.REACT_APP_KINSTA_API_KEY}`,\n            },\n        });\n        const data = await resp.json();\n        res.render('pages\/operation', {\n            operationID: req.params.operationId,\n            displayName: req.params.displayName,\n            operationMessage: data.message,\n        });\n    };\n    checkOperation();\n});<\/code><\/pre>\n<p>Wenn du mit dem obigen Code auf den Link in Slack klickst, wird eine Anfrage an die Kinsta-API gestellt, um den Betriebsstatus deiner Website zu \u00fcberpr\u00fcfen. Aktualisiere die Datei <strong>operation.ejs<\/strong>, um dynamische Daten hinzuzuf\u00fcgen:<\/p>\n<pre><code class=\"language-ejs\">&lt;div class=\"container-title\"&gt;\n    &lt;h1 class=\"title\"&gt;Check Site Operation Status&lt;\/h1&gt;\n    &lt;p&gt;\n        Check the status of your site tools operation via the id. Feel free to copy\n        the ID and check in few seconds.\n    &lt;\/p&gt;\n&lt;\/div&gt;\n&lt;div class=\"form-container\"&gt;\n    &lt;div class=\"input-div\"&gt;\n        &lt;input class=\"form-control\" value=\"&lt;%= operationID %&gt;\" readOnly \/&gt;\n    &lt;\/div&gt;\n    &lt;button class=\"btn\" type=\"submit\" onclick=\"window.location.reload()\"&gt;\n        Refresh Operation Status\n    &lt;\/button&gt;\n&lt;\/div&gt;\n&lt;div class=\"services\"&gt;\n    &lt;div class=\"details\"&gt;\n        &lt;p&gt;&lt;%= operationMessage %&gt;..&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n&lt;div class=\"services\"&gt;\n    &lt;p class=\"description\"&gt;\n        If message above indicates that \"Operation has successfully finished\", use\n        the links below to access your WP admin and the site itself.\n    &lt;\/p&gt;\n    &lt;div class=\"details\"&gt;\n        &lt;a\n            href=\"http:\/\/&lt;%= displayName %&gt;.kinsta.cloud\/wp-admin\/\"\n            target=\"_blank\"\n            rel=\"noreferrer\"\n            class=\"detail-link\"\n        &gt;\n            &lt;p&gt;Open WordPress admin&lt;\/p&gt;\n            &lt;FiExternalLink \/&gt;\n        &lt;\/a&gt;\n        &lt;a\n            href=\"http:\/\/&lt;%= displayName %&gt;.kinsta.cloud\/\"\n            target=\"_blank\"\n            rel=\"noreferrer\"\n            class=\"detail-link\"\n        &gt;\n            &lt;p&gt;Open URL&lt;\/p&gt;\n            &lt;FiExternalLink \/&gt;\n        &lt;\/a&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/operations-page-1.jpg\" alt=\"Die Seite mit der Vorgangsnummer und den Website-Details\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Die Seite mit der Betriebs-ID und den Standortdetails<\/figcaption><\/figure>\n<p>Als Letztes kannst du die Redirect-Methode verwenden, um zur Vorgangsseite zu navigieren, wenn der Erstellungsprozess einer Website beginnt:<\/p>\n<pre><code class=\"language-js\">if (data.status === 202) {\n    fetch(\n        `https:\/\/hooks.slack.com\/services\/${process.env.SLACK_WEBHOOK_ID}`,\n        {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json',\n            },\n            body: JSON.stringify(message),\n        }\n    );\n    res.redirect(`\/operation\/${req.body.displayName}\/${data.operation_id}`);\n}<\/code><\/pre>\n<p>Der vollst\u00e4ndige Quellcode f\u00fcr dieses Projekt ist im <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/main\" target=\"_blank\" rel=\"noopener noreferrer\">Hauptzweig dieses GitHub-Repositorys<\/a> verf\u00fcgbar.<\/p>\n<h2>Bereitstellen deiner Node.js-Anwendung auf Kinsta<\/h2>\n<p>Du kannst diese Node.js-Anwendung ganz einfach auf der <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungs-Hosting<\/a>-Plattform von Kinsta bereitstellen. Dazu musst du nur deinen Code zu deinem bevorzugten 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>) pushen. Dann befolge diese Schritte:<\/p>\n<ol start=\"1\">\n<li>Melde dich in deinem Kinsta-Konto auf dem <a href=\"https:\/\/my.kinsta.com\/?lang=de\">MyKinsta<\/a>-Dashboard an.<\/li>\n<li>Klicke auf <strong>Dienst hinzuf\u00fcgen<\/strong>.<\/li>\n<li>W\u00e4hle <strong>Anwendung<\/strong> aus dem Dropdown-Men\u00fc.<\/li>\n<li>W\u00e4hle in dem erscheinenden Modal das Repository aus, das du bereitstellen m\u00f6chtest. Wenn du mehrere Zweige hast, kannst du den gew\u00fcnschten Zweig ausw\u00e4hlen und einen Namen f\u00fcr deine Anwendung vergeben.<\/li>\n<li>W\u00e4hle einen der verf\u00fcgbaren Rechenzentrumsstandorte aus. Kinsta erkennt und installiert die Abh\u00e4ngigkeiten deiner Anwendung aus der package.json, baut sie dann und stellt sie bereit.<\/li>\n<\/ol>\n<p>Schlie\u00dflich ist es nicht sicher, API-Schl\u00fcssel an \u00f6ffentliche Hosts wie deinen Git-Provider weiterzugeben. Beim Hosten kannst du sie als <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">Umgebungsvariablen<\/a> hinzuf\u00fcgen, indem du denselben Variablennamen und Wert wie in der <strong>.env<\/strong>-Datei angibst.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/set-env-mykinsta.jpg\" alt=\"Setze die Umgebungsvariablen auf DevKinsta bei der Bereitstellung fest\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Setze die Umgebungsvariablen auf DevKinsta bei der Bereitstellung fest<\/figcaption><\/figure>\n<p>Sobald du die Bereitstellung deiner Anwendung initiiert hast, wird sie in der Regel innerhalb weniger Minuten erstellt und bereitgestellt. Du erh\u00e4ltst einen Link zu deiner neuen Anwendung, der wie folgt aussieht: <strong>https:\/\/site-builder-nodejs-xvsph.kinsta.app<\/strong>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Wenn es ein Problem mit deinen Node.js-Konfigurationen gibt, das sich auf die Bereitstellung auswirkt, kannst du ein Node.js-Buildpack auf der Registerkarte Bereitstellungseinstellungen hinzuf\u00fcgen.<\/p>\n<\/aside>\n\n<h2>Zusammenfassung<\/h2>\n<p>In diesem Leitfaden hast du gelernt, wie du aus einer Node.js-Anwendung mit Hilfe von Incoming Webhooks Nachrichten an Slack sendest und wie du Slack-Nachrichten mit dem Block Kit Builder anpasst.<\/p>\n<p>Die M\u00f6glichkeiten von Slack und der Kinsta-API sind vielf\u00e4ltig, und dieses Tutorial ist erst der Anfang. Durch die Integration dieser Tools kannst du einen nahtlosen Workflow schaffen, der dein Team auf dem Laufenden h\u00e4lt und die Produktivit\u00e4t steigert.<\/p>\n<p><em>Wie nutzt du die Kinsta-API? Welche Funktionen w\u00fcrdest du gerne als N\u00e4chstes hinzuf\u00fcgen\/offenlegen?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Laufe der Jahre wurden unsere Dienste bei Kinsta immer manuell \u00fcber das MyKinsta-Dashboard bedient. Doch mit der Einf\u00fchrung der Kinsta-API und der laufenden Ver\u00f6ffentlichung neuer &#8230;<\/p>\n","protected":false},"author":287,"featured_media":65135,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[925,957,965],"class_list":["post-65134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-kinsta-leistungen","topic-node-js"],"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>Kinsta-Dienste mit Kinsta-API und Slack verwalten - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!\" \/>\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\/kinsta-dienste-api-slack\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kinsta-Dienste mit Kinsta-API und Slack verwalten\" \/>\n<meta property=\"og:description\" content=\"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\" \/>\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-08-22T08:23:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T12:35:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.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=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\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\/kinsta-dienste-api-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Kinsta-Dienste mit Kinsta-API und Slack verwalten\",\"datePublished\":\"2023-08-22T08:23:24+00:00\",\"dateModified\":\"2023-08-29T12:35:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\"},\"wordCount\":2670,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\",\"name\":\"Kinsta-Dienste mit Kinsta-API und Slack verwalten - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg\",\"datePublished\":\"2023-08-22T08:23:24+00:00\",\"dateModified\":\"2023-08-29T12:35:33+00:00\",\"description\":\"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kinsta-Dienste mit Kinsta-API und Slack verwalten\"}]},{\"@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\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kinsta-Dienste mit Kinsta-API und Slack verwalten - Kinsta\u00ae","description":"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!","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\/kinsta-dienste-api-slack\/","og_locale":"de_DE","og_type":"article","og_title":"Kinsta-Dienste mit Kinsta-API und Slack verwalten","og_description":"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!","og_url":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-22T08:23:24+00:00","article_modified_time":"2023-08-29T12:35:33+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Kinsta-Dienste mit Kinsta-API und Slack verwalten","datePublished":"2023-08-22T08:23:24+00:00","dateModified":"2023-08-29T12:35:33+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/"},"wordCount":2670,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/","url":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/","name":"Kinsta-Dienste mit Kinsta-API und Slack verwalten - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg","datePublished":"2023-08-22T08:23:24+00:00","dateModified":"2023-08-29T12:35:33+00:00","description":"Lerne, wie du Kinsta-Dienste mit der Kinsta-API und der Slack-Integration m\u00fchelos verwalten kannst. Steigere die Effizienz noch heute!","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-3.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/kinsta-dienste-api-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/de\/thema\/api\/"},{"@type":"ListItem","position":3,"name":"Kinsta-Dienste mit Kinsta-API und Slack verwalten"}]},{"@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\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/de\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65134","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\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=65134"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65134\/revisions"}],"predecessor-version":[{"id":65306,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65134\/revisions\/65306"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65134\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/65135"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=65134"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=65134"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=65134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}