Slack est une plateforme de messagerie puissante qui permet aux équipes de collaborer efficacement. Et si cette collaboration implique également de s’occuper de plusieurs sites WordPress chez Kinsta, vous pouvez transférer certaines tâches courantes de gestion de site vers Slack avec l’aide de l’API de Kinsta.

L’intégration d’un Slackbot dans votre flux de travail peut vous faire gagner du temps et améliorer votre productivité. Ce tutoriel combine la puissance de Slack et de l’API Kinsta pour construire un Slackbot capable de gérer des tâches telles que la vérification de l’état d’un site, la vidange du cache d’un site et le redémarrage du moteur PHP d’un site.

Ce que vous construisez

Ici, vous construisez un Slackbot sur Node.js en utilisant l’API Bolt (la façon la plus rapide de commencer à programmer avec la plateforme Slack). Votre application transforme les commandes Slack en appels à l’API Kinsta et relaie les réponses pour que toute l’interaction avec l’utilisateur se fasse dans Slack.

Démonstration du Slackbot de l'API Kinsta.
Démonstration du Slackbot de l’API Kinsta.

Pré-requis

Pour suivre ce projet, vous devez disposer des éléments suivants :

  • Connaissances de base en JavaScript et Node.js
  • Node.js version 12 ou supérieure
  • npm (Node Package Manager) installé sur votre ordinateur
  • Espace de travail Slack

Créer une application Slack

Un Slackbot est essentiellement une application Slack. Pour créer une nouvelle application Slack, suivez les étapes suivantes :

  1. Accédez au tableau de bord de l’API Slack.
  2. Cliquez sur le bouton Créer une nouvelle application, qui ouvre une fenêtre modale.
  3. Sélectionnez l’option À partir de zéro pour commencer à construire votre application à partir de zéro.
  4. Donnez un nom à votre application Slack. Par exemple, Kinsta Bot.
  5. Ensuite, choisissez l’espace de travail où vous souhaitez installer l’application et cliquez sur le bouton Créer une application.

N’hésitez pas à modifier les informations de base de votre application en accédant à l’option Informations de base dans la colonne latérale. Faites défiler vers le bas jusqu’à Afficher les informations pour ajouter des détails tels qu’une image, un nom, une description, une couleur, et plus encore.

Informations d'affichage de Slackbot.
Informations d’affichage de Slackbot.

Configurer oAuth et les autorisations

Vous avez réussi à créer un Slackbot. Cependant, certaines permissions doivent être accordées pour lui permettre d’accéder aux données et d’effectuer des actions dans votre espace de travail Slack. Pour accéder aux régalges nécessaires :

  1. Allez sur le tableau de bord de votre application Slack et trouvez l’option OAuth et Permissions dans la colonnne latérale de vgauche.
  2. Une fois que vous y êtes, faites défiler vers le bas jusqu’à la section Scopes.
  3. Accordez à votre robot la possibilité de lire les messages instantanés des utilisateurs et d’y répondre.

Vous trouverez ci-dessous une capture d’écran montrant les champs d’application que vous devez attribuer à votre robot :

Portées de l'application Slack.
Portées de l’application Slack.

En configurant ces champs d’application, votre robot sera en mesure d’interagir de manière transparente avec les utilisateurs de Slack et de remplir efficacement les fonctions pour lesquelles il a été conçu.

Installer Slack Bot dans votre espace de travail

Pour terminer le processus, vous devez installer votre nouveau Slackbot dans votre espace de travail Slack. Naviguez dans la barre latérale de gauche et sélectionnez Installer des applications. De là, cliquez sur Installer dans l’espace de travail et indiquez le canal dans lequel vous souhaitez ajouter le robot.

Votre Slackbot est maintenant prêt. Configurons un serveur Node.js qui sera utilisé pour recevoir et traiter vos requêtes.

Configuration de l’environnement de développement

Pour commencer avec votre nouveau projet Node.js, créez un nouveau répertoire pour votre application et initialisez-le avec npm :

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

