{"id":64795,"date":"2023-08-10T14:48:04","date_gmt":"2023-08-10T13:48:04","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=64795&#038;preview=true&#038;preview_id=64795"},"modified":"2023-09-06T13:39:51","modified_gmt":"2023-09-06T12:39:51","slug":"erstelle-slackbot-website-management","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/","title":{"rendered":"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/de\/blog\/wie-man-slack-nutzt\/\">Slack<\/a> ist eine leistungsstarke Messaging-Plattform, die es Teams erm\u00f6glicht, effizient zusammenzuarbeiten. Und wenn diese Zusammenarbeit auch die Betreuung mehrerer <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a>-Websites hier bei Kinsta umfasst, kannst du mit Hilfe der <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> einige g\u00e4ngige Aufgaben der Website-Verwaltung auf Slack \u00fcbertragen.<\/p>\n<p>Wenn du einen Slackbot in deinen Arbeitsablauf integrierst, kannst du Zeit sparen und deine Produktivit\u00e4t steigern. In diesem Tutorial kombinierst du die M\u00f6glichkeiten von Slack und der Kinsta-API, um einen Slackbot zu bauen, der Aufgaben wie die \u00dcberpr\u00fcfung des Site-Status, das L\u00f6schen des Site-Caches und den Neustart der PHP-Engine einer Site \u00fcbernimmt.<\/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 erstellst<\/h2>\n<p>Du erstellst einen Slackbot auf <a href=\"https:\/\/kinsta.com\/de\/blog\/so-installierst-du-node-js\/\">Node.js<\/a> unter Verwendung der <a href=\"https:\/\/api.slack.com\/tools\/bolt\" target=\"_blank\" rel=\"noopener noreferrer\">Bolt API<\/a> (der schnellste Weg, um mit der Slack-Plattform zu programmieren). Deine Anwendung wandelt die Slash-Befehle von Slack in Aufrufe an die Kinsta-API um und leitet die Antworten weiter, sodass die gesamte Benutzerinteraktion in Slack stattfindet.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/slackbot-demo-with-kinsta-api.gif\" alt=\"Kinsta API Slackbot Demo\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Kinsta API Slackbot Demo<\/figcaption><\/figure>\n<h3>Voraussetzungen<\/h3>\n<p>Um an diesem Projekt mitzuarbeiten, solltest du Folgendes 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>Slack-Arbeitsbereich<\/li>\n<\/ul>\n<h2>Eine Slack-Anwendung erstellen<\/h2>\n<p>Ein Slackbot ist im Grunde eine Slack-Anwendung. Um eine neue Slack-Anwendung zu erstellen, befolge diese Schritte:<\/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 Anwendung erstellen<\/strong>, wodurch sich ein Modal \u00f6ffnet.<\/li>\n<li>W\u00e4hle die Option <strong>Von Grund auf<\/strong>, um deine Anwendung von Grund auf zu erstellen.<\/li>\n<li>Gib einen Namen f\u00fcr deine Slack-Anwendung an. Zum Beispiel: <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>Z\u00f6gere nicht, die grundlegenden Informationen deiner Anwendung zu bearbeiten, indem du zu der Option <strong>Basisinformationen<\/strong> in der Seitenleiste navigierst. Scrolle nach unten zu <strong>Display Information<\/strong>, um Details wie ein Bild, einen Namen, eine Beschreibung, eine Farbe und mehr hinzuzuf\u00fcgen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/slackbot-display-information.jpg\" alt=\"Slackbot Anzeigeinformationen\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Slackbot Anzeigeinformationen<\/figcaption><\/figure>\n<h3>Konfigurieren von oAuth und Berechtigungen<\/h3>\n<p>Du hast erfolgreich einen Slackbot erstellt. Damit er jedoch auf Daten zugreifen und Aktionen in deinem Slack-Arbeitsbereich durchf\u00fchren kann, m\u00fcssen bestimmte Berechtigungen erteilt werden. Um auf die notwendigen Einstellungen zuzugreifen:<\/p>\n<ol start=\"1\">\n<li>Gehe zum Dashboard deiner Slack-Anwendung und suche die Option <strong>OAuth und Berechtigungen<\/strong> in der linken Seitenleiste.<\/li>\n<li>Wenn du dort bist, scrolle nach unten zum Abschnitt <strong>Scopes<\/strong>.<\/li>\n<li>Gib deinem Bot die M\u00f6glichkeit, Sofortnachrichten von Nutzern zu lesen und auf diese Nachrichten zu antworten.<\/li>\n<\/ol>\n<p>Unten siehst du einen Screenshot mit den Bereichen, die du deinem Bot zuweisen solltest:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/slack-app-scopes.jpg\" alt=\"Slack App Geltungsbereiche\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Slack App Geltungsbereiche<\/figcaption><\/figure>\n<p>Wenn du diese Bereiche konfigurierst, ist dein Bot in der Lage, nahtlos mit Slack-Nutzern zu interagieren und die vorgesehenen Funktionen effektiv auszuf\u00fchren.<\/p>\n<h3>Installation des Slack Bot in deinem Arbeitsbereich<\/h3>\n<p>Um den Prozess abzuschlie\u00dfen, musst du deinen neuen Slackbot in deinem Slack-Arbeitsbereich installieren. Navigiere zur linken Seitenleiste und w\u00e4hle <strong>Anwendungen installieren<\/strong>. Dort klickst du auf <strong>In Arbeitsbereich installieren<\/strong> und gibst den Kanal an, zu dem du den Bot hinzuf\u00fcgen m\u00f6chtest.<\/p>\n<p>Dein Slackbot ist jetzt bereit. Richten wir nun einen Node.js-Server ein, der deine Anfragen empf\u00e4ngt und verarbeitet.<\/p>\n<h2>Einrichten der Entwicklungsumgebung<\/h2>\n<p>Um mit deinem neuen Node.js-Projekt zu beginnen, 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 obigen Befehl ausgef\u00fchrt hast, wird eine neue <strong>package.json<\/strong>-Datei in dem von dir gew\u00e4hlten Verzeichnis mit Standardwerten erstellt. Die <strong>package.json<\/strong> Datei ist wichtig, da sie Informationen \u00fcber dein Projekt und seine Abh\u00e4ngigkeiten enth\u00e4lt. Diese Abh\u00e4ngigkeiten erm\u00f6glichen eine reibungslose Entwicklung und erweitern die Funktionalit\u00e4t deines Projekts:<\/p>\n<ol start=\"1\">\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/@slack\/bolt\" target=\"_blank\" rel=\"noopener noreferrer\">@slack\/bolt<\/a><\/code>: Mit diesem JavaScript-Framework kannst du schnell funktionsreiche Slack-Anwendungen erstellen und dabei die neuesten Funktionen der Plattform nutzen.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a><\/code>: Ein wertvolles Tool, das deine Node.js-Anwendung automatisch neu startet, sobald Datei-\u00c4nderungen im Verzeichnis erkannt werden, und so f\u00fcr einen optimierten Entwicklungs-Workflow sorgt.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a><\/code>: Dieses Zero-Dependency-Modul spielt eine entscheidende Rolle beim Laden von Umgebungsvariablen aus der <strong>.env<\/strong>-Datei in <code>process.env<\/code> und macht das Konfigurationsmanagement zum Kinderspiel.<\/li>\n<\/ol>\n<p>Um die ben\u00f6tigten Pakete zu installieren, f\u00fchre die folgenden Befehle aus:<\/p>\n<pre><code class=\"language-bash\">npm i @slack\/bolt\nnpm i --save-dev nodemon dotenv<\/code><\/pre>\n<p>Nach der erfolgreichen Installation dieser Abh\u00e4ngigkeiten und der dev-Abh\u00e4ngigkeiten ist es an der Zeit, ein dev-Skript zu deiner <strong>package.json<\/strong>-Datei hinzuzuf\u00fcgen, das <code>nodemon<\/code> nutzt, um deine JavaScript-Datei auszuf\u00fchren. Vergewissere dich, dass dein <strong>package.json<\/strong> Skriptobjekt Folgendes enth\u00e4lt:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n  \"dev\": \"nodemon app.js\"\n}<\/code><\/pre>\n<p>Zu guter Letzt ist es wichtig zu erw\u00e4hnen, dass das <code>dev<\/code> Skript auf eine nicht existierende <strong>app.js<\/strong> Datei verweist. Erstelle diese Datei im Verzeichnis deines Projekts, denn dort wird die Logik deines Projekts verarbeitet.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<h3>Konfigurieren deiner Umgebungsvariablen (Token und Secrets)<\/h3>\n<p>Um von deinem Node.js-Projekt aus mit deiner Slack-Anwendung zu interagieren, ben\u00f6tigst du bestimmte Token und Secrets. Diese Anmeldeinformationen sind sensibel. Um sie bei der Versionskontrolle zu sch\u00fctzen, speichern wir sie in der <strong>.env<\/strong>-Datei.<\/p>\n<p>Um das Signing Secret zu erhalten, gehst du in dein Slack Dashboard, klickst auf <strong>Basisinformationen<\/strong> und scrollst dann nach unten zu <strong>App Credentials<\/strong>, wo du das Signing Secret findest. F\u00fcr das Token klickst du auf <strong>Anwendung installieren<\/strong> oder <strong>OAuth &#038; Permissions<\/strong> und findest dort das OAuth Token. Normalerweise beginnt das Token mit &#8222;xoxb&#8220;.<\/p>\n<p>Erstelle eine Datei namens <strong>.env<\/strong> im Hauptverzeichnis deines Projekts und f\u00fcge das Signing Secret und das Bot Token im folgenden Format hinzu:<\/p>\n<pre><code class=\"language-bash\">SLACK_SIGNING_SECRET=\"YOUR SIGNING SECRET\"\nSLACK_BOT_TOKEN=\"YOUR BOT TOKEN\"<\/code><\/pre>\n<p>Um sicherzustellen, dass diese sensiblen Informationen nicht an deinen Git-Anbieter weitergegeben werden, erstelle eine <a href=\"https:\/\/kinsta.com\/de\/blog\/gitignore-funktioniert-nicht\/\">.gitignore-Datei<\/a> im Hauptverzeichnis deines Projekts und f\u00fcge die folgenden Zeilen hinzu, um die <strong>.env<\/strong>-Datei und den <strong>Ordner node_modules<\/strong> zu ignorieren:<\/p>\n<pre><code class=\"language-bash\">\/node_modules\n.env<\/code><\/pre>\n<p>Nachdem du diese Einstellungen vorgenommen hast, kannst du mit der Serverkonfiguration fortfahren.<\/p>\n<h3>Einrichten des Node.js-Servers<\/h3>\n<p>Das Einrichten des Node.js-Servers ist ein wichtiger Schritt bei der Erstellung deines Slackbots. Du musst die notwendigen Pakete und Module importieren, sie initialisieren und den Port festlegen, auf dem dein Projekt lauschen soll. \u00d6ffne die Datei <strong>app.js<\/strong>, die du zuvor erstellt hast, und f\u00fcge den folgenden Code hinzu:<\/p>\n<pre><code class=\"language-js\">const { App } = require(\"@slack\/bolt\");\nrequire(\"dotenv\").config();\n\n\/\/ Initializes your app with your bot token and signing secret\nconst app = new App({\n  token: process.env.SLACK_BOT_TOKEN,\n  signingSecret: process.env.SLACK_SIGNING_SECRET,\n});\n\n(async () =&gt; {\n    \/\/ Start your app\n    await app.start(process.env.PORT || 3000);\n    console.log(`\u26a1\ufe0f Kinsta Bot app is running on port ${process.env.PORT || 3000}!`);\n})();<\/code><\/pre>\n<p>Im obigen Code importierst du die Klasse <code>App<\/code> aus der Bibliothek <code>@slack\/bolt<\/code>, eine wichtige Komponente f\u00fcr die Erstellung von Slack-Anwendungen. Au\u00dferdem verwendest du das Paket <code>dotenv<\/code>, um Umgebungsvariablen zu verarbeiten.<\/p>\n<p>Dann wird die Konstante <code>app<\/code> mithilfe der Klasse <code>App<\/code> erstellt, die deine Slack-Bot-Anwendung darstellt. Sie ben\u00f6tigt zwei wichtige Parameter: <code>token<\/code> und <code>signingSecret<\/code>. Diese Werte werden aus der <strong>.env<\/strong>-Datei geholt.<\/p>\n<p>Als N\u00e4chstes erfolgt in der Funktion <code>async<\/code> die Einrichtung des Servers. Die Anwendung wird durch den Aufruf von <code>app.start()<\/code> gestartet. Sie lauscht lokal auf Port <code>3000<\/code> und gibt eine Meldung auf der Konsole aus, die best\u00e4tigt, dass die Kinsta-Bot-Anwendung l\u00e4uft.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Wenn du eine Node-Anwendung bereitstellst, solltest du den Port nicht in deiner Anwendung definieren oder fest codieren. Verwende <code>process.env.PORT<\/code> in deinem Code, wenn du dich auf den Server-Port beziehst. Der Bereitstellungs-Dienst setzt dann automatisch die Umgebungsvariable `PORT`.<\/p>\n<\/aside>\n\n<p>Wenn du jetzt das <code>dev<\/code> Skript ausf\u00fchrst, das du konfiguriert hast (<code>npm run dev<\/code>), bekommst du die Meldung in deinem Terminal: &#8222;\u26a1\ufe0f Kinsta Bot app is running on port 3000!&#8220;<\/p>\n\n<h2>Den Socket-Modus der Slack-API verstehen<\/h2>\n<p>Bei der Slack API-Integration mit Node.js-Servern gibt es zwei prim\u00e4re Verbindungsmethoden: die Nutzung des \u00f6ffentlichen HTTP-Endpunkts deines Servers oder die Verwendung des <a href=\"https:\/\/api.slack.com\/apis\/connections\/socket\" target=\"_blank\" rel=\"noopener noreferrer\">Socket-Modus<\/a>, um WebSockets zu aktivieren. Dieses Tutorial konzentriert sich auf die Verwendung des Socket-Modus, da er die Implementierung interaktiver Funktionen wie Slack-Slash-Befehle erleichtert. Mit diesem Ansatz kann sich Slack mit deinem Node.js-Server \u00fcber WebSockets statt \u00fcber das herk\u00f6mmliche HTTP verbinden.<\/p>\n<p>Wenn du dich jedoch daf\u00fcr entscheidest, den HTTP-Endpunkt lokal zu verwenden, kannst du mit <a href=\"https:\/\/ngrok.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">ngrok<\/a> eine \u00f6ffentliche URL erstellen, die auf deinen lokalen Host verweist.<\/p>\n<h3>Erste Schritte mit dem Socket-Modus<\/h3>\n<p>Um mit dem Socket-Modus zu beginnen, befolge diese Schritte:<\/p>\n<ol start=\"1\">\n<li>Navigiere in der linken Seitenleiste deines Slack-Dashboards zu <strong>Basisinformationen<\/strong>. Scrolle nach unten zu <strong>Token auf Anwendungsebene<\/strong> und klicke auf die Schaltfl\u00e4che <strong>Token und Geltungsbereiche generieren<\/strong>.<\/li>\n<li>Gib deinem Token einen Namen und f\u00fcge die beiden verf\u00fcgbaren Bereiche hinzu: <code>connections:write<\/code> und <code>authorizations:read<\/code>. Klicke auf <strong>Erzeugen<\/strong>, um das Token zu erstellen.<\/li>\n<li>Kopiere das erzeugte Token und f\u00fcge es in deine <strong>.env<\/strong>-Datei ein, indem du es einer Variablen namens <code>APP_TOKEN<\/code> zuweist. Denke daran, dass Token-Strings auf Anwendungsebene mit <code>xapp-<\/code> beginnen.<\/li>\n<\/ol>\n<p>Als N\u00e4chstes klickst du in der Seitenleiste auf <strong>Socket Mode<\/strong> und schaltest die Option <strong>Enable Socket Mode<\/strong> ein. Zum Schluss f\u00fcgst du in deiner <strong>app.js-Datei<\/strong> <code>socketMode:true<\/code> und deine <code>appToken<\/code> zu dem Code hinzu, der deine Anwendung\/Server initialisiert:<\/p>\n<pre><code class=\"language-js\">const app = new App({\n  token: process.env.SLACK_BOT_TOKEN,\n  signingSecret: process.env.SLACK_SIGNING_SECRET,\n  socketMode: true, \/\/ enable socket mode\n  appToken: process.env.APP_TOKEN,\n});<\/code><\/pre>\n<p>Sobald du diese Schritte durchgef\u00fchrt hast, werden alle Anfragen an deinen Entwicklungsserver \u00fcber WebSockets und nicht \u00fcber HTTP erfolgen. Mit dieser Einrichtung kannst du den Socket-Modus optimal nutzen und die Funktionalit\u00e4t deines Slackbots erweitern.<\/p>\n<h2>Slack Slash-Befehle<\/h2>\n<p><a href=\"https:\/\/api.slack.com\/interactivity\/slash-commands\" target=\"_blank\" rel=\"noopener noreferrer\">Slash-Befehle<\/a> sind eine leistungsstarke Funktion in Slack, die benutzerdefinierte Ausl\u00f6ser f\u00fcr bestimmte Aktionen erm\u00f6glicht. Diese Ausl\u00f6ser k\u00f6nnen in Chat-Nachrichten in allen Slack-Kan\u00e4len erkannt werden. Au\u00dferdem kannst du mit Slash-Befehlen Textdaten direkt an deinen Server \u00fcbermitteln. Wenn du z.B. einen Befehl wie <code>\/operation_status [operation ID]<\/code> einrichtest, wird er die angegebene <code>operation ID<\/code> an deinen Server weitergeben und den entsprechenden <code>operation_status<\/code> Befehlslistener ausl\u00f6sen.<\/p>\n<p>Wenn dein Server richtig f\u00fcr die Interaktion mit Slack konfiguriert ist, kannst du im n\u00e4chsten Schritt Slash-Befehle einrichten, die Aktionen auf deinem Server ausl\u00f6sen.<\/p>\n<h3>Slash-Befehle auf Slack erstellen<\/h3>\n<p>Um Slash-Befehle auf Slack zu erstellen, klicke auf die Men\u00fcoption <strong>Slash-Befehle<\/strong> in der linken Seitenleiste und dann auf die Schaltfl\u00e4che <strong>Neuen Befehl<\/strong> <strong>erstellen<\/strong>. F\u00fclle das Formular aus und orientiere dich dabei an der Abbildung unten.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/create-a-new-slack-command.jpg\" alt=\"Erstelle einen neuen Slack-Befehl\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Erstelle einen neuen Slack-Befehl<\/figcaption><\/figure>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Wenn du nicht den Socket-Modus verwendest, musst du die von ngrok generierte Anfrage-URL hinzuf\u00fcgen. Achte darauf, dass du <strong>\/slack\/events<\/strong> am Ende der ngrok-URL anh\u00e4ngst.<\/p>\n<\/aside>\n\n<p>Nachdem du das Formular ausgef\u00fcllt hast, klicke auf die Schaltfl\u00e4che <strong>Speichern<\/strong>. Slack fordert dich auf, die Anwendung erneut in deinem Arbeitsbereich zu installieren, damit die \u00c4nderungen wirksam werden. Folge den Anweisungen, um einige Slash-Befehle zu erstellen, wie in der Abbildung unten gezeigt:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/slash-commands-to-interact-with-kinsta-api.jpg\" alt=\"Slash-Befehle f\u00fcr die Interaktion mit der Kinsta-API\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Slash-Befehle f\u00fcr die Interaktion mit der Kinsta-API<\/figcaption><\/figure>\n<h3>Slash-Befehle mit Node.js konfigurieren<\/h3>\n<p>Sobald du die notwendigen Slash-Befehle erstellt hast, musst du deine Node.js-Anwendung so anpassen, dass sie auf diese Befehle reagiert.<\/p>\n<p>Beginnen wir mit dem Testen des <code>\/operation_status<\/code> Befehls. Richte einen Listener f\u00fcr Ereignisse ein, die den Befehl <code>\/operation_status<\/code> enthalten, indem du den folgenden Code in deine <strong>app.js<\/strong>-Datei einf\u00fcgst:<\/p>\n<pre><code class=\"language-js\">const { App } = require('@slack\/bolt');\nrequire('dotenv').config();\n\nconst app = new App({\n    token: process.env.SLACK_BOT_TOKEN,\n    signingSecret: process.env.SLACK_SIGNING_SECRET,\n    socketMode: true, \/\/ enable the following to use socket mode\n    appToken: process.env.APP_TOKEN,\n});\n\napp.command('\/operation_status', async ({ command, ack, say }) =&gt; {\n    await ack();\n    say('Wooah! Iit works!');\n});\n\n(async () =&gt; {\n    \/\/ Start your app\n    await app.start(process.env.PORT || 3000);\n    console.log(`\u26a1\ufe0f Kinsta Bot app is running on port ${process.env.PORT || 3000}!`);\n})();<\/code><\/pre>\n<p>Im obigen Code liegt der Schwerpunkt auf der Funktion <code>app.command()<\/code>, die \u00e4hnlich wie ein Ereignis-Listener in JavaScript funktioniert. Du gibst den Befehl an, auf den du h\u00f6ren willst, und erstellst dann eine asynchrone Callback-Funktion, um die gew\u00fcnschte Aktion zu definieren. Diese Funktion ben\u00f6tigt drei Parameter:<\/p>\n<ul>\n<li><code>command<\/code><strong>:<\/strong> Enth\u00e4lt die Details des Schr\u00e4gstrich-Befehls, den der Benutzer gesendet hat.<\/li>\n<li><code>ack<\/code><strong>:<\/strong> Best\u00e4tigt den Empfang des Slash-Befehls.<\/li>\n<li><code>say<\/code><strong>:<\/strong> Sendet eine Nachricht zur\u00fcck an den Slack-Kanal.<\/li>\n<\/ul>\n<p>Mit dem obigen Code wird der Befehl <code>\/operation_status<\/code> in Slack die Nachricht erzeugen: &#8222;Wooah! Es funktioniert!&#8220;<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/testing-kinsta-slash-command.jpg\" alt=\"Testen des Kinsta Slash-Befehls\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Testen des Kinsta Slash-Befehls<\/figcaption><\/figure>\n<p>F\u00fcgen wir nun die Befehlszuh\u00f6rer f\u00fcr alle Slash-Befehle hinzu, die du erstellt hast:<\/p>\n<pre><code class=\"language-js\">app.command('\/environment_id', async ({ command, ack, say }) =&gt; {\n    await ack();\n    \/\/ Perform the desired action using the command and then send a response.\n});\n\napp.command('\/site_id', async ({ command, ack, say }) =&gt; {\n    await ack();\n    \/\/ Perform the desired action using the command and then send a response.\n});\n\napp.command('\/operation_status', async ({ command, ack, say }) =&gt; {\n    await ack();\n    \/\/ Perform the desired action using the command and then send a response.\n});\n\napp.command('\/clear_site_cache', async ({ command, ack, say }) =&gt; {\n    await ack();\n    \/\/ Perform the desired action using the command and then send a response.\n});\n\napp.command('\/restart_php_engine', async ({ command, ack, say }) =&gt; {\n    await ack();\n    \/\/ Perform the desired action using the command and then send a response.\n});<\/code><\/pre>\n<p>Deine Anwendung ist jetzt bereit, auf die Slack-Slash-Befehle zu h\u00f6ren. Es ist Zeit, die Aktionen hinzuzuf\u00fcgen, die jeder Befehl ausl\u00f6sen wird.<\/p>\n\n<h2>Slash-Befehle mit der Kinsta-API implementieren<\/h2>\n<p>Deine Anwendung wird auf jeden Slash-Befehl mit einem Aufruf der Kinsta-API reagieren und dann das Ergebnis dieser Aktion an Slack zur\u00fcckgeben. Um die <a href=\"https:\/\/kinsta.com\/de\/docs\/kinsta-api\/\">Kinsta-API<\/a> zu nutzen, musst du ein Konto mit mindestens einer <a href=\"https:\/\/kinsta.com\/de\/wordpress-hosting\/\">WordPress-Website<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">-Anwendung<\/a> oder <a href=\"https:\/\/sevalla.com\/database-hosting\/\">-Datenbank<\/a> in <a href=\"https:\/\/my.kinsta.com\/?lang=de\">MyKinsta<\/a> haben. Au\u00dferdem musst du einen API-Schl\u00fcssel erstellen, um dich zu authentifizieren und \u00fcber die API auf dein Konto zuzugreifen.<\/p>\n<h3>So erstellst du einen Kinsta-API-Schl\u00fcssel<\/h3>\n<p>Um einen API-Schl\u00fcssel zu erstellen:<\/p>\n<ol start=\"1\">\n<li>Gehe zu deinem <a href=\"https:\/\/my.kinsta.com\/?lang=de\">MyKinsta<\/a>-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 erstellen<\/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>Erzeugen<\/strong>.<\/li>\n<\/ol>\n<p>Wenn du einen API-Schl\u00fcssel erstellt hast, kopiere ihn und bewahre ihn an einem sicheren Ort auf, da<strong>\u00a0ihn nur dann du sehen kannst<\/strong>. F\u00fcr dieses Projekt speicherst du ihn in deiner <strong>.env<\/strong>-Datei als <code>KINSTA_API_KEY<\/code>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Behandle deinen API-Schl\u00fcssel als sensible Information und bewahre ihn sicher auf. Vermeide es, den Schl\u00fcssel mit Unbefugten zu teilen. Wenn du an einem gemeinsamen Projekt arbeitest, empfehlen wir dir, einen <a href=\"https:\/\/kinsta.com\/de\/blog\/passwort-manager\/\">Passwortmanager<\/a> zu verwenden, um ihn sicher zu teilen.<\/p>\n<\/aside>\n\n<h3>Mit der Kinsta-API in Node.js interagieren<\/h3>\n<p>Die Interaktion mit der Kinsta-API kann mit einer Reihe von Node.js-Bibliotheken erfolgen, darunter <a href=\"https:\/\/kinsta.com\/de\/blog\/node-js-bibliotheken\/#10-axios\">Axios<\/a>. In diesem Tutorial entscheiden wir uns jedoch f\u00fcr die JavaScript-Methode <code>fetch()<\/code>, 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>F\u00fcr diesen Slackbot werden viele API-Anfragen gestellt, darunter GET- und POST-Anfragen. Um Wiederholungen zu vermeiden, solltest du die API-URL und die Header in Variablen speichern, damit dein Code einfach zu pflegen und zu lesen ist:<\/p>\n<pre><code class=\"language-js\">\/\/ kinsta API utilities\nconst KinstaAPIUrl = 'https:\/\/api.kinsta.com\/v2';\n\nconst getHeaders = {\n    Authorization: `Bearer ${process.env.KINSTA_API_KEY}`,\n};\n\nconst postHeaders = {\n    'Content-Type': 'application\/json',\n    Authorization: `Bearer ${process.env.KINSTA_API_KEY}`,\n};<\/code><\/pre>\n<p>Bevor du mit der Codierung der Antwort deiner Anwendung auf jeden Slash-Befehl beginnst, solltest du deine Kinsta-Firmen-ID kopieren und sie in der <strong>.env<\/strong>-Datei als <code>KINSTA_COMPANY_ID<\/code> speichern. Sie wird ben\u00f6tigt, um deine Standortliste abzurufen.<\/p>\n<h3>Implementierung des Slash-Befehls Environment ID<\/h3>\n<p>Wenn du den Slash-Befehl <code>\/environment_id<\/code> verwendest, wird jeder Wert, der nach dem Befehl angegeben wird, abgerufen und in deinem Node.js-Server verwendet. F\u00fcr diesen Befehl wurde ein Hinweis hinzugef\u00fcgt, der anzeigt, dass er einen Parameter erwartet: die <code>[Site name]<\/code>.<\/p>\n<p>Jede Website auf MyKinsta hat einen eindeutigen Site-Namen, aber es gibt keinen direkten Endpunkt, um die Umgebungs-ID einer Website \u00fcber ihren Namen abzufragen. Daher musst du zun\u00e4chst eine Anfrage f\u00fcr alle Websites deines Unternehmenskontos stellen und dann die Methode <code>find()<\/code> verwenden, um die Website zu finden, dessen Name dem mit dem Slash-Befehl \u00fcbergebenen Namen entspricht.<\/p>\n<p>Zu diesem Zweck werden zwei Anfragen gestellt. Zuerst erh\u00e4ltst du die ID der Website und dann stellst du eine weitere Anfrage an den Endpunkt <code>\/environments<\/code>, um die zu dieser Website geh\u00f6rende Umgebungs-ID abzurufen.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Bei der Verwendung von Slash-Befehlen ist es wichtig, dass du die Anzahl der Anfragen im Auge beh\u00e4ltst. Die Kinsta-API hat einige Beschr\u00e4nkungen: Bei regul\u00e4ren Vorg\u00e4ngen kannst du maximal 60 Anfragen pro Minute stellen, w\u00e4hrend bei der Erstellung von Websites nur 3 Anfragen pro Minute m\u00f6glich sind, da dieser Vorgang sehr ressourcenintensiv ist.<\/p>\n<\/aside>\n\n<p>Um den Code \u00fcbersichtlich zu halten und die Wartung zu vereinfachen, wird jede Anfrage unabh\u00e4ngig gestellt. Das bedeutet, dass es einzelne Funktionen f\u00fcr diese Anfragen gibt, die dann im Command Listener aufgerufen werden.<\/p>\n<p>Beginnen wir damit, die Liste all deiner Websites abzurufen:<\/p>\n<pre><code class=\"language-js\">async function getAllSites() {\n    const query = new URLSearchParams({\n        company: process.env.KINSTA_COMPANY_ID,\n    }).toString();\n    const resp = await fetch(`${KinstaAPIUrl}\/sites?${query}`, {\n        method: 'GET',\n        headers: getHeaders,\n    });\n    const data = await resp.json();\n    return data;\n}<\/code><\/pre>\n<p>Der obige Code gibt ein Array mit allen Websites zur\u00fcck. Im <code>\/environment_id<\/code> Command Listener erh\u00e4ltst du die Antwort und speicherst sie in einer Variablen. Dann suchst du mit der Methode <code>find()<\/code> nach einer Website, deren Name mit dem von Slack \u00fcbergebenen Namen \u00fcbereinstimmt. Die Informationen aus Slack werden in <code>command.text<\/code> gespeichert.<\/p>\n<pre><code class=\"language-js\">app.command('\/environment_id', async ({ command, ack, say }) =&gt; {\n    await ack();\n    let siteName = command.text;\n    let response = await getAllSites();\n    if (response) {\n        let mySites = response.company.sites;\n        let currentSite = mySites.find((site) =&gt; site.name === siteName);\n        \/\/ get environment ID\n    }\n});<\/code><\/pre>\n<p>Jetzt, wo du die Website hast, benutze ihre ID, um die Umgebungs-ID abzurufen. \u00c4hnlich wie bei der Abfrage einer Liste von Websites erstellst du eine eigene Funktion, die eine HTTP-Anfrage an den Endpunkt <code>\/environments<\/code> stellt:<\/p>\n<pre><code class=\"language-js\">async function getEnvironmentId(siteId) {\n    const resp = await fetch(`${KinstaAPIUrl}\/sites\/${siteId}\/environments`, {\n        method: 'GET',\n        headers: getHeaders,\n    });\n    const data = await resp.json();\n    return data;\n}<\/code><\/pre>\n<p>Der obige Code erwartet, dass die Website-ID als Argument \u00fcbergeben wird, wenn diese Funktion im <code>\/environment_id<\/code> command listener aufgerufen wird. Wenn du die ID erh\u00e4ltst, wird die API-Anfrage gestellt und die Antwort in einer Variablen gespeichert. Anschlie\u00dfend kannst du die Umgebungs-ID mit der Methode <code>say()<\/code> auf Slack ausgeben:<\/p>\n<pre><code class=\"language-js\">app.command('\/environment_id', async ({ command, ack, say }) =&gt; {\n    await ack();\n    let siteName = command.text;\n    let response = await getAllSites();\n    if (response) {\n        let mySites = response.company.sites;\n        let currentSite = mySites.find((site) =&gt; site.name === siteName);\n        let envIdResponse = await getEnvironmentId(currentSite.id);\n        let envId = envIdResponse.site.environments[0].id;\n        if (envId) {\n            say(`Hey \ud83d\udc4b,nnThe environment ID for \"${siteName}\" is \ud83d\udc49 ${envId}`);\n        }\n    }\n});<\/code><\/pre>\n<p>Wenn du jetzt Slack \u00f6ffnest und <code>\/environment_id<\/code> gefolgt von einem g\u00fcltigen Websitenamen wie <code>\/environment_id fashionstored<\/code> eingibst, erh\u00e4ltst du eine Antwort, die wie folgt aussieht:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/environment-id-slash-command.jpg\" alt=\"Umgebungs-ID Slash Befehl\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Umgebungs-ID Slash Befehl<\/figcaption><\/figure>\n<h3>Implementierung von Site Tools (Site Cache l\u00f6schen, PHP Engine neu starten) Slash-Befehl<\/h3>\n<p>Zwei Aufgaben, die du ganz einfach \u00fcber die API ausf\u00fchren kannst, ohne zu MyKinsta navigieren zu m\u00fcssen, sind die <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Site-Tools\/\" target=\"_blank\" rel=\"noopener noreferrer\">Site-Tool<\/a>-Vorg\u00e4nge Clear Site Cache und Restart PHP Engine.<\/p>\n<p>Um einen der Website-Tool-Vorg\u00e4nge durchzuf\u00fchren, brauchst du nur die Umgebungs-ID. Diese ID wird verwendet, um eine POST-Anfrage an <code>\/sites\/tools\/clear-cache<\/code> bzw. <code>\/sites\/tools\/restart-php<\/code> zu stellen. Wie zuvor f\u00fchrst du die API-Anfrage selbstst\u00e4ndig aus und gibst die Antwort zur\u00fcck:<\/p>\n<pre><code class=\"language-js\">async function clearSiteCache(environmentId) {\n    const resp = await fetch(`${KinstaAPIUrl}\/sites\/tools\/clear-cache`, {\n        method: 'POST',\n        headers: postHeaders,\n        body: JSON.stringify({\n            environment_id: environmentId,\n        }),\n    });\n    const data = await resp.json();\n    return data;\n}\n\nasync function restartPHPEngine(environmentId) {\n    const resp = await fetch(`${KinstaAPIUrl}\/sites\/tools\/restart-php`, {\n        method: 'POST',\n        headers: postHeaders,\n        body: JSON.stringify({\n            environment_id: environmentId,\n        }),\n    });\n    const data = await resp.json();\n    return data;\n}<\/code><\/pre>\n<p>Als N\u00e4chstes erstellst du in Slack Command Listener f\u00fcr beide Vorg\u00e4nge. Diese Listener werden so konfiguriert, dass sie immer dann ausgel\u00f6st werden, wenn der jeweilige Befehl verwendet wird:<\/p>\n<pre><code class=\"language-js\">app.command('\/clear_site_cache', async ({ command, ack, say }) =&gt; {\n    await ack();\n    let environmentId = command.text;\n    let response = await clearSiteCache(environmentId);\n    if (response) {\n        say(\n            `Hey \ud83d\udc4b, nn${response.message} by using the \/operation_status slack commmand. nnOperation Id is ${response.operation_id}`\n        );\n    }\n});\n\napp.command('\/restart_php_engine', async ({ command, ack, say }) =&gt; {\n    await ack();\n    let environmentId = command.text;\n    let response = await restartPHPEngine(environmentId);\n    if (response) {\n        say(\n            `Hey \ud83d\udc4b, nn${response.message} by using the \/operation_status slack command. nnOperation Id is ${response.operation_id}`\n        );\n    }\n});<\/code><\/pre>\n<p>Im obigen Code werden die von den API-Anfragen abgerufenen Daten verwendet, um die Antwort zu erstellen, die an Slack zur\u00fcckgeschickt wird. Die Antwort enth\u00e4lt Informationen \u00fcber den Vorgang, wie z. B. die Nachricht und die Vorgangs-ID.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/restart-php-engine-slackbot.jpg\" alt=\"Starte die PHP-Engine mit dem Slash Befehl neu\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Starte die PHP-Engine mit dem Slash Befehl neu<\/figcaption><\/figure>\n<p>Wenn du diese Slash-Befehle und die dazugeh\u00f6rigen Listener implementierst, kannst du deinen Slackbot nahtlos mit der Kinsta-API interagieren lassen und so den Cache und die PHP-Engine deiner Website direkt von Slack aus verwalten.<\/p>\n<h3>Implementierung eines Schr\u00e4gstrichbefehls f\u00fcr den Betriebsstatus<\/h3>\n<p>Es w\u00e4re auch gut, wenn du den Status deiner Operationen von Slack aus abrufen k\u00f6nntest. Dazu verwendest du neben <code>operation_id<\/code> auch den Endpunkt <code>\/operations<\/code>. Wie zuvor erstellst du eine Funktion, die diese Anfrage bearbeitet und die Antwort auf die Anfrage zur\u00fcckgibt:<\/p>\n<pre><code class=\"language-js\">async function CheckOperationStatus(operationId) {\n    const resp = await fetch(`${KinstaAPIUrl}\/operations\/${operationId}`, {\n        method: 'GET',\n        headers: getHeaders,\n    });\n    const data = await resp.json();\n    return data;\n}<\/code><\/pre>\n<p>Definieren wir den Command Listener, um die Anfrage auszul\u00f6sen und die <code>operation ID<\/code> zu \u00fcbergeben, die \u00fcber Slack gesendet wird:<\/p>\n<pre><code class=\"language-js\">app.command('\/operation_status', async ({ command, ack, say }) =&gt; {\n    await ack();\n    let operationId = command.text;\n    let response = await CheckOperationStatus(operationId);\n    let operationMessage = response.message;\n    if (operationMessage) {\n        say(`Hey \ud83d\udc4b, nn${operationMessage}`);\n    }\n});<\/code><\/pre>\n<p>Wenn du nun den Befehl <code>\/operation_status<\/code> slash mit einem beliebigen g\u00fcltigen <code>operation ID<\/code> verwendest, erh\u00e4ltst du den Status der ID \u00fcber Slack zur\u00fcck.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/check-operation-status-slackbot.jpg\" alt=\"\u00dcberpr\u00fcfe den Status der Operation mit Slackbot\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">\u00dcberpr\u00fcfe den Status der Operation mit Slackbot<\/figcaption><\/figure>\n<p>Zus\u00e4tzlich zu den Befehlen, die du bereits mit der Kinsta-API implementiert hast, gibt es weitere Befehle, die integriert werden k\u00f6nnen, sowie zus\u00e4tzliche Ereignisse, die vom Slackbot verarbeitet werden k\u00f6nnen. Zum Beispiel kann der Slackbot reagieren, wenn er mit dem Symbol <code>@<\/code> erw\u00e4hnt oder getaggt wird.<\/p>\n<p>Um diese Funktion zu aktivieren, musst du die notwendigen Ereignisse in Slack abonnieren. Statt der Methode <code>app.command()<\/code> verwendest du die Methode <code>app.message()<\/code>, die die beiden Parameter <code>command<\/code> und <code>say<\/code> ben\u00f6tigt.<\/p>\n<p>Hier ist ein Beispiel daf\u00fcr, wie du das erreichen kannst:<\/p>\n<pre><code class=\"language-js\">app.message(\"hey\", async ({ command, say }) =&gt; {\n  say(\"Woah! It works!\");\n});<\/code><\/pre>\n<p>Nachdem du deinen Slackbot erstellt hast, stellst du vielleicht fest, dass du keine Nachrichten an ihn senden kannst. Wenn du in Slack unter der Registerkarte &#8222;Apps&#8220; zum Bot navigierst, kann es sein, dass du eine Meldung erh\u00e4ltst, die besagt: &#8222;Das Senden von Nachrichten an diese Anwendung wurde deaktiviert&#8220; Aber keine Sorge, wir k\u00f6nnen das ganz einfach beheben!<\/p>\n<p>Um das Senden von Nachrichten zu aktivieren, befolge diese Schritte:<\/p>\n<ol start=\"1\">\n<li>Klicke auf die Men\u00fcoption <strong>App Home<\/strong> in der linken Seitenleiste.<\/li>\n<li>Auf dieser Seite kannst du alle Einstellungen f\u00fcr deinen Bot verwalten. Scrolle nach unten, bis du das Kontrollk\u00e4stchen &#8222;Slash-Befehle und Nachrichten von der Registerkarte Nachrichten aus senden k\u00f6nnen&#8220; findest.<\/li>\n<li>Aktiviere das K\u00e4stchen, um diese Funktion zu aktivieren.<\/li>\n<\/ol>\n<p>Wenn du diese \u00c4nderungen vorgenommen hast, musst du unbedingt deine Slack-Anwendung neu laden, damit die Updates \u00fcbernommen werden. Wenn du einen Mac verwendest, kannst du Slack mit <strong>CMD + R<\/strong> neu laden. PC-Nutzer k\u00f6nnen dies mit <strong>STRG + R<\/strong> tun.<\/p>\n<p>Jetzt kannst du Nachrichten an deinen Bot senden! In der Slack-Anwendung solltest du die Kinsta-Bot-Anwendung direkt unter dem Abschnitt <strong>Deine Anwendungen<\/strong>\u00a0sehen. Klicke darauf, um mit dem Senden von Nachrichten zu beginnen. Du kannst jeden deiner konfigurierten Slash-Befehle ausprobieren, und sie sollten einwandfrei funktionieren. Genie\u00dfe die nahtlose Interaktion mit deinem Slackbot!<\/p>\n<p>Der vollst\u00e4ndige Quellcode f\u00fcr dieses Projekt ist auf <a href=\"https:\/\/github.com\/kinsta\/SlackBot-Kinsta-API\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a> verf\u00fcgbar.<br \/>\n<\/p>\n<h2>Bereitstellen deiner Node.js-Anwendung auf Kinsta<\/h2>\n<p>Wenn du deinen Node.js-Server gebaut hast, ist es wichtig, dass du <a href=\"https:\/\/sevalla.com\/application-hosting\/\">ihn bereitstellst<\/a>, damit dein Slackbot immer verf\u00fcgbar ist, auch wenn du deine lokale Entwicklung stoppst. Wenn dein Code bei den Git-Anbietern <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> gehostet wird, kannst du ihn auf der <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungs-Hosting-Plattform<\/a> von Kinsta bereitstellen.<\/p>\n<p>Befolge diese Schritte, um dein Repository auf Kinsta bereitzustellen:<\/p>\n<ol start=\"1\">\n<li>Melde dich in deinem Kinsta-Konto auf dem MyKinsta-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 im 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, erstellt 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. Wenn du auf Kinsta hostest, kannst du sie als <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">Umgebungsvariablen<\/a> hinzuf\u00fcgen, indem du denselben Variablennamen und -wert verwendest, den du in der <strong>.env<\/strong>-Datei deiner Entwicklung angegeben 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\/set-env-variables-myKinsta.jpg\" alt=\"Setze bei der Bereitstellung die Umgebungsvariablen fest\" width=\"1600\" height=\"225\"><figcaption class=\"wp-caption-text\">Setze bei der Bereitstellung die Umgebungsvariablen fest<\/figcaption><\/figure>\n<p>Sobald du die Bereitstellung deiner Anwendung initiierst, beginnt der Prozess und ist normalerweise innerhalb weniger Minuten abgeschlossen. Wenn Probleme mit deinen Node.js-Konfigurationen die Bereitstellung beeintr\u00e4chtigen, kannst du auf der Registerkarte Bereitstellungseinstellungen ein Node.js-Buildpack hinzuf\u00fcgen.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Du kannst die automatische Bereitstellung aktivieren, sodass Kinsta deine Anwendung immer dann neu bereitstellt, wenn du deine Codebasis \u00e4nderst und sie auf GitHub ver\u00f6ffentlichst.<\/p>\n<\/aside>\n\n<h2>Zusammenfassung<\/h2>\n<p>In diesem Artikel hast du gelernt, wie du eine Node.js-Anwendung erstellst, die Slack mit der Kinsta-API verbindet, und wie du diese Anwendung bei Kinsta bereitstellst.<\/p>\n<p>Mit Slackbots und der Kinsta-API kannst du deine bei Kinsta gehosteten Dienste leichter \u00fcberwachen und verwalten. Stell dir aufbauend auf den Grundlagen dieses Tutorials vor, was du mit einem Slackbot und der API alles machen kannst. Denke an komplexere Befehle, die Vorg\u00e4nge wie das <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-seite-klont\/\">Klonen von WordPress-Websites<\/a> und die <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-api\/\">Erstellung von Websites<\/a> direkt von Slack aus durchf\u00fchren.<\/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>Slack ist eine leistungsstarke Messaging-Plattform, die es Teams erm\u00f6glicht, effizient zusammenzuarbeiten. Und wenn diese Zusammenarbeit auch die Betreuung mehrerer WordPress-Websites hier bei Kinsta umfasst, kannst du &#8230;<\/p>\n","protected":false},"author":287,"featured_media":64796,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[925,965],"class_list":["post-64795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","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>Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API<\/title>\n<meta name=\"description\" content=\"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.\" \/>\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\/erstelle-slackbot-website-management\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API\" \/>\n<meta property=\"og:description\" content=\"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\" \/>\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-10T13:48:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-06T12:39:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.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 mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.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=\"20\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API\",\"datePublished\":\"2023-08-10T13:48:04+00:00\",\"dateModified\":\"2023-09-06T12:39:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\"},\"wordCount\":3554,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\",\"name\":\"Erstelle einen Website Management Slackbot mit Node.js & Kinsta API\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg\",\"datePublished\":\"2023-08-10T13:48:04+00:00\",\"dateModified\":\"2023-09-06T12:39:51+00:00\",\"description\":\"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#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\":\"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API\"}]},{\"@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":"Erstelle einen Website Management Slackbot mit Node.js & Kinsta API","description":"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.","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\/erstelle-slackbot-website-management\/","og_locale":"de_DE","og_type":"article","og_title":"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API","og_description":"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.","og_url":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-10T13:48:04+00:00","article_modified_time":"2023-09-06T12:39:51+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"20\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API","datePublished":"2023-08-10T13:48:04+00:00","dateModified":"2023-09-06T12:39:51+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/"},"wordCount":3554,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/","url":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/","name":"Erstelle einen Website Management Slackbot mit Node.js & Kinsta API","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","datePublished":"2023-08-10T13:48:04+00:00","dateModified":"2023-09-06T12:39:51+00:00","description":"Lerne, wie du mit Node.js und der Kinsta-API einen leistungsstarken Slackbot erstellst, um die Verwaltung der Website mit Slack-Slash-Befehlen zu optimieren.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/how-to-build-a-slackbot-with-node.js-and-kinsta-api-for-site-management-1.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/erstelle-slackbot-website-management\/#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":"Erstelle einen Website Management Slackbot mit Node.js &amp; Kinsta API"}]},{"@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\/64795","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=64795"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64795\/revisions"}],"predecessor-version":[{"id":65542,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64795\/revisions\/65542"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64795\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/64796"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=64795"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=64795"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=64795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}