Slack is een krachtig berichtenplatform waarmee teams efficiënt kunnen samenwerken. En als je moet samenwerken om meerdere WordPress sites hier bij Kinsta te beheren, dan hebben we goed nieuws: je kan een aantal veelvoorkomende sitebeheertaken naar Slack verplaatsen met behulp van de Kinsta API.

Het integreren van een Slackbot in je workflow kan tijd besparen en de productiviteit verbeteren. Deze tutorial combineert de kracht van Slack en de Kinsta API om een Slackbot te bouwen die taken kan beheren zoals het controleren van de sitestatus, het wissen van de cache van een site en het herstarten van de PHP engine van een site.

Wat je bouwt

Hier bouw je een Slackbot op Node.js met behulp van de Bolt API (de snelste manier om te beginnen met programmeren met het Slack Platform). Je applicatie zet de slash commando’s van Slack om in calls naar de Kinsta API en stuurt responses door zodat alle gebruikersinteractie in Slack plaatsvindt.

Kinsta API Slackbot Demo.
Kinsta API Slackbot Demo.

Vereisten

Om dit project te kunnen volgen, moet je over het volgende beschikken:

Een Slack applicatie maken

Een Slackbot is in wezen een Slack applicatie. Volg deze stappen om een nieuwe Slack applicatie te maken:

  1. Navigeer naar het Slack API dashboard.
  2. Klik op de knop Create New App, die een popup opent.
  3. Selecteer de optie From Scratch om je app vanaf de grond op te bouwen.
  4. Geef een naam op voor je Slack app. Bijvoorbeeld Kinsta Bot.
  5. Kies vervolgens de workspace waar je de app wilt installeren en klik op de knop Create app.

Aarzel niet om de basisinformatie van je app te bewerken door naar de optie Basic Information in de zijbalk te gaan. Scroll naar beneden naar Display Information om details toe te voegen zoals een afbeelding, naam, beschrijving, kleur en meer.

Slackbot Display Information.
Slackbot Display Information.

OAuth en rechten configureren

Je hebt met succes een Slackbot gemaakt. Er moeten echter bepaalde rechten worden toegekend om hem toegang te geven tot gegevens en acties uit te laten voeren binnen je Slack workspace. Om toegang te krijgen tot de benodigde instellingen:

  1. Ga naar het dashboard van je Slack app en zoek de optie OAuth and Permissions in de linker zijbalk.
  2. Zodra je daar bent, scroll je naar beneden naar de sectie Scopes.
  3. Geef je bot de mogelijkheid om chatberichten van gebruikers te lezen en op die berichten te reageren.

Hieronder zie je een screenshot met de scopes die je aan je bot moet geven:

Slack app Scopes.
Slack app Scopes.

Door deze scopes te configureren, zal je bot in staat zijn om naadloos te communiceren met Slack gebruikers en zijn beoogde features effectief uit te voeren.

Slack Bot installeren op je workspace

Om het proces te voltooien, moet je je nieuwe Slackbot installeren in je Slack workspace. Navigeer naar de linker zijbalk en selecteer Install Apps. Klik daar op Install to Workspace en geef het kanaal op waar je de bot wilt toevoegen.

Je Slackbot is nu klaar. Laten we een Node.js server opzetten die zal worden gebruikt om je verzoeken te ontvangen en te verwerken.

De ontwikkelomgeving instellen

Om te beginnen met je nieuwe Node.js project, maak je een nieuwe map voor je applicatie en initialiseer je deze met npm:

mkdir my-express-app 
cd my-express-app 
npm init -y

Na het uitvoeren van het bovenstaande commando wordt een nieuw package.json bestand aangemaakt in de door jou gekozen map met standaard waarden. Het package.json bestand is essentieel omdat het informatie bevat over je project en zijn dependencies. Deze dependencies zorgen voor een soepele ontwikkeling en verbeteren de functionaliteit van je project:

  1. @slack/bolt: Dit JavaScript framework stelt je in staat om snel feature-rijke Slack apps te maken, gebruikmakend van de nieuwste platformmogelijkheden.
  2. nodemon: Een waardevolle tool die je Node.js applicatie automatisch herstart wanneer er wijzigingen in bestanden in de map worden gedetecteerd, wat zorgt voor een gestroomlijnde ontwikkelworkflow.
  3. dotenv: Deze zero-dependency module speelt een cruciale rol bij het laden van omgevingsvariabelen uit het .env bestand in de process.env, waardoor configuratiebeheer een fluitje van een cent wordt.