Après avoir exécuté la commande ci-dessus, un nouveau fichier package.json est créé dans le répertoire que vous avez choisi avec des valeurs par défaut. Le fichier package.json est essentiel car il contient des informations sur votre projet et ses dépendances. Ces dépendances permettront un développement fluide et amélioreront les fonctionnalités de votre projet :

  1. @slack/bolt: Ce framework JavaScript vous permet de créer rapidement des applications Slack riches en fonctionnalités, en tirant parti des dernières capacités de la plateforme.
  2. nodemon: Un outil précieux qui redémarre automatiquement votre application Node.js chaque fois que des changements de fichiers sont détectés dans le répertoire, garantissant ainsi un flux de développement rationalisé.
  3. dotenv: Ce module sans dépendance joue un rôle crucial dans le chargement des variables d’environnement du fichier .env dans le site process.env, ce qui facilite la gestion de la configuration.

Pour installer les paquets requis, exécutez les commandes suivantes :

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

Après avoir installé avec succès ces dépendances et les dépendances dev, il est temps d’ajouter un script dev à votre fichier package.json, en utilisant nodemon pour exécuter votre fichier JavaScript. Assurez-vous que votre objet de script package.json inclut les éléments suivants :

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

Enfin, il est important de mentionner que le script dev pointe vers un fichier app.js inexistant. Créez ce fichier dans le répertoire de votre projet, car c’est là que la logique de votre projet sera gérée.

touch app.js

Configuration de vos variables d’environnement (jetons et secrets)

Vous aurez besoin de jetons et de secrets spécifiques pour interagir avec votre application Slack depuis votre projet Node.js. Ces informations d’identification sont sensibles, et pour assurer leur protection lors de l’utilisation du contrôle de version, nous les stockerons dans le fichier .env.

Pour obtenir le secret de signature, allez dans votre tableau de bord Slack, cliquez sur Informations basiques, puis faites défiler vers le bas jusqu’à Informations de l’application, où vous trouverez le secret de signature. Pour le jeton, cliquez sur Installer l’application ou Permissioins Oauth, et vous trouverez le jeton OAuth. En général, le jeton commence par  « xoxb ».

Créez un fichier nommé .env dans le répertoire racine de votre projet, et ajoutez le Signing Secret et le Bot Token dans le format suivant :

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

Pour vous assurer que ces informations sensibles ne sont pas transmises à votre fournisseur Git, créez un fichier .gitignore dans le répertoire racine de votre projet et ajoutez les lignes suivantes pour ignorer le fichier .env et le dossier node_modules:

/node_modules
.env

Cette configuration étant terminée, vous êtes maintenant prêt à procéder à la configuration du serveur.

Configuration du serveur Node.js

