{"id":55137,"date":"2023-08-20T10:22:51","date_gmt":"2023-08-20T08:22:51","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=55137&#038;preview=true&#038;preview_id=55137"},"modified":"2023-08-23T11:32:17","modified_gmt":"2023-08-23T09:32:17","slug":"kinsta-diensten-api-slack","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/","title":{"rendered":"Kinsta diensten beheren met Kinsta API en Slack"},"content":{"rendered":"<p>Door de jaren heen zijn onze diensten bij Kinsta altijd handmatig afgehandeld via het MyKinsta dashboard. Maar met de introductie van de Kinsta API en de voortdurende release van nieuwe API endpoints, kun je je workflow enorm verbeteren door een gepersonaliseerde methode te ontwikkelen waarmee je interactie hebt met de Kinsta diensten. Een van die manieren is het ontwikkelen van een Slackbot om activiteiten zoals het maken van sites te monitoren en beheren.<\/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>Wat je bouwt<\/h2>\n<p>Deze tutorial legt uit hoe je een Slackbot (of Slack applicatie) bouwt die interactie heeft met de <a href=\"https:\/\/kinsta.com\/nl\/docs\/kinsta-api\/\">Kinsta API<\/a> om informatie op te halen en deze als realtime berichten af te leveren aan een aangewezen Slack kanaal met behulp van de <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Slack API Incoming Webhooks<\/a>.<\/p>\n<p>Om dit te doen maak je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-installeren\/\">Node.js<\/a> applicatie met het <a href=\"https:\/\/kinsta.com\/blog\/what-is-express-js\/\">Express<\/a> framework om een UI te maken voor het maken van <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a> sites en deze te integreren met de Kinsta API. De applicatie gebruikt een formulier om configuratiegegevens voor je WordPress site te verzamelen en stuurt vervolgens een real-time update over de informatie van de site en details over hoe je de operationele status kunt controleren naar het opgegeven Slack kanaal.<\/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=\"Gif die de applicatie laat zien die gebouwd zou worden en hoe het real-time informatie naar Slack stuurt.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Gif die de applicatie laat zien die gebouwd zou worden en hoe het real-time informatie naar Slack stuurt.<\/figcaption><\/figure>\n<h3>Vereisten<\/h3>\n<p>Om dit project te kunnen volgen, moet je over het volgende beschikken:<\/p>\n<ul>\n<li>Basiskennis van <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> en Node.js<\/li>\n<li>Node.js versie 12 of hoger<\/li>\n<li>npm (<a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">Node Package Manager<\/a>) ge\u00efnstalleerd op je computer<\/li>\n<li>Een Slack workspace<\/li>\n<\/ul>\n<h2>De ontwikkelomgeving instellen<\/h2>\n<p>Om te beginnen maak je een nieuwe map aan voor je applicatie en initialiseer je deze met npm:<\/p>\n<pre><code class=\"language-bash\">mkdir my-express-app \ncd my-express-app \nnpm init -y<\/code><\/pre>\n<p>Na het uitvoeren van het commando <code>npm init -y<\/code> wordt er een nieuw <strong>package.json<\/strong> bestand aangemaakt in de map van je project met standaardwaarden. Dit bestand bevat belangrijke informatie over je project en de dependencies.<\/p>\n<p>Installeer vervolgens de noodzakelijke dependencies voor je project. De volgende dependencies zijn essentieel:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/ejs\" target=\"_blank\" rel=\"noopener noreferrer\">ejs<\/a>: EJS (Embedded JavaScript) is een templating engine waarmee je dynamische HTML content kunt genereren met JavaScript.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a>: Express is een snel en minimalistisch webapplicatie framework voor Node.js. Het vereenvoudigt het bouwen van webapplicaties en API&#8217;s door essenti\u00eble features te bieden zoals routing, middleware-ondersteuning en het afhandelen van HTTP verzoeken en responses.<\/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 is een extensie voor Express die het gebruik van layouts of templates mogelijk maakt om een consistente structuur over meerdere views te behouden.<\/li>\n<\/ul>\n<p>Voer het onderstaande commando uit om deze dependencies te installeren:<\/p>\n<pre><code class=\"language-bash\">npm install ejs express express-ejs-layouts<\/code><\/pre>\n<p>Daarnaast moet je de volgende dev dependencies installeren om het bouwen en testen van je Node.js project te vergemakkelijken:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a>: Een waardevolle tool die je Node.js applicatie automatisch herstart wanneer er bestandswijzigingen in de directory worden gedetecteerd, wat zorgt voor een gestroomlijnde ontwikkelworkflow.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>: Deze zero-dependency module speelt een cruciale rol bij het laden van omgevingsvariabelen uit een <strong>.env<\/strong> bestand.<\/li>\n<\/ul>\n<p>Voer het onderstaande commando uit om deze dev dependencies te installeren:<\/p>\n<pre><code class=\"language-bash\">npm install -D nodemon dotenv<\/code><\/pre>\n<p>Zodra je <strong>package.json<\/strong> is ge\u00efnitialiseerd en alle dependencies zijn ge\u00efnstalleerd, maak je een nieuw bestand, bijvoorbeeld <strong>app.js<\/strong>.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<p>Hier is een standaardopzet voor je <strong>app.js<\/strong> bestand, waarin je de benodigde modules importeert en instelt dat het op een specifieke poort moet draaien:<\/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>Voer het volgende commando uit om je Node.js applicatie uit te voeren:<\/p>\n<pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<p>Het draaien van een applicatie als deze betekent echter dat je deze handmatig opnieuw moet starten elke keer dat je wijzigingen aanbrengt in je project. Om dit ongemak te omzeilen, kun je <code>nodemon<\/code> gebruiken, dat je al hebt ge\u00efnstalleerd. Configureer het in je <strong>package.json<\/strong> bestand door een script commando te maken:<\/p>\n<pre><code class=\"language-json\">  \"scripts\": {\n    \"dev\": \"nodemon app.js\"\n  },<\/code><\/pre>\n<p>Draai nu je Node.js applicatie met automatisch herstarten met het volgende commando:<\/p>\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<h3>Aan de slag met Express en EJS templating<\/h3>\n<p>In deze tutorial bouw je een Node.js applicatie die inhoud weergeeft in de browser. Om dit te bereiken wordt express.js gebruikt als webframework en EJS (Embedded JavaScript) als templating engine.<\/p>\n<p>Om EJS in te stellen als je view engine, voeg je de volgende regel toe aan je <strong>app.js<\/strong> bestand. Dit maakt het mogelijk om <code>.ejs<\/code> bestanden uit te voeren:<\/p>\n<pre><code class=\"language-js\">\/\/ Use EJS as the view engine \napp.set('view engine', 'ejs');<\/code><\/pre>\n<p>Nu Express is geconfigureerd met EJS, definieer je routes. In webapplicaties bepalen routes hoe de applicatie reageert op verschillende HTTP verzoeken (zoals GET of POST) en specificeren ze de acties die moeten worden ondernomen wanneer een specifieke URL wordt opgevraagd.<\/p>\n<p>Maak bijvoorbeeld een route die een specifieke pagina laadt wanneer een gebruiker naar de <strong>indexpagina<\/strong> navigeert (<code>\/<\/code>). Gebruik hiervoor de GET verzoekmethode.<\/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>In de bovenstaande code zal de server, wanneer een gebruiker de <strong>index<\/strong> van je applicatie opent, de callback-functie uitvoeren die als tweede parameter is opgegeven. Binnen deze callback-functie kun je de logica afhandelen om een EJS template te renderen of wat <a href=\"https:\/\/kinsta.com\/blog\/what-is-html\/\">HTML<\/a> content te sturen die op de homepage moet worden weergegeven.<\/p>\n<p>Je kunt de methode <code>res.render()<\/code> gebruiken om een EJS template te renderen of <code>res.send()<\/code> gebruiken om eenvoudige HTML inhoud te versturen.<\/p>\n<pre><code class=\"language-js\">app.get('\/', (req, res) =&gt; {\n    res.send('Hello World');\n});<\/code><\/pre>\n<p>Als je je applicatie uitvoert, wordt &#8220;Hello World&#8221; weergegeven op de <strong>index <\/strong>pagina.<\/p>\n<h3>EJS templating<\/h3>\n<p>Deze tutorial richt zich op de logica en bevat startbestanden, zodat je je geen zorgen hoeft te maken over het maken van templates vanaf nul. Volg deze stappen om aan de slag te gaan:<\/p>\n<ol start=\"1\">\n<li>Open het <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\" target=\"_blank\" rel=\"noopener noreferrer\">template op GitHub<\/a> om een nieuwe repository aan te maken.<\/li>\n<li>Vink de optie <strong>Include all branches<\/strong> tijdens het aanmaken van de repository aan.<\/li>\n<li>Zodra de repository is aangemaakt, kloon je het project naar je computer met <a href=\"https:\/\/kinsta.com\/nl\/onderwerpen\/git\/\">Git<\/a>.<\/li>\n<li>Om toegang te krijgen tot de startercode, schakel je naar de <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a> branch in je lokale repository.<\/li>\n<\/ol>\n<p>In de startcode hebben we twee belangrijke mappen: <strong>public<\/strong> en <strong>views<\/strong>. De <strong>public<\/strong> map bevat alle statische onderdelen (CSS bestanden en afbeeldingen). Ze worden aan de template toegevoegd als statische bestanden:<\/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>In de <strong>views<\/strong> map staat het <strong>layout.ejs<\/strong> bestand en twee mappen: <strong>pages<\/strong> en <strong>partials<\/strong>. Het <strong>layout.ejs<\/strong> bestand bevat de algemene layout van dit project, zodat je niet voor alle pagina&#8217;s een aantal terugkerende code hoeft te herhalen. Importeer de <code>express-ejs-layouts<\/code> bibliotheek in het <strong>app.js<\/strong> bestand en configureer het:<\/p>\n<pre><code class=\"language-js\">\/\/ Import\nconst expressEjsLayouts = require('express-ejs-layouts');\n\n\/\/ Configure\napp.use(expressEjsLayouts);<\/code><\/pre>\n<p>De map <strong>pages<\/strong> bevat de routebestanden (<strong>index.ejs<\/strong> en <strong>operation.ejs<\/strong>), terwijl de map <strong>partials<\/strong> componenten bevat (<strong>header.ejs<\/strong> en <strong>footer.ejs<\/strong>). Voeg ze als volgt toe aan de layout:<\/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>Wanneer je <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">je Node.js applicatie uitvoert<\/a>, wordt de UI geladen, maar je moet logica aan deze applicatie toevoegen om de formuliergegevens naar de Kinsta API te sturen en informatie over de site naar Slack te sturen wanneer de operatie start.<\/p>\n<h2>Aan de slag met Slack Incoming Webhooks<\/h2>\n<p>Slack Incoming Webhooks bieden een eenvoudige manier om berichten van externe applicaties naar Slack te sturen. Om Slack Incoming Webhooks te gebruiken, maak en configureer je een Slack applicatie en kopieer je vervolgens je Webhook URL om berichten programmatisch naar Slack te sturen.<\/p>\n<h3>Een Slack app maken en Webhook URL verkrijgen<\/h3>\n<p>Maak een nieuwe Slack applicatie aan door deze stappen te volgen:<\/p>\n<ol start=\"1\">\n<li>Navigeer naar het <a href=\"https:\/\/api.slack.com\/apps\/\" target=\"_blank\" rel=\"noopener noreferrer\">Slack API<\/a> dashboard.<\/li>\n<li>Klik op de knop <strong>Create New App<\/strong>, waarmee een modal wordt geopend.<\/li>\n<li>Selecteer de <strong>From Scratch<\/strong> optie om je app vanaf de grond op te bouwen.<\/li>\n<li>Geef een naam op voor je Slack app, bijvoorbeeld <strong>Kinsta Bot<\/strong>.<\/li>\n<li>Kies vervolgens de workspace waar je de app wilt installeren en klik op de knop <strong>Create app<\/strong>.<\/li>\n<\/ol>\n<p>Zodra je Slack-applicatie is gemaakt, kun je inkomende Webhooks inschakelen door te navigeren naar <strong>Features <\/strong>en <strong>Incoming Webhooks<\/strong> te selecteren. Schakel de schakelaar in om Incoming Webhooks in te schakelen voor je app.<\/p>\n<p>Scroll naar beneden naar de sectie <strong>Webhook URLs for your workspace <\/strong>en klik op <strong>Add new webhook to workspace<\/strong>. Je wordt gevraagd om een kanaal te kiezen waar de berichten naartoe worden gestuurd. Selecteer het gewenste kanaal en klik op <strong>Authorize<\/strong>.<\/p>\n<p>Na autorisatie krijg je een Webhook URL voor het geselecteerde kanaal. Deze URL gebruik je om berichten programmatisch naar Slack te sturen. Zo ziet een Webhook URL eruit:<\/p>\n<pre><code class=\"language-js\">https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX<\/code><\/pre>\n<p>Deze Webhook is specifiek voor \u00e9\u00e9n gebruiker en \u00e9\u00e9n kanaal. Houd het veilig, want het fungeert als een authenticatietoken voor je app. Je kunt de unieke codes na <code>\/services\/<\/code> opslaan in je <strong>.env<\/strong> bestand. Je wordt ook gevraagd om de app opnieuw te installeren op je workspace om de wijzigingen door te voeren.<\/p>\n<h2>Berichten naar Slack sturen met Node.js en Kinsta API<\/h2>\n<p>Nu de interface van je Node.js applicatie is ingesteld en de Slackbot met succes is aangemaakt (samen met je WebHook URL), is het tijd om de logica af te handelen.<\/p>\n<h3>Formuliergegevens ophalen in Node.js<\/h3>\n<p>Op de <strong>index <\/strong>pagina heb je een formulier dat gegevens naar de Kinsta API stuurt om een nieuwe WordPress site te maken. Om dit te laten werken, moet je een POST verzoek maken vanaf de index pagina. Zorg ervoor dat je formulier een methode <code>POST<\/code> heeft en dat de invoervelden een <code>name<\/code> attribuut hebben, dat zal worden gebruikt in het <strong>app.js<\/strong> bestand.<\/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>Om gegevens van een formulier op te halen in Node.js, moet je de volgende middleware gebruiken:<\/p>\n<pre><code class=\"language-js\">app.use(express.json());\napp.use(express.urlencoded({ extended: true }));<\/code><\/pre>\n<p>Nu kun je de waarden van je formulier opvragen met <code>req.body.[form field name]<\/code>. <code>req.body.displayName<\/code> geeft je bijvoorbeeld de weergavenaam die via het formulier is verzonden. Laten we de totale formuliergegevens loggen:<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    console.log(req.body);\n});<\/code><\/pre>\n<p>Als je je code uitvoert, worden de formuliergegevens weergegeven nadat je het formulier hebt ingevuld en op de knop <strong>Submit<\/strong> hebt geklikt.<\/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=\"Formuliergegevens opgehaald uit de req parameter in Node.js.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Formuliergegevens opgehaald uit de req parameter in Node.js.<\/figcaption><\/figure>\n<h3>Site maken met Kinsta API in Node.js<\/h3>\n<p>Om een WordPress site te maken met de Kinsta API in Node.js kun je de methode <code>fetch()<\/code> gebruiken, die nu wordt ondersteund en effici\u00ebnt werkt in de <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-20\/#performance\">nieuwste Node.js versies<\/a>.<\/p>\n<p>Om een bewerking met de Kinsta API uit te voeren, moet je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/kinsta-api-sleutel\/\">API sleutel<\/a> aanmaken. Om een API sleutel te genereren:<\/p>\n<ol start=\"1\">\n<li>Ga naar je MyKinsta dashboard.<\/li>\n<li>Navigeer naar de pagina <strong>API sleutels <\/strong>(<strong>Je naam<\/strong> &gt; <strong>Bedrijfsinstellingen<\/strong> &gt; <strong>API sleutels<\/strong>).<\/li>\n<li>Klik op <strong>API sleutel aanmaken<\/strong>.<\/li>\n<li>Kies een vervaldatum of stel een aangepaste begindatum in en het aantal uren dat de sleutel moet verlopen.<\/li>\n<li>Geef de sleutel een unieke naam.<\/li>\n<li>Klik op <strong>Genereren<\/strong>.<\/li>\n<\/ol>\n<p>Zorg ervoor dat je de gegenereerde API sleutel kopieert en veilig opslaat, want hij zal alleen op dit moment zichtbaar zijn. Maak voor dit project een <strong>.env<\/strong> bestand aan in je root directory en sla de API sleutel op als <code>KINSTA_API_KEY<\/code>.<\/p>\n<p>Om een WordPress site te maken met behulp van de Kinsta API, heb je bovendien je Bedrijfs-ID nodig (die je kunt vinden in MyKinsta onder <strong>Bedrijf<\/strong> &gt; <strong>Factureringsgegevens<\/strong> &gt; <strong>Bedrijfs-ID<\/strong>). Sla deze ID ook op in het <strong>.env<\/strong> bestand, zodat je toegang hebt tot deze omgevingsvariabelen via <code>process.env<\/code>. Om deze functionaliteit in te schakelen, moet je de <code>dotenv<\/code> dependency bovenaan je <strong>app.js<\/strong> bestand als volgt configureren:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config();<\/code><\/pre>\n<p>Om verder te gaan met het maken van een WordPress site via de Kinsta API, stuur je een POST verzoek naar het <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/addWordPressSite\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites<\/a><\/code> endpoint, met de benodigde gegevens in het <code>req.body<\/code> object:<\/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>Door de bovenstaande code uit te voeren, maak je een nieuwe WordPress site met Kinsta API. Maar dit is niet het hoofddoel. Het doel is om een bericht naar Slack te sturen met informatie over de site als het maken van de site is gelukt.<\/p>\n<h3>Een bericht sturen naar Slack met de Incoming Webhook URL<\/h3>\n<p>Om dit te doen, maak je een <strong>If<\/strong> statement om de respons-status van het API verzoek te controleren. Als deze <code>202<\/code> is, betekent dit &#8220;sitecreatie is gestart&#8221; en kun je een bericht naar Slack sturen met de inkomende Webhooks URL. Om dit te bereiken kun je de HTTP verzoekbibliotheek van je voorkeur gebruiken (bijv. <a href=\"https:\/\/kinsta.com\/nl\/blog\/javascript-http-verzoek\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>) of een methode om een POST verzoek naar Slack te sturen. Laten we de methode <code>fetch()<\/code> gebruiken:<\/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>Voer de bovenstaande code uit en vul het formulier voor het maken van de site in. Als het proces succesvol is, wordt er direct een bericht naar Slack gestuurd.<\/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 verzonden van Node.js naar Slack met Incoming Webhooks.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Hello World verzonden van Node.js naar Slack met Incoming Webhooks.<\/figcaption><\/figure>\n<h3>Slack berichten aanpassen<\/h3>\n<p>Het bovenstaande voorbeeld stuurt een eenvoudig tekstbericht, maar Slack Incoming Webhooks ondersteunen veel meer dan eenvoudige tekst. Je kunt je berichten aanpassen met bijlagen, links, afbeeldingen, knoppen en meer.<\/p>\n<p>Een manier om Slack berichten aan te passen is door gebruik te maken van de <a href=\"https:\/\/app.slack.com\/block-kit-builder\" target=\"_blank\" rel=\"noopener noreferrer\">Slack Block Kit Builder<\/a>. De Block Kit is een UI framework van Slack waarmee je rijke en interactieve berichten kunt bouwen met verschillende contentelementen.<\/p>\n<p>Voor deze tutorial is hier een blok gemaakt met de Block Kit Builder om het bericht goed op te maken en een aantal waarden toe te voegen uit het formulier en het antwoord voor het maken van de site:<\/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 deze code maak je een berichtobject met een array van blokken. Elk blok vertegenwoordigt een specifiek deel van het Slack bericht en kan verschillende soorten inhoud hebben.<\/p>\n<ol start=\"1\">\n<li><strong>Section blok<\/strong>: Dit type blok wordt gebruikt om een gedeelte van de tekst weer te geven. Je gebruikt de <code>type: 'section'<\/code> om aan te geven dat het om een sectieblok gaat. Binnen het sectieblok wordt de text property gebruikt met <code>type: 'mrkdwn'<\/code> om aan te geven dat de inhoud van de tekst moet worden ge\u00efnterpreteerd als Markdown format. De daadwerkelijke inhoud van de tekst staat in de text property, en we gebruiken template-literals om dynamische waarden van het formulier en de site creation response op te nemen, zoals <code>req.body.displayName<\/code> en <code>data.operation_id<\/code>.<\/li>\n<li><strong>Divider blok<\/strong>: Dit bloktype wordt gebruikt om een horizontale lijn toe te voegen om delen van het bericht te scheiden. We gebruiken <code>type: 'divider'<\/code> om het scheidingsblok te maken.<\/li>\n<\/ol>\n<p>Wanneer dit bericht naar Slack wordt verzonden met de Incoming Webhook, genereert het een visueel aantrekkelijk en informatief bericht in je Slack kanaal. Het bericht bevat dynamische waarden uit het formulier (zoals de naam van de site) en informatie uit het antwoord op het maken van de site, waardoor het een zeer aangepast en gepersonaliseerd bericht wordt.<\/p>\n<p>Om dit aangepaste bericht te versturen, vervang je het object in de body van de <code>fetch()<\/code> door de inhoud van de berichtvariabele:<\/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 bericht aangepast met Slack block Kit Builder.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Slack bericht aangepast met Slack block Kit Builder.<\/figcaption><\/figure>\n<h2>Site-aanmaak afhandelen met Kinsta API<\/h2>\n<p>In het bericht dat naar Slack wordt gestuurd, wordt een link gemaakt met de ID van de operatie en de weergavenaam. Je kunt een nieuwe route maken voor de <strong>Operations<\/strong> pagina om deze gegevens te gebruiken om de status van de operatie te controleren.<\/p>\n<p>In Express kun je URL parameters opvragen met de parameter <code>req<\/code>. Om bijvoorbeeld het ID van de operatie op te vragen, gebruik je <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>Met de bovenstaande code zal klikken op de link in Slack een verzoek doen aan de Kinsta API om de operationele status van je site te controleren. Werk het <strong>operation.ejs<\/strong> bestand bij om dynamische gegevens toe te voegen:<\/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=\"Operation pagina met operation ID en site details.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Operation pagina met operation ID en site details.<\/figcaption><\/figure>\n<p>Tot slot: je kunt de redirect-methode gebruiken om naar de operations pagina te navigeren als het proces voor het maken van een site start:<\/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>De volledige sourcecode voor dit project is beschikbaar op <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/main\" target=\"_blank\" rel=\"noopener noreferrer\">de main branch van deze GitHub repository<\/a>.<\/p>\n<h2>Je Node.js applicatie deployen naar Kinsta<\/h2>\n<p>Je kunt deze Node.js applicatie eenvoudig deployen naar Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting<\/a> platform. Het enige wat je hoeft te doen is je code pushen naar de Git provider van je voorkeur (<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> of <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>). Volg dan deze stappen:<\/p>\n<ol start=\"1\">\n<li>Log in op je Kinsta account op het <a href=\"https:\/\/my.kinsta.com\/?lang=nl\">MyKinsta<\/a> dashboard.<\/li>\n<li>Klik op <strong>Dienst toevoegen<\/strong>.<\/li>\n<li>Selecteer <strong>Applicatie<\/strong> in het dropdown menu.<\/li>\n<li>Kies in de popup die verschijnt de repository die je wilt deployen. Als je meerdere branches hebt, kun je de gewenste branch selecteren en een naam geven aan je applicatie.<\/li>\n<li>Selecteer een van de beschikbare datacenterlocaties. Kinsta zal de dependencies van je app detecteren en installeren vanuit package.json en vervolgens bouwen en deployen.<\/li>\n<\/ol>\n<p>Tenslotte is het niet veilig om API sleutels naar publieke hosts zoals je Git provider te sturen. Bij het hosten kun je ze als <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">omgevingsvariabelen<\/a> toevoegen met dezelfde variabelennaam en waarde die in het <strong>.env<\/strong> bestand zijn gespecificeerd.<\/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=\"Stel omgevingsvariabelen in op DevKinsta bij het deployen.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Stel omgevingsvariabelen in op DevKinsta bij het deployen.<\/figcaption><\/figure>\n<p>Zodra je de deployment van je applicatie start, zal deze normaal gesproken binnen een paar minuten gebouwd en gedeployd worden. Je krijgt een link naar je nieuwe applicatie, die er als volgt uitziet: <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>Als er een probleem is met je Node.js configuraties dat de deployment be\u00efnvloedt, kun je een Node.js buildpack toevoegen inhet tabblad Deployment instellingen.<\/p>\n<\/aside>\n\n<h2>Samenvatting<\/h2>\n<p>In deze tutorial heb je geleerd hoe je berichten naar Slack kunt sturen vanuit een Node.js applicatie met behulp van Incoming Webhooks en hoe je Slack berichten kunt aanpassen met de Block Kit Builder.<\/p>\n<p>De mogelijkheden met Slack en de Kinsta API zijn enorm, en deze tutorial is nog maar het begin. Door deze tools te integreren kun je een naadloze workflow cre\u00ebren die je team altijd up-to-date houdt en de productiviteit verhoogt.<\/p>\n<p><em>Hoe gebruik jij de Kinsta API? Welke features zou je als volgende toegevoegd\/belicht willen zien?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Door de jaren heen zijn onze diensten bij Kinsta altijd handmatig afgehandeld via het MyKinsta dashboard. Maar met de introductie van de Kinsta API en de &#8230;<\/p>\n","protected":false},"author":287,"featured_media":55138,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[911,853,860],"class_list":["post-55137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-kinsta-diensten","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 diensten beheren met Kinsta API en Slack - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!\" \/>\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\/nl\/blog\/kinsta-diensten-api-slack\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kinsta diensten beheren met Kinsta API en Slack\" \/>\n<meta property=\"og:description\" content=\"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-20T08:22:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T09:32:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/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=\"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/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_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Kinsta diensten beheren met Kinsta API en Slack\",\"datePublished\":\"2023-08-20T08:22:51+00:00\",\"dateModified\":\"2023-08-23T09:32:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\"},\"wordCount\":2808,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\",\"name\":\"Kinsta diensten beheren met Kinsta API en Slack - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"datePublished\":\"2023-08-20T08:22:51+00:00\",\"dateModified\":\"2023-08-23T09:32:17+00:00\",\"description\":\"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kinsta diensten beheren met Kinsta API en Slack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kinsta diensten beheren met Kinsta API en Slack - Kinsta\u00ae","description":"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!","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\/nl\/blog\/kinsta-diensten-api-slack\/","og_locale":"nl_NL","og_type":"article","og_title":"Kinsta diensten beheren met Kinsta API en Slack","og_description":"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!","og_url":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-08-20T08:22:51+00:00","article_modified_time":"2023-08-23T09:32:17+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/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":"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Joel Olawanle","Geschatte leestijd":"19 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Kinsta diensten beheren met Kinsta API en Slack","datePublished":"2023-08-20T08:22:51+00:00","dateModified":"2023-08-23T09:32:17+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/"},"wordCount":2808,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/","url":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/","name":"Kinsta diensten beheren met Kinsta API en Slack - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","datePublished":"2023-08-20T08:22:51+00:00","dateModified":"2023-08-23T09:32:17+00:00","description":"Leer hoe je moeiteloos Kinsta Diensten beheert met behulp van Kinsta API en Slack integratie. Verhoog je effici\u00ebntie vandaag nog!","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/kinsta-diensten-api-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/api\/"},{"@type":"ListItem","position":3,"name":"Kinsta diensten beheren met Kinsta API en Slack"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=55137"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55137\/revisions"}],"predecessor-version":[{"id":55156,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55137\/revisions\/55156"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55137\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/55138"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=55137"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=55137"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=55137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}