Voer de volgende commando’s uit om de vereiste pakketten te installeren:

npm i @slack/bolt
npm i --save-dev nodemon dotenv

Na het succesvol installeren van deze dependencies en dev dependencies, is het tijd om een dev script toe te voegen aan je package.json bestand, met behulp van nodemon om je JavaScript bestand uit te voeren. Zorg ervoor dat je package.json scriptobject het volgende bevat:

"scripts": {
  "dev": "nodemon app.js"
}

Tot slot is het belangrijk om te vermelden dat het dev script verwijst naar een niet-bestaand app.js bestand. Maak dit bestand aan in de map van je project, want hier wordt de logica van je project afgehandeld.

touch app.js

Configureren van omgevingsvariabelen (tokens en geheimen)

Je hebt specifieke tokens en secrets nodig om te kunnen communiceren met je Slack applicatie vanuit je Node.js project. Deze gegevens zijn gevoelig en om ervoor te zorgen dat ze worden beschermd bij het gebruik van versiebeheer, slaan we ze op in het .env bestand.

Om de Signing secret te verkrijgen, ga je naar je Slack dashboard, klik je op Basic Information en scroll je naar beneden naar App Credentials, waar je de Signing secret vindt. Voor het token klik je op Install App of OAuth & Permissions en daar vind je het OAuth Token. Meestal begint het Token met “xoxb”.

Maak een bestand aan met de naam .env in de hoofdmap van je project en voeg het Signing secret en het Bot Token toe in het volgende format:

SLACK_SIGNING_SECRET="YOUR SIGNING SECRET"
SLACK_BOT_TOKEN="YOUR BOT TOKEN"

Om er zeker van te zijn dat deze gevoelige informatie niet naar je Git provider gepushed wordt, maak je een .gitignore bestand aan in de hoofdmap van je project en voeg je de volgende regels toe om het .env bestand en de node_modules map te negeren:

/node_modules
.env

Als deze instelling voltooid is, ben je nu klaar om verder te gaan met de serverconfiguratie.

De Node.js server instellen

Het instellen van de Node.js server is een belangrijke stap bij het bouwen van je Slackbot. Je moet de benodigde pakketten en modules importeren, ze initialiseren en de poort instellen waarop je project zal luisteren. Open het app.js bestand dat je eerder hebt gemaakt en voeg de volgende code toe:

const { App } = require("@slack/bolt");
require("dotenv").config();

// Initializes your app with your bot token and signing secret
const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
});

(async () => {
    // Start your app
    await app.start(process.env.PORT || 3000);
    console.log(`⚡️ Kinsta Bot app is running on port ${process.env.PORT || 3000}!`);
})();

In de bovenstaande code importeer je de App klasse uit de @slack/bolt bibliotheek, een cruciaal onderdeel voor het bouwen van Slack apps. Daarnaast gebruik je het dotenv pakket om omgevingsvariabelen te verwerken.

Vervolgens wordt de constante app gemaakt met behulp van de klasse App, die je Slack bot applicatie voorstelt. Hiervoor zijn twee belangrijke parameters nodig: token en signingSecret. Deze waarden worden opgehaald uit het .env bestand.

Vervolgens wordt in de async functie de server ingesteld. De app wordt gestart door app.start() aan te roepen. Er wordt lokaal geluisterd naar poort 3000 en er wordt een bericht naar de console gelogd om te bevestigen dat de Kinsta Bot app draait.

Als je nu het script dev uitvoert dat je hebt geconfigureerd (npm run dev), krijg je het bericht in je terminal: “⚡️ Kinsta Bot app runs on port 3000!”