La configuration du serveur Node.js est une étape clé dans la construction de votre Slackbot. Vous devez importer les paquets et modules nécessaires, les initialiser et définir le port sur lequel votre projet écoutera. Ouvrez le fichier app.js que vous avez créé précédemment et ajoutez le code suivant :

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}!`);
})();

Dans le code ci-dessus, vous importez la classe App de la bibliothèque @slack/bolt, un composant essentiel pour la création d’applications Slack. En outre, vous utilisez le paquetage dotenv pour traiter les variables d’environnement.

Ensuite, la constante app est créée à l’aide de la classe App, qui représente votre application Slack. Elle nécessite deux paramètres importants : token et signingSecret. Ces valeurs sont extraites du fichier .env.

Ensuite, à l’intérieur de la fonction async, la configuration du serveur a lieu. L’application est lancée en appelant app.start(). Elle écoute le port 3000 localement et envoie un message à la console, confirmant que l’application Kinsta Bot est en cours d’exécution.

Maintenant, lorsque vous exécutez le script dev que vous avez configuré (npm run dev), vous obtenez le message suivant dans votre terminal : « ⚡️ Kinsta Bot app is running on port 3000 ! »

Comprendre le mode socket de l’API Slack

Dans l’intégration de l’API Slack avec les serveurs Node.js, il existe deux méthodes principales de connexion : l’utilisation du point de terminaison HTTP public de votre serveur ou l’utilisation du mode Socket pour activer les WebSockets. Ce tutoriel se concentre sur l’utilisation du mode Socket, car il permet la mise en œuvre de fonctionnalités interactives telles que les commandes Slack slash avec une plus grande facilité. Cette approche permet à Slack de se connecter à votre serveur Node.js en utilisant des WebSockets au lieu du traditionnel HTTP.

Cependant, si vous choisissez d’utiliser le point de terminaison HTTP localement, vous pouvez utiliser ngrok pour créer une URL publique qui renvoie à votre hôte local.

Démarrer avec le mode Socket

Pour commencer à utiliser le mode Socket, suivez les étapes suivantes :

  1. Naviguez vers Informations de base dans la barre latérale gauche de votre tableau de bord Slack. Faites défiler vers le bas jusqu’à App-Level Tokens et cliquez sur le bouton Générer un jeton et des champs d’application.
  2. Donnez un nom à votre token et ajoutez les deux scopes disponibles : connections:write et authorizations:read. Cliquez sur Générer pour créer le jeton.
  3. Copiez le jeton généré et collez-le dans votre fichier .env, en l’affectant à une variable appelée APP_TOKEN. N’oubliez pas que les chaînes de jetons au niveau de l’application commencent par xapp-.

Ensuite, cliquez sur Socket Mode dans la barre latérale et activez l’option Activer les mode socket. Enfin, dans votre fichier app.js, ajoutez socketMode:true et votre appToken au code qui initialise votre application/serveur :

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,
});

Une fois ces étapes terminées, toutes les requêtes adressées à votre serveur de développement se feront via WebSockets plutôt que via HTTP. Cette configuration vous permet de tirer le meilleur parti du mode Socket et d’améliorer les fonctionnalités de votre Slackbot.

Commandes Slack Slash

Les commandes Sash sont une fonctionnalité puissante de Slack qui permet de déclencher des actions spécifiques. Ces déclencheurs peuvent être détectés dans les messages de discussion à travers les canaux de Slack. En outre, les commandes Slash vous permettent de transmettre des données textuelles directement à votre serveur. Par exemple, si vous configurez une commande telle que /operation_status [operation ID], elle transmettra le texte fourni operation ID à votre serveur et déclenchera la commande operation_status correspondante.

Une fois votre serveur correctement configuré pour interagir avec Slack, l’étape suivante consiste à configurer des commandes Slash qui déclencheront des actions sur votre serveur.

Création de commandes Slash sur Slack

Pour créer des commandes Slash sur Slack, cliquez sur l’option de menu Commandes Slash dans la barre latérale gauche, puis sur le bouton Créer une nouvelle commande. Remplissez le formulaire qui en résulte en vous inspirant de l’image ci-dessous.

Créez une nouvelle commande Slack.
Créez une nouvelle commande Slack.

Après avoir rempli le formulaire, cliquez sur le bouton Enregistrer. Slack vous demandera de réinstaller l’application dans votre espace de travail pour que les changements prennent effet. Suivez les instructions pour créer des commandes slash, comme le montre l’image ci-dessous :

Commandes Slash pour interagir avec l'API Kinsta.
Commandes Slash pour interagir avec l’API Kinsta.

Configuration des commandes slash avec Node.js

Une fois que vous avez créé les commandes slash nécessaires, modifiez votre application Node.js pour y répondre.

Commençons par tester la commande /operation_status. Configurez un récepteur pour les évènements qui incluent la commande /operation_status en ajoutant le code suivant à votre fichier app.j s :

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}!`);
})();

Dans le code ci-dessus, l’accent est mis sur la fonction app.command(), qui fonctionne de la même manière que les récepteurs d’évènements en JavaScript. Vous spécifiez la commande que vous souhaitez écouter, puis vous créez une fonction de rappel asynchrone pour définir l’action souhaitée. Cette fonction prend trois paramètres :

  • command: Contient les détails de la commande slash envoyée par l’utilisateur.
  • ack: Accuse réception de la commande slash.
  • say: Renvoie un message au canal Slack.

Avec le code ci-dessus, la commande /operation_status dans Slack génère le message suivant : « Wooah ! It works ! »

Test de la commande slash de Kinsta.
Test de la commande slash de Kinsta.

Maintenant, ajoutons les command listeners pour toutes les commandes slash que vous avez créées :

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.
});

Votre application est maintenant prête à écouter les commandes Slack. Il est temps d’ajouter les actions que chaque commande déclenchera.

Configurer des commandes Slack avec l’API Kinsta

Votre application répondra à chaque commande Slack par un appel à l’API Kinsta, puis renverra le résultat de cette action à Slack. Pour utiliser l’API de Kinsta, vous devez avoir un compte avec au moins un site, une application ou une base de données WordPress dans MyKinsta. Vous devrez également générer une clé API pour vous authentifier et accéder à votre compte via l’API.

Comment créer une clé API Kinsta

Pour générer une clé API :

  1. Allez sur votre tableau de bord MyKinsta.
  2. Naviguez jusqu’à la page des clés API (Votre nom > Réglages de l’entreprise > Clés API).
  3. Cliquez sur Créer une clé API.
  4. Choisissez une date d’expiration ou définissez une date de début personnalisée et un nombre d’heures pour l’expiration de la clé.
  5. Donnez un nom unique à la clé.
  6. Cliquez sur Générer.

Lorsque vous créez une clé API, copiez-la et conservez-la dans un endroit sûr, car c’est la seule fois où vous pourrez la voir. Pour ce projet, enregistrez-la dans votre fichier .env sous KINSTA_API_KEY.

Interagir avec l’API Kinsta dans Node.js

L’interaction avec l’API Kinsta peut être réalisée à l’aide d’un certain nombre de bibliothèques Node.js, y compris Axios. Toutefois, dans ce tutoriel, nous opterons pour la méthode JavaScript fetch(), qui est désormais prise en charge et fonctionne efficacement dans les dernières versions de Node.js.

Pour ce Slackbot, de nombreuses requêtes API seront effectuées, y compris des requêtes GET et POST. Pour éviter les répétitions, stockez l’URL de l’API et les en-têtes dans des variables afin que votre code soit facile à maintenir et à lire :

// 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}`,
};

Avant de commencer à coder la réponse de votre application à chaque commande slash, vous devez copier l’identifiant de votre entreprise Kinsta et le stocker dans le fichier .env à l’adresse KINSTA_COMPANY_ID. Il sera nécessaire pour récupérer votre liste de sites.

Implémentation de la commande slash Environment ID

Lorsque vous utilisez la commande slash /environment_id, toute valeur fournie après la commande sera récupérée et utilisée dans votre serveur Node.js. Pour cette commande, un indice a été ajouté pour indiquer qu’elle attend un paramètre : le [Site name].

Chaque site sur MyKinsta a un nom de site unique, mais il n’y a pas de point d’accès direct pour demander l’ID d’environnement d’un site en utilisant son nom. Par conséquent, vous devez d’abord faire une demande pour tous les sites sur le compte de votre entreprise, puis utiliser la méthode find() pour localiser le site dont le nom correspond à celui passé avec la commande slash.

Pour cela, deux requêtes sont effectuées. D’abord, vous obtenez l’ID du site, puis vous faites une autre demande au point de terminaison /environments pour récupérer l’ID de l’environnement associé à ce site.

Pour préserver la clarté du code et faciliter la maintenance, chaque requête est effectuée de manière indépendante. Cela signifie qu’il faut disposer de fonctions individuelles pour ces demandes et appeler ces fonctions dans l’écouteur de commandes.

Commençons par récupérer la liste de tous vos 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;
}

Le code ci-dessus renvoie un tableau contenant tous les sites. Dans l’écouteur de commande /environment_id, vous récupérerez la réponse et la stockerez dans une variable. Ensuite, à l’aide de la méthode find(), recherchez un site dont le nom correspond à celui transmis par Slack. Les informations provenant de Slack sont stockées dans 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
    }
});