Slack API Socket Mode begrijpen

Bij Slack API integratie met Node.js servers zijn er twee primaire verbindingsmethoden: gebruik maken van het publieke HTTP endpoint van je server of gebruik maken van Socket Mode om WebSockets in te schakelen. Deze tutorial richt zich op het gebruik van Socket Mode, omdat het de implementatie van interactieve features zoals Slack slash de commando’s gemakkelijker maakt. Met deze aanpak kan Slack verbinding maken met je Node.js server met behulp van WebSockets in plaats van traditionele HTTP.

Als je er echter voor kiest om het HTTP endpoint lokaal te gebruiken, kun je ngrok gebruiken om een publieke URL te maken die proxied naar je localhost.

Aan de slag met Socket Mode

Volg deze stappen om aan de slag te gaan met Socket Mode:

  1. Navigeer naar Basic Information  de linker zijbalk van je Slack dashboard. Scroll naar beneden naar App-Level Tokens en klik op de knop Generate Token and Scopes.
  2. Geef je token een naam en voeg de twee beschikbare scopes toe: connections:write en authorizations:read. Klik op Generate om het token aan te maken.
  3. Kopieer het gegenereerde token en plak het in je .env bestand en wijs het toe aan een variabele genaamd APP_TOKEN. Onthoud dat tokenreeksen op app-niveau beginnen met xapp-.

Klik vervolgens op Socket Mode in de zijbalk en schakel de optie Enable Socket Mode in. Voeg tenslotte in je app.js bestand socketMode:true en je appToken toe aan de code die je app/server initialiseert:

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  socketMode: true, // enable socket mode
  appToken: process.env.APP_TOKEN,
});

Als je deze stappen hebt uitgevoerd, zullen alle verzoeken aan je ontwikkelserver via WebSockets verlopen in plaats van via HTTP. Met deze instelling kun je optimaal gebruik maken van Socket Mode en de functionaliteit van je Slackbot verbeteren.

Slack slash commando’s

Slash commando’s zijn een krachtige functie in Slack die aangepaste triggers voor specifieke acties mogelijk maakt. Deze triggers kunnen worden gedetecteerd in chatberichten in verschillende kanalen binnen Slack. Bovendien kun je met slash commando’s tekstgegevens rechtstreeks aan je server doorgeven. Als je bijvoorbeeld een commando als /operation_status [operation ID] instelt, zal het de gegeven operation ID doorgeven aan je server en de corresponderende operation_status commando listener triggeren.

Nu je server goed is geconfigureerd voor interactie met Slack, is de volgende stap het instellen van slash commando’s die acties op je server triggeren.

Slash commando’s maken op Slack

Om Slash commando’s aan te maken op Slack, klik je op de menuoptie Slash Commands in de linker zijbalk en vervolgens op de knop Create New Command. Vul het resulterende formulier in met de afbeelding hieronder als richtlijn.

Maak een nieuw Slack commando.
Maak een nieuw Slack commando.

Klik na het invullen op de knop Save. Slack zal je vragen om de app opnieuw te installeren op je workspace zodat de wijzigingen van kracht worden. Volg de instructies om een aantal slash commando’s te maken, zoals in de afbeelding hieronder:

Slash commando's voor interactie met Kinsta API.
Slash commando’s voor interactie met Kinsta API.

Slash commando’s configureren met Node.js

Zodra je de benodigde slash commando’s hebt gemaakt, pas je je Node.js app aan om erop te reageren.

Laten we beginnen met het testen van het /operation_status commando. Stel een listener in voor gebeurtenissen die het commando /operation_status bevatten door de volgende code toe te voegen aan je app.js bestand:

const { App } = require('@slack/bolt');
require('dotenv').config();

const app = new App({
    token: process.env.SLACK_BOT_TOKEN,
    signingSecret: process.env.SLACK_SIGNING_SECRET,
    socketMode: true, // enable the following to use socket mode
    appToken: process.env.APP_TOKEN,
});

app.command('/operation_status', async ({ command, ack, say }) => {
    await ack();
    say('Wooah! Iit works!');
});