Maintenant que vous avez le site, utilisez son ID pour récupérer l’ID de l’environnement. Comme lorsque nous avons demandé une liste de sites, créez une fonction dédiée pour effectuer une requête HTTP vers le point de terminaison /environments:

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

Le code ci-dessus s’attend à ce que l’ID du site soit transmis en tant qu’argument lors de l’appel de cette fonction dans l’écouteur de commandes /environment_id. Dès réception de l’ID, la requête API est effectuée et la réponse est stockée dans une variable. Vous pouvez ensuite afficher l’ID de l’environnement sur Slack à l’aide de la méthode 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}`);
        }
    }
});

À ce stade, lorsque vous ouvrez Slack et que vous tapez /environment_id suivi d’un nom de site valide, tel que /environment_id fashionstored, vous recevez une réponse qui ressemble à celle-ci :

ID de l'environnement Commande Slash.
ID de l’environnement Commande Slash.

Mise en œuvre des outils de site (effacer le cache du site, redémarrer le moteur PHP) Commande Slash

Deux tâches que vous pouvez facilement mettre en œuvre par le biais de l’API sans avoir à naviguer sur MyKinsta sont les opérations d’outils de site effacer le cache du site etredémarrer le moteur PHP.

Pour effectuer une opération d’outil de site, tout ce dont vous avez besoin est l’ID de l’environnement. Cet identifiant est utilisé pour effectuer une requête POST vers /sites/tools/clear-cache et /sites/tools/restart-php respectivement. Comme vous l’avez fait précédemment, effectuez la requête API de manière indépendante et renvoyez la réponse :

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;
}

Ensuite, vous allez créer des récepteurs de commande pour les deux opérations dans Slack. Ces listeners seront configurés pour se déclencher à chaque fois que la commande correspondante est utilisée :

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}`
        );
    }
});

Dans le code ci-dessus, les données extraites des requêtes API sont utilisées pour construire la réponse renvoyée à Slack. La réponse comprend des informations sur l’opération, telles que le message et l’identifiant de l’opération.

Redémarrez le moteur PHP avec la commande slash.
Redémarrez le moteur PHP avec la commande slash.

En implémentant ces commandes slash et leurs listeners correspondants, vous permettrez à votre Slackbot d’interagir de manière transparente avec l’API Kinsta, rendant plus facile que jamais la gestion du cache de votre site et du moteur PHP directement depuis Slack.

Implémentation d’une commande Slash d’état d’opération

Il serait également intéressant d’obtenir le statut de vos opérations depuis Slack. Pour cela, vous utiliserez le point de terminaison /operations ainsi que le point de terminaison operation_id. Comme précédemment, créez une fonction pour gérer cette requête et renvoyer la réponse :

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

Définissons le command listener pour déclencher la requête et passer le operation ID envoyé via Slack :

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}`);
    }
});

Maintenant, lorsque vous utilisez la commande /operation_status slash avec n’importe quel operation ID valide, vous obtiendrez le statut de l’ID renvoyé par Slack.

Vérifiez le statut de l'opération avec Slackbot.
Vérifiez le statut de l’opération avec Slackbot.

Outre les commandes que vous avez déjà mises en œuvre avec l’API Kinsta, d’autres commandes peuvent être intégrées, ainsi que des événements supplémentaires qui peuvent être gérés par le Slackbot. Par exemple, le Slackbot peut réagir lorsqu’il est mentionné ou étiqueté à l’aide du symbole @.

Pour activer cette fonctionnalité, vous devez vous abonner aux événements nécessaires dans Slack. Au lieu d’utiliser la méthode app.command(), vous utiliserez la méthode app.message(), qui prend les paramètres command et say.

Voici un exemple de ce que vous pouvez faire :

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

Après avoir créé votre Slackbot, vous remarquerez peut-être que vous ne pouvez pas lui envoyer de messages. Lorsque vous naviguez vers le Slackbot sous l’onglet Apps dans Slack, vous pouvez rencontrer un message indiquant : « L’envoi de messages à cette application a été désactivé » Ne vous inquiétez pas, nous pouvons facilement résoudre ce problème !

Pour activer l’envoi de messages, procédez comme suit :

  1. Cliquez sur l’option de menu App Home située dans la colonne latérale de gauche.
  2. Cette page vous permet de gérer tous les réglages de votre robot. Faites défiler la page jusqu’à ce que vous trouviez la case « Permettre aux utilisateurs d’envoyer des commandes et des messages Slash depuis l’onglet Messages »…..
  3. Cochez la case pour activer cette fonctionnalité.

Une fois ces modifications effectuées, il est essentiel de recharger votre application Slack pour refléter les mises à jour. Si vous utilisez un Mac, vous pouvez recharger Slack en appuyant sur CMD + R. Pour les autres utilisateurs de PC, vous pouvez le faire en appuyant sur CTRL + R.

Vous êtes maintenant prêt à envoyer des messages à votre robot ! Dans l’application Slack, vous devriez voir l’application Kinsta Bot listée juste en dessous de la section Vos applications. Cliquez dessus pour commencer à envoyer des messages. N’hésitez pas à tester n’importe laquelle des commandes slash que vous avez configurées, elles devraient fonctionner parfaitement. Appréciez l’interaction transparente avec votre Slackbot !

Le code source complet de ce projet est disponible sur GitHub.

Déployer votre application Node.js sur Kinsta

Lorsque vous construisez votre serveur Node.js, il est important de le déployer afin que votre Slackbot soit toujours disponible, même si vous arrêtez votre développement local. Vous pouvez déployer sur la plateforme d’hébergement d’applications de Kinsta si votre code est hébergé sur les fournisseurs Git Bitbucket, GitHub ou GitLab.

Pour déployer votre référentiel sur Kinsta, suivez les étapes suivantes :

  1. Connectez-vous à votre compte Kinsta sur le tableau de bord MyKinsta.
  2. Cliquez sur Ajouter un service.
  3. Sélectionnez Application dans le menu déroulant.
  4. Dans la fenêtre modale qui s’affiche, choisissez le référentiel que vous souhaitez déployer. Si vous avez plusieurs branches, vous pouvez sélectionner la branche souhaitée et donner un nom à votre application.
  5. Sélectionnez l’un des centres de données disponibles. Kinsta détectera et installera les dépendances de votre application à partir du fichier package.json, puis construira et déploiera.

Enfin, il n’est pas sûr d’envoyer des clés d’API à des hôtes publics comme votre fournisseur Git. Lorsque vous hébergez sur Kinsta, vous pouvez les ajouter en tant que variables d’environnement en utilisant le même nom de variable et la même valeur que ceux spécifiés dans votre fichier .env de développement.

Définissez les variables d'environnement sur DevKinsta lors du déploiement.
Définissez les variables d’environnement sur DevKinsta lors du déploiement.

Une fois que vous avez lancé le déploiement de votre application, le processus commence et se termine généralement en quelques minutes. Si des problèmes avec vos configurations Node.js affectent le déploiement, vous pouvez ajouter un buildpack Node.js dans l’onglet des paramètres de déploiement.

Résumé

Dans cet article, vous avez appris à construire une application Node.js qui connecte Slack avec l’API Kinsta et à déployer cette application sur Kinsta.

Les Slackbots et l’API Kinsta vous permettent de surveiller et de gérer plus facilement vos services hébergés sur Kinsta. En partant des bases de ce tutoriel, imaginez ce que vous pouvez faire avec un Slackbot et l’API. Pensez à des commandes plus complexes qui exécutent des opérations telles que le clonage et la création de sites WordPress directement à partir de Slack.

Comment utilisez-vous l’API de Kinsta ? Quelles sont les fonctionnalités que vous aimeriez voir ajoutées/exposées prochainement ?

Joel Olawanle Kinsta

Joel est un développeur d'interfaces publiques qui travaille chez Kinsta en tant que rédacteur technique. Il est un enseignant passionné par l'open source et a écrit plus de 200 articles techniques, principalement autour de JavaScript et de ses frameworks.