(async () => {
    // Start your app
    await app.start(process.env.PORT || 3000);
    console.log(`⚡️ Kinsta Bot app is running on port ${process.env.PORT || 3000}!`);
})();

In de bovenstaande code ligt de nadruk op de feature app.command(), die vergelijkbaar functioneert met event listeners in JavaScript. Je specificeert het commando waar je naar wilt luisteren en maakt dan een asynchrone callback-functie om de gewenste actie te definiëren. Deze functie neemt drie parameters:

  • command: Bevat de details van het slash commando dat door de gebruiker is verzonden.
  • ack: Bevestigt de ontvangst van het slash commando.
  • say: Stuurt een bericht terug naar het Slack kanaal.

Met bovenstaande code genereert het commando /operation_status in Slack het bericht: “Wooah! it works!”

Kinsta slash commando testen.
Kinsta slash commando testen.

Laten we nu de commando listeners toevoegen voor alle slash commando’s die je hebt gemaakt:

app.command('/environment_id', async ({ command, ack, say }) => {
    await ack();
    // Perform the desired action using the command and then send a response.
});

app.command('/site_id', async ({ command, ack, say }) => {
    await ack();
    // Perform the desired action using the command and then send a response.
});

app.command('/operation_status', async ({ command, ack, say }) => {
    await ack();
    // Perform the desired action using the command and then send a response.
});

app.command('/clear_site_cache', async ({ command, ack, say }) => {
    await ack();
    // Perform the desired action using the command and then send a response.
});

app.command('/restart_php_engine', async ({ command, ack, say }) => {
    await ack();
    // Perform the desired action using the command and then send a response.
});

Je app is nu klaar om te luisteren naar de Slack slash commando’s. Het is tijd om de acties toe te voegen die elk commando teweegbrengt.

Slash commando’s implementeren met Kinsta API

Je app zal reageren op elk slash commando met een call naar de Kinsta API en vervolgens het resultaat van die actie terugsturen naar Slack. Om de Kinsta API te gebruiken, moet je een account hebben met ten minste één WordPress site, applicatie of database in MyKinsta. Je moet ook een API sleutel genereren om je te authenticeren en toegang te krijgen tot je account via de API.

Een Kinsta API sleutel aanmaken

Om een API sleutel te genereren:

  1. Ga naar je MyKinsta dashboard.
  2. Navigeer naar de pagina API sleutels (Je naam > Bedrijfsinstellingen > API sleutels).
  3. Klik op API sleutel aanmaken.
  4. Kies een vervaldatum of stel een aangepaste begindatum in en het aantal uren dat de sleutel moet verlopen.
  5. Geef de sleutel een unieke naam.
  6. Klik op Genereren.

Als je een API sleutel hebt gemaakt, kopieer hem dan en bewaar hem ergens veilig, want dit is de enige keer dat je hem kunt zien. Voor dit project sla je het op in je .env bestand als KINSTA_API_KEY.

Interactie met Kinsta API in Node.js

Interactie met de Kinsta API kan worden bereikt met behulp van een aantal Node.js bibliotheken, waaronder Axios. In deze tutorial kiezen we echter voor de JavaScript fetch() methode, die nu wordt ondersteund en efficiënt werkt in de nieuwste Node.js versies.

Voor deze Slackbot zullen veel API verzoeken worden gedaan, waaronder GET en POST verzoeken. Om herhaling te voorkomen, sla je de API URL en headers op in variabelen, zodat je code gemakkelijk te onderhouden en te lezen is:

// kinsta API utilities
const KinstaAPIUrl = 'https://api.kinsta.com/v2';

const getHeaders = {
    Authorization: `Bearer ${process.env.KINSTA_API_KEY}`,
};

const postHeaders = {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.KINSTA_API_KEY}`,
};

Voordat je begint met het coderen van het antwoord van je app op elk slash commando, moet je je Kinsta bedrijfs-ID kopiëren en opslaan in het .env bestand als KINSTA_COMPANY_ID. Dit is nodig om je sitelijst op te halen.

Omgevings-ID slash commando gebruiken

Wanneer je het slash commando /environment_id gebruikt, zal elke waarde die na het commando wordt opgegeven, worden opgehaald en gebruikt in je Node.js server. Voor dit commando is een hint toegevoegd om aan te geven dat het een parameter verwacht: de [Site name].

Elke site op MyKinsta heeft een unieke sitenaam, maar er is geen direct endpoint om de omgevings-ID van een site op te vragen met behulp van de naam. Daarom moet je eerst een verzoek doen voor alle sites op je bedrijfsaccount en dan de methode find() gebruiken om de site te vinden waarvan de naam overeenkomt met de naam die is doorgegeven met het slash commando.

Hiervoor worden twee verzoeken gedaan. Eerst verkrijg je de ID van de site en daarna doe je nog een verzoek aan het /environments endpoint om de omgevings-ID op te halen die bij die site hoort.

Om de code overzichtelijk en onderhoudsvriendelijk te houden, wordt elke aanvraag onafhankelijk gedaan. Dit betekent dat er individuele functies zijn voor deze verzoeken en dat deze functies worden gecalld in de commando listener.

Laten we beginnen met het ophalen van de lijst van al je sites:

async function getAllSites() {
    const query = new URLSearchParams({
        company: process.env.KINSTA_COMPANY_ID,
    }).toString();
    const resp = await fetch(`${KinstaAPIUrl}/sites?${query}`, {
        method: 'GET',
        headers: getHeaders,
    });
    const data = await resp.json();
    return data;
}

De bovenstaande code retourneert een array met alle sites. In de /environment_id commando listener haal je het antwoord op en sla je het op in een variabele. Vervolgens zoek je met de methode find() naar een site waarvan de naam overeenkomt met de naam die is doorgegeven door Slack. De informatie van Slack wordt opgeslagen in command.text.

app.command('/environment_id', async ({ command, ack, say }) => {
    await ack();
    let siteName = command.text;
    let response = await getAllSites();
    if (response) {
        let mySites = response.company.sites;
        let currentSite = mySites.find((site) => site.name === siteName);
        // get environment ID
    }
});

Nu je de site hebt, gebruik je zijn ID om de omgevings-ID op te halen. Net als bij het opvragen van een lijst met sites, maak je een speciale functie om een HTTP verzoek te doen naar het /environments endpoint:

async function getEnvironmentId(siteId) {
    const resp = await fetch(`${KinstaAPIUrl}/sites/${siteId}/environments`, {
        method: 'GET',
        headers: getHeaders,
    });
    const data = await resp.json();
    return data;
}

De bovenstaande code verwacht dat het ID van de site wordt doorgegeven als argument bij het callen van deze functie in de /environment_id commando listener. Na ontvangst van het ID wordt het API verzoek gedaan en wordt het antwoord opgeslagen in een variabele. Vervolgens kun je de omgevings-ID op Slack uitvoeren met de methode say():

app.command('/environment_id', async ({ command, ack, say }) => {
    await ack();
    let siteName = command.text;
    let response = await getAllSites();
    if (response) {
        let mySites = response.company.sites;
        let currentSite = mySites.find((site) => site.name === siteName);
        let envIdResponse = await getEnvironmentId(currentSite.id);
        let envId = envIdResponse.site.environments[0].id;
        if (envId) {
            say(`Hey 👋,nnThe environment ID for "${siteName}" is 👉 ${envId}`);
        }
    }
});

Op dit moment, als je Slack opent en /environment_id typt gevolgd door een geldige sitenaam, zoals /environment_id fashionstored, krijg je een antwoord dat er als volgt uitziet:

Omgevings-ID slash commando.
Omgevings-ID slash commando.

Sitetools implementeren (site cache wissen, PHP engine herstarten) met Slash commando’s

Twee taken die je eenvoudig kunt implementeren via de API zonder naar MyKinsta te hoeven navigeren zijn de site tools Clear Site Cache en Restart PHP Engine.

Om een site tool handeling uit te voeren, heb je alleen de omgevings-ID nodig. Deze ID wordt gebruikt om een POST-verzoek te doen naar respectievelijk /sites/tools/clear-cache en /sites/tools/restart-php. Zoals je eerder hebt gedaan, voer je het API verzoek zelfstandig uit en retourneer je vervolgens de respons:

async function clearSiteCache(environmentId) {
    const resp = await fetch(`${KinstaAPIUrl}/sites/tools/clear-cache`, {
        method: 'POST',
        headers: postHeaders,
        body: JSON.stringify({
            environment_id: environmentId,
        }),
    });
    const data = await resp.json();
    return data;
}

async function restartPHPEngine(environmentId) {
    const resp = await fetch(`${KinstaAPIUrl}/sites/tools/restart-php`, {
        method: 'POST',
        headers: postHeaders,
        body: JSON.stringify({
            environment_id: environmentId,
        }),
    });
    const data = await resp.json();
    return data;
}

Vervolgens maak je commando listeners aan voor beide operaties in Slack. Deze listeners worden geconfigureerd om te triggeren wanneer het betreffende commando wordt gebruikt:

app.command('/clear_site_cache', async ({ command, ack, say }) => {
    await ack();
    let environmentId = command.text;
    let response = await clearSiteCache(environmentId);
    if (response) {
        say(
            `Hey 👋, nn${response.message} by using the /operation_status slack commmand. nnOperation Id is ${response.operation_id}`
        );
    }
});

app.command('/restart_php_engine', async ({ command, ack, say }) => {
    await ack();
    let environmentId = command.text;
    let response = await restartPHPEngine(environmentId);
    if (response) {
        say(
            `Hey 👋, nn${response.message} by using the /operation_status slack command. nnOperation Id is ${response.operation_id}`
        );
    }
});

In de bovenstaande code worden de gegevens van de API verzoeken gebruikt om het antwoord op te bouwen dat teruggestuurd wordt naar Slack. Het antwoord bevat informatie over de bewerking, zoals het bericht en de bewerkings-ID.

Herstart de PHP engine met het slash commando.
Herstart de PHP engine met het slash commando.

Door deze slash commando’s en hun bijbehorende listeners te gebruiken, stel je je Slackbot in staat om naadloos te communiceren met de Kinsta API, waardoor het eenvoudiger dan ooit wordt om de cache van je site en de PHP engine direct vanuit Slack te beheren.

Een Operation Status implementeren met een Slash commando

Het zou ook goed zijn om de status van je operaties op te vragen vanuit Slack. Hiervoor gebruik je het /operations eindpunt naast de operation_id. Net als eerder maak je een functie om dit verzoek af te handelen en het antwoord op het verzoek terug te sturen:

async function CheckOperationStatus(operationId) {
    const resp = await fetch(`${KinstaAPIUrl}/operations/${operationId}`, {
        method: 'GET',
        headers: getHeaders,
    });
    const data = await resp.json();
    return data;
}

Laten we de commando listener definiëren om het verzoek te triggeren en de via Slack verzonden operation ID door te geven:

app.command('/operation_status', async ({ command, ack, say }) => {
    await ack();
    let operationId = command.text;
    let response = await CheckOperationStatus(operationId);
    let operationMessage = response.message;
    if (operationMessage) {
        say(`Hey 👋, nn${operationMessage}`);
    }
});

Als je nu het commando /operation_status slash gebruikt met een geldige operation ID, krijg je de status van de ID die via Slack is teruggestuurd.

Controleer de status met slackbot.
Controleer de status met slackbot.

Naast de commando’s die je al hebt geïmplementeerd met de Kinsta API, zijn er meer commando’s die kunnen worden geïntegreerd, evenals extra gebeurtenissen die kunnen worden afgehandeld door de Slackbot. De Slackbot kan bijvoorbeeld reageren wanneer hij wordt genoemd of getagd met het @ symbool.

Om deze functionaliteit in te schakelen, moet je je subscriben op de benodigde gebeurtenissen in Slack. In plaats van de methode app.command() te gebruiken, gebruik je de methode app.message(), die zowel de parameters command en say gebruikt.

Hier is een voorbeeld van hoe je dit kunt bereiken:

app.message("hey", async ({ command, say }) => {
  say("Woah! It works!");
});

Nadat je je Slackbot hebt gemaakt, merk je misschien dat je er geen berichten naar kunt sturen. Als je naar de bot navigeert onder het tabblad Apps in Slack, kun je een bericht tegenkomen waarin staat: “Sending messages to this app has been turned off.” Geen zorgen, we kunnen dit eenvoudig oplossen!

Volg deze stappen om het versturen van berichten in te schakelen:

  1. Klik op de menuoptie App Home in de linker zijbalk.
  2. Op deze pagina kun je alle instellingen voor je bot beheren. Scroll naar beneden totdat je het selectievakje “Allow users to send Slash commands and messages from the messages tab” vindt.
  3. Vink het vakje aan om deze functionaliteit in te schakelen.

Zodra je deze wijzigingen hebt aangebracht, is het essentieel om je Slack app opnieuw te laden om de updates weer te geven. Als je een Mac gebruikt, kun je Slack opnieuw laden door op CMD + R te drukken. Andere pc-gebruikers kunnen dit doen door op CTRL + R te drukken.

Nu ben je helemaal klaar om berichten naar je bot te sturen! In de Slack app zou je de Kinsta Bot app moeten zien onder de Your Apps sectie. Klik erop om te beginnen met het versturen van berichten. Voel je vrij om elk van je geconfigureerde slash commando’s te testen en ze zouden vlekkeloos moeten werken. Geniet van de naadloze interactie met je Slackbot!

De volledige broncode voor dit project is beschikbaar op GitHub.

Je Node.js applicatie deployen naar Kinsta

Wanneer je je Node.js server bouwt, is het belangrijk om deze te deployen zodat je Slackbot altijd beschikbaar is, zelfs als je stopt met je lokale ontwikkeling. Je kunt deployen naar Kinsta’s Applicatie Hosting platform als je code wordt gehost op de Git providers Bitbucket, GitHub of GitLab.

Volg deze stappen om je repository te deployen naar Kinsta:

  1. Log in op je Kinsta account op het MyKinsta dashboard.
  2. Klik op Dienst toevoegen.
  3. Selecteer Applicatie in het dropdown menu.
  4. Kies in het venster dat 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.
  5. Selecteer een van de beschikbare datacenterlocaties. Kinsta zal de dependencies van je app detecteren en installeren vanuit package.json en vervolgens bouwen en deployen.

Tenslotte is het niet veilig om API sleutels te pushen naar publieke hosts zoals je Git provider. Als je host op Kinsta, kun je ze toevoegen als omgevingsvariabelen met dezelfde variabelennaam en waarde die je hebt opgegeven in je ontwikkelings .env bestand.

Stel omgevingsvariabelen in op MyKinsta bij het deployen.
Stel omgevingsvariabelen in op MyKinsta bij het deployen.

Zodra je de deployment van je applicatie start, zal het proces beginnen en meestal binnen een paar minuten voltooid zijn. Als er problemen zijn met je Node.js configuraties die de deployment beïnvloeden, kun je een Node.js buildpack toevoegen op het tabblad Deployment-instellingen.

Samenvatting

In dit artikel heb je geleerd hoe je een Node.js applicatie kunt bouwen die Slack verbindt met de Kinsta API en hoe je die applicatie kunt deployen naar Kinsta.

Slackbots en de Kinsta API maken het makkelijker voor je om je Kinsta gehoste diensten te monitoren en te beheren. Voortbouwend op de basisprincipes van deze tutorial, kun je je voorstellen wat je kunt doen met een Slackbot en de API. Denk aan complexere commando’s die bewerkingen uitvoeren zoals het klonen van WordPress sites en het maken van sites rechtstreeks vanuit Slack.

Hoe gebruik jij de Kinsta API? Welke features zou je als volgende toegevoegd/belicht willen zien?

Joel Olawanle Kinsta

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 200 technical articles majorly around JavaScript and it's frameworks.