{"id":72498,"date":"2023-08-22T09:21:24","date_gmt":"2023-08-22T08:21:24","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=72498&#038;preview=true&#038;preview_id=72498"},"modified":"2023-08-25T16:12:42","modified_gmt":"2023-08-25T15:12:42","slug":"servizi-kinsta-api-slack","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/","title":{"rendered":"Gestire i servizi di Kinsta con l&#8217;API di Kinsta e Slack"},"content":{"rendered":"<p>Nel corso degli anni, i servizi di Kinsta sono sempre stati gestiti manualmente tramite il cruscotto MyKinsta. Adesso, grazie l&#8217;introduzione dell&#8217;API di Kinsta e il continuo rilascio di nuovi endpoint API, si pu\u00f2 ottimizzare il proprio workflow creando dei metodi personalizzati per accedere ai servizi di Kinsta. Uno di questi metodi \u00e8 lo sviluppo di uno Slackbot per monitorare e gestire attivit\u00e0 come la creazione di un sito.<\/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>Cosa costruiremo<\/h2>\n<p>Questo tutorial spiega come costruire uno Slackbot (o un&#8217;applicazione Slack) che interagisce con l&#8217;<a href=\"https:\/\/kinsta.com\/it\/docs\/kinsta-api\/\">API di Kinsta<\/a> per recuperare informazioni e inviarle sotto forma di messaggi in tempo reale a un canale Slack designato utilizzando gli <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Incoming Webhook dell&#8217;API di Slack<\/a>.<\/p>\n<p>Per raggiungere questo obiettivo, creeremo un&#8217;applicazione <a href=\"https:\/\/kinsta.com\/it\/blog\/come-installare-node-js\/\">Node.js<\/a> con il framework <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-express-js\/\">Express<\/a> per creare un&#8217;interfaccia utente per la creazione di un sito <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a> e integrarla con l&#8217;API Kinsta. L&#8217;applicazione utilizza un modulo per raccogliere i dettagli di configurazione di un sito WordPress e poi invia al canale Slack specificato un aggiornamento in tempo reale sulle informazioni del sito e i dettagli su come verificarne lo stato di funzionamento.<\/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 che mostra l'applicazione che verrebbe costruita e come invia informazioni in tempo reale a Slack.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Gif che mostra l&#8217;applicazione da costruire e come invia informazioni in tempo reale a Slack.<\/figcaption><\/figure>\n<h3>Prerequisiti<\/h3>\n<p>Per seguire questo progetto, \u00e8 necessario avere i seguenti requisiti:<\/p>\n<ul>\n<li>Conoscenze di base di <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> e Node.js<\/li>\n<li>Node.js versione 12 o superiore<\/li>\n<li>npm (<a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-npm\/\">Node Package Manager<\/a>) installato sul computer<\/li>\n<li>Uno spazio di lavoro Slack<\/li>\n<\/ul>\n<h2>Impostazione dell&#8217;ambiente di sviluppo<\/h2>\n<p>Per iniziare, creiamo una nuova directory per l&#8217;applicazione e inizializziamola con npm:<\/p>\n<pre><code class=\"language-bash\">mkdir my-express-app \ncd my-express-app \nnpm init -y<\/code><\/pre>\n<p>Dopo aver eseguito il comando <code>npm init -y<\/code>, verr\u00e0 creato un nuovo file <strong>package.json<\/strong> nella directory del progetto con valori predefiniti. Questo file contiene informazioni importanti sul progetto e sulle sue dipendenze.<\/p>\n<p>Successivamente, installiamo le dipendenze necessarie per il progetto. Le seguenti dipendenze sono essenziali:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/ejs\" target=\"_blank\" rel=\"noopener noreferrer\">ejs<\/a>: EJS (Embedded JavaScript) \u00e8 un motore di template che permette di generare contenuti HTML dinamici con JavaScript.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a>: Express \u00e8 un framework per applicazioni web veloce e minimalista per Node.js. Semplifica la creazione di applicazioni web e API fornendo funzionalit\u00e0 essenziali come il routing, il supporto al middleware e la gestione delle richieste e delle risposte HTTP.<\/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 \u00e8 un&#8217;estensione per Express che consente di utilizzare layout o modelli per mantenere una struttura coerente tra pi\u00f9 viste.<\/li>\n<\/ul>\n<p>Per installare queste dipendenze, eseguiamo il comando seguente:<\/p>\n<pre><code class=\"language-bash\">npm install ejs express express-ejs-layouts<\/code><\/pre>\n<p>Inoltre, dovremo installare le seguenti dipendenze dev per rendere pi\u00f9 semplice la build e il test del progetto Node.js:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a>: Uno strumento prezioso che riavvia automaticamente l&#8217;applicazione Node.js ogni volta che vengono rilevati cambiamenti di file nella directory, assicurando un flusso di lavoro di sviluppo semplificato.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>: questo modulo a dipendenza zero svolge un ruolo fondamentale nel caricamento delle variabili d&#8217;ambiente da un file <strong>.env<\/strong>.<\/li>\n<\/ul>\n<p>Per installare queste dipendenze dev, eseguiamo il comando seguente:<\/p>\n<pre><code class=\"language-bash\">npm install -D nodemon dotenv<\/code><\/pre>\n<p>Una volta che il <strong>package.json<\/strong> \u00e8 stato inizializzato e tutte le dipendenze sono state installate, creiamo un nuovo file, ad esempio <strong>app.js<\/strong>.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<p>Ecco una configurazione predefinita per il file <strong>app.js<\/strong>, in cui importare i moduli necessari e impostare l&#8217;esecuzione su una porta specifica:<\/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>Per eseguire l&#8217;applicazione Node.js, eseguiamo il comando:<\/p>\n<pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<p>Tuttavia, eseguire un&#8217;applicazione come questa significa riavviarla manualmente ogni volta che si apportano delle modifiche al progetto. Per ovviare a questo inconveniente, utilizziamo <code>nodemon<\/code>, che abbiamo gi\u00e0 installato. Configuriamolo nel file <strong>package.json<\/strong> creando un comando script:<\/p>\n<pre><code class=\"language-json\">  \"scripts\": {\n    \"dev\": \"nodemon app.js\"\n  },<\/code><\/pre>\n<p>Ora, eseguiamo l&#8217;applicazione Node.js con riavvio automatico utilizzando il seguente comando:<\/p>\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<h3>Primi passi con Express e EJS Templating<\/h3>\n<p>In questo tutorial stiamo realizzando un&#8217;applicazione Node.js che visualizzer\u00e0 contenuti sul browser. A tal fine, express.js viene utilizzato come framework web e EJS (Embedded JavaScript) come motore di template.<\/p>\n<p>Per impostare EJS come motore di visualizzazione, aggiungiamo la seguente riga al file <strong>app.js<\/strong>. In questo modo sar\u00e0 possibile eseguire i file di <code>.ejs<\/code>:<\/p>\n<pre><code class=\"language-js\">\/\/ Use EJS as the view engine \napp.set('view engine', 'ejs');<\/code><\/pre>\n<p>Ora che Express \u00e8 configurato con EJS, definiamo le route. Nelle applicazioni web, le route determinano il modo in cui l&#8217;applicazione risponde alle diverse richieste HTTP (come GET o POST) e specificano le azioni da intraprendere quando si accede a un URL specifico.<\/p>\n<p>Ad esempio, creiamo una route che carichi una pagina specifica quando un utente naviga verso la pagina <strong>indice<\/strong> (<code>\/<\/code>). Per farlo, utilizziamo il metodo di richiesta GET.<\/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>Nel codice precedente, quando un utente accede all&#8217;<strong>indice<\/strong> dell&#8217;applicazione, il server eseguir\u00e0 la funzione di callback specificata come secondo parametro. All&#8217;interno di questa funzione di callback, possiamo gestire la logica per il rendering di un modello EJS o per l&#8217;invio di un contenuto <a href=\"https:\/\/kinsta.com\/it\/blog\/html\/\">HTML<\/a> da visualizzare nella homepage.<\/p>\n<p>Possiamo utilizzare il metodo <code>res.render()<\/code> per eseguire il rendering di un modello EJS o <code>res.send()<\/code> per inviare un semplice contenuto HTML.<\/p>\n<pre><code class=\"language-js\">app.get('\/', (req, res) =&gt; {\n    res.send('Hello World');\n});<\/code><\/pre>\n<p>Quando eseguiamo l&#8217;applicazione, nella pagina <strong>index<\/strong> verr\u00e0 visualizzato &#8220;Hello World&#8221;.<\/p>\n<h3>Template EJS<\/h3>\n<p>Questo tutorial si concentra sulla logica e include dei file di partenza, cos\u00ec non dovrete preoccuparvi di creare dei template da zero. Seguiamo questi passaggi per iniziare:<\/p>\n<ol start=\"1\">\n<li>Accediamo al <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\" target=\"_blank\" rel=\"noopener noreferrer\">template su GitHub<\/a> per creare un nuovo repository.<\/li>\n<li>Selezioniamo l&#8217;opzione <strong>Include all branches<\/strong> durante la creazione del repository.<\/li>\n<li>Una volta creato il repository, cloniamo il progetto sul computer utilizzando <a href=\"https:\/\/kinsta.com\/it\/argomenti\/git\/\">Git<\/a>.<\/li>\n<li>Per accedere al codice di partenza, passiamo al branch <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a> nel repository locale.<\/li>\n<\/ol>\n<p>Nel codice di partenza abbiamo due cartelle principali: <strong>public<\/strong> e <strong>views<\/strong>. La cartella <strong>public<\/strong> contiene tutte le risorse statiche (file CSS e immagini). Vengono aggiunti al template come file statici:<\/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>Nella cartella <strong>views<\/strong> sono presenti il file <strong>layout.ejs<\/strong> e due cartelle: <strong>pages<\/strong> e <strong>partials<\/strong>. Il file <strong>layout.ejs<\/strong> contiene il layout generale del progetto, quindi non sar\u00e0 necessario ripetere del codice ricorrente per tutte le pagine. Importiamo la libreria <code>express-ejs-layouts<\/code> nel file <strong>app.js<\/strong> e configuriamola:<\/p>\n<pre><code class=\"language-js\">\/\/ Import\nconst expressEjsLayouts = require('express-ejs-layouts');\n\n\/\/ Configure\napp.use(expressEjsLayouts);<\/code><\/pre>\n<p>La cartella <strong>pages<\/strong> contiene i file di percorso (<strong>index.ejs<\/strong> e <strong>operation.ejs<\/strong>), mentre la cartella <strong>partials<\/strong> contiene i componenti (<strong>header.ejs<\/strong> e <strong>footer.ejs<\/strong>). Aggiungiamoli al layout in questo modo:<\/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>Quando <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">eseguiremo l&#8217;applicazione Node.js<\/a>, l&#8217;interfaccia utente verr\u00e0 caricata, ma dovremo aggiungere la logica a questa applicazione per inviare i dati del modulo all&#8217;API di Kinsta e inviare informazioni sul sito a Slack quando l&#8217;operazione inizia.<\/p>\n<h2>Primi passi con gli Incoming Webhook di Slack<\/h2>\n<p>Gli Incoming Webhooks di Slack rappresentano un modo semplice per inviare messaggi da applicazioni esterne a Slack. Per utilizzare gli Incoming Webhook di Slack, creiamo e configuriamo un&#8217;applicazione Slack, quindi copiamo l&#8217;URL del Webhook per inviare messaggi a Slack in modo programmatico.<\/p>\n<h3>Configurare un&#8217;applicazione Slack e ottenere l&#8217;URL del Webhook<\/h3>\n<p>Creiamo una nuova applicazione Slack seguendo i passaggi qui sotto:<\/p>\n<ol start=\"1\">\n<li>Andiamo alla dashboard di <a href=\"https:\/\/api.slack.com\/apps\/\" target=\"_blank\" rel=\"noopener noreferrer\">Slack API<\/a>.<\/li>\n<li>Clicchiamo sul pulsante <strong>Create new app<\/strong>, che aprir\u00e0 una finestra di dialogo.<\/li>\n<li>Selezioniamo l&#8217;opzione <strong>From Scratch<\/strong> per iniziare a costruire l&#8217;applicazione da zero.<\/li>\n<li>Indichiamo un nome per l&#8217;app Slack, ad esempio <strong>Kinsta Bot<\/strong>.<\/li>\n<li>Scegliamo quindi l&#8217;area di lavoro in cui vogliamo installare l&#8217;app e clicchiamo sul pulsante <strong>Create app<\/strong>.<\/li>\n<\/ol>\n<p>Una volta creata l&#8217;applicazione Slack, possiamo attivare gli Incoming Webhook navigando su <strong>Features<\/strong> e selezionando <strong>Incoming Webhook<\/strong>. Attiviamo l&#8217;interruttore per abilitare gli Incoming Webhook per l&#8217;applicazione.<\/p>\n<p>Scorriamo verso il basso fino alla sezione <strong>Webhook URLs for Your Workspace<\/strong> e clicchiamo su <strong>Add New Webhook to Workspace<\/strong>. Ci verr\u00e0 chiesto di scegliere un canale dove inviare i messaggi. Selezioniamo il canale desiderato e facciamo clic su <strong>Authorize<\/strong>.<\/p>\n<p>Dopo l&#8217;autorizzazione, verr\u00e0 fornito un URL Webhook per il canale selezionato. Questo URL \u00e8 quello che useremo per inviare i messaggi a Slack in modo programmatico. Ecco come si presenta un URL Webhook:<\/p>\n<pre><code class=\"language-js\">https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX<\/code><\/pre>\n<p>Questo Webhook \u00e8 specifico per un singolo utente e un singolo canale. Teniamolo al sicuro, perch\u00e9 funge da token di autenticazione per l&#8217;applicazione. Possiamo memorizzare i codici univoci dopo <code>\/services\/<\/code> nel file <strong>.env<\/strong>. Verr\u00e0 inoltre richiesto di reinstallare l&#8217;app nello spazio di lavoro affinch\u00e9 le modifiche abbiano effetto.<\/p>\n<h2>Inviare messaggi a Slack con Node.js e Kinsta API<\/h2>\n<p>Ora che l&#8217;interfaccia dell&#8217;applicazione Node.js \u00e8 stata configurata e lo Slackbot \u00e8 stato creato con successo (insieme all&#8217;URL del WebHook), \u00e8 il momento di gestire la logica.<\/p>\n<h3>Recuperare i dati del modulo in Node.js<\/h3>\n<p>Nella pagina <strong>index<\/strong>, abbiamo un modulo che invier\u00e0 i dati all&#8217;API di Kinsta per creare un nuovo sito WordPress. Per farlo funzionare, dobbiamo creare una richiesta POST dalla pagina indice. Assicuriamoci che il modulo abbia un metodo <code>POST<\/code> e che i campi di input abbiano un attributo <code>name<\/code>, che verr\u00e0 utilizzato nel file <strong>app.js<\/strong>.<\/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>Per recuperare i dati da un modulo in Node.js, dovremo utilizzare il seguente middleware:<\/p>\n<pre><code class=\"language-js\">app.use(express.json());\napp.use(express.urlencoded({ extended: true }));<\/code><\/pre>\n<p>Ora possiamo accedere ai valori del modulo utilizzando <code>req.body.[form field name]<\/code>. Ad esempio, <code>req.body.displayName<\/code> ci fornir\u00e0 il nome visualizzato inviato tramite il modulo. Registriamo i dati complessivi del modulo:<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    console.log(req.body);\n});<\/code><\/pre>\n<p>Quando eseguiamo il codice, i dati del modulo vengono visualizzati dopo che l&#8217;utente avr\u00e0 compilato il modulo e cliccato sul pulsante <strong>Submit<\/strong>.<\/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=\"Dettagli del modulo recuperati dal parametro req in Node.js\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Dettagli del modulo recuperati dal parametro req in Node.js.<\/figcaption><\/figure>\n<h3>Creare un sito con l&#8217;API di Kinsta in Node.js<\/h3>\n<p>Per creare un sito WordPress con l&#8217;API di Kinsta in Node.js, possiamo utilizzare il metodo <code>fetch()<\/code>, che ora \u00e8 supportato e funziona in modo efficiente nelle <a href=\"https:\/\/kinsta.com\/it\/blog\/node-js-20\/#performance\">ultime versioni di Node.js<\/a>.<\/p>\n<p>Per eseguire qualsiasi operazione con l&#8217;API di Kinsta, dobbiamo creare una <a href=\"https:\/\/kinsta.com\/it\/blog\/chiave-api-kinsta\/\">chiave API<\/a>. Per generare una chiave API:<\/p>\n<ol start=\"1\">\n<li>Andiamo alla dashboard MyKinsta.<\/li>\n<li>Andiamo alla pagina delle <strong>chiavi API<\/strong> (<strong>Nome<\/strong> &gt; <strong>Impostazioni dell&#8217;azienda<\/strong> &gt; <strong>Chiavi API<\/strong>).<\/li>\n<li>Clicchiamo su <strong>Crea chiave API<\/strong>.<\/li>\n<li>Scegliamo una data di scadenza o impostiamo una data di inizio personalizzata e un numero di ore di scadenza della chiave.<\/li>\n<li>Assegniamo alla chiave un nome univoco.<\/li>\n<li>Clicchiamo su <strong>Genera<\/strong>.<\/li>\n<\/ol>\n<p>Assicuriamoci di copiare la chiave API generata e di conservarla in modo sicuro, perch\u00e9 sar\u00e0 visibile solo in questo momento. Per questo progetto, creiamo un file <strong>.env<\/strong> nella directory principale e salviamo la chiave API come <code>KINSTA_API_KEY<\/code>.<\/p>\n<p>Inoltre, per creare un sito WordPress utilizzando l&#8217;API di Kinsta, avremo bisogno dell&#8217;ID Azienda (che si trova in MyKinsta alla voce <strong>Azienda<\/strong> &gt; <strong>Dettagli di fatturazione<\/strong> &gt; <strong>ID Azienda<\/strong>). Memorizziamo anche questo ID nel file <strong>.env<\/strong>, in modo da poter accedere a queste variabili d&#8217;ambiente tramite <code>process.env<\/code>. Per abilitare questa funzionalit\u00e0, assicuriamoci di configurare la dipendenza <code>dotenv<\/code> all&#8217;inizio del file <strong>app.js<\/strong> in questo modo:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config();<\/code><\/pre>\n<p>Per procedere alla creazione di un sito WordPress tramite l&#8217;API di Kinsta, inviamo una richiesta POST all&#8217;endpoint <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/addWordPressSite\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites<\/a><\/code> con i dati necessari forniti nell&#8217;oggetto <code>req.body<\/code>:<\/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>Eseguendo il codice qui sopra, creeremo un nuovo sito WordPress con l&#8217;API di Kinsta. Ma questo non \u00e8 il nostro obiettivo principale. Il nostro obiettivo \u00e8, invece, inviare un messaggio a Slack contenente informazioni sul sito quando l&#8217;operazione di creazione del sito \u00e8 andata a buon fine.<\/p>\n<h3>Inviare un messaggio a Slack con l&#8217;URL dell&#8217;Incoming Webhook<\/h3>\n<p>Per farlo, creiamo un&#8217;istruzione <strong>If<\/strong> per verificare lo stato della risposta della richiesta API. Se \u00e8 <code>202<\/code>, significa che &#8220;la creazione del sito \u00e8 iniziata&#8221; e possiamo inviare un messaggio a Slack utilizzando l&#8217;URL Incoming Webhook. A tal fine, possiamo utilizzare la libreria di richieste HTTP che preferiamo (ad esempio <a href=\"https:\/\/kinsta.com\/it\/blog\/richieste-http-javascript\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>) o il metodo che preferiamo per inviare una richiesta POST a Slack. Utilizziamo il metodo <code>fetch()<\/code>:<\/p>\n<pre><code class=\"language-js\">if (data.status === 202) {\n    fetch(\n        `https:\/\/hooks.slack.com\/services\/${process.env.SLACK_WEBHOOK_ID}`,\n        {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json',\n            },\n            body: JSON.stringify({\n                text: 'Hello, world.',\n            }),\n        }\n    );\n}<\/code><\/pre>\n<p>Eseguiamo il codice qui sopra e compiliamo il modulo di creazione del sito. Se il processo va a buon fine, verr\u00e0 inviato immediatamente un messaggio a Slack.<\/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 inviato da Node.js a Slack con Incoming Webhook\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Hello World inviato da Node.js a Slack con Incoming Webhook.<\/figcaption><\/figure>\n<h3>Personalizzare i messaggi Slack<\/h3>\n<p>L&#8217;esempio precedente invia un messaggio di testo di base, ma gli Incoming Webhook di Slack supportano molto di pi\u00f9 del semplice testo. Possiamo personalizzare i messaggi per includere allegati, link, immagini, pulsanti e altro ancora.<\/p>\n<p>Uno dei modi per personalizzare i messaggi di Slack \u00e8 utilizzare il <a href=\"https:\/\/app.slack.com\/block-kit-builder\" target=\"_blank\" rel=\"noopener noreferrer\">Block Kit Builder di Slack<\/a>. Il Block Kit \u00e8 un framework UI fornito da Slack che permette di costruire messaggi ricchi e interattivi con vari elementi di contenuto.<\/p>\n<p>Per questo tutorial, ecco un blocco creato con il Block Kit Builder per formattare correttamente il messaggio e aggiungere alcuni valori dal modulo e dalla risposta alla creazione del sito:<\/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 questo codice, creiamo un oggetto messaggio contenente un array di blocchi. Ogni blocco rappresenta una sezione specifica del messaggio Slack e pu\u00f2 avere diversi tipi di contenuto.<\/p>\n<ol start=\"1\">\n<li><strong>Blocco sezione<\/strong>: Questo tipo di blocco viene utilizzato per visualizzare una sezione di testo. Si utilizza l&#8217;indirizzo <code>type: 'section'<\/code> per indicare che si tratta di un blocco di sezione. All&#8217;interno del blocco di sezione, la propriet\u00e0 text viene utilizzata con <code>type: 'mrkdwn'<\/code> per specificare che il contenuto del testo deve essere interpretato in formato Markdown. Il contenuto effettivo del testo viene fornito nella propriet\u00e0 text e si utilizzano i template literals per includere i valori dinamici del modulo e della risposta alla creazione del sito, come <code>req.body.displayName<\/code> e <code>data.operation_id<\/code>.<\/li>\n<li><strong>Blocco divisorio<\/strong>: Questo tipo di blocco viene utilizzato per aggiungere una linea orizzontale per separare le sezioni del messaggio. Utilizziamo <code>type: 'divider'<\/code> per creare il blocco divisorio.<\/li>\n<\/ol>\n<p>Quando questo messaggio viene inviato a Slack utilizzando l&#8217;Incoming Webhook, generer\u00e0 un messaggio informativo e visivamente accattivante nel nostro canale Slack. Il messaggio includer\u00e0 i valori dinamici del modulo (come il nome del sito) e le informazioni della risposta alla creazione del sito, rendendolo un messaggio altamente personalizzato.<\/p>\n<p>Per inviare questo messaggio personalizzato, sostituiamo l&#8217;oggetto nel corpo del sito <code>fetch()<\/code> con il contenuto della variabile messaggio:<\/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=\"Messaggio Slack personalizzato con Slack block Kit Builder\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Messaggio Slack personalizzato con Slack block Kit Builder.<\/figcaption><\/figure>\n<h2>Gestire l&#8217;operazione di creazione del sito con l&#8217;API di Kinsta<\/h2>\n<p>Nel messaggio inviato a Slack, viene creato un link con l&#8217;ID dell&#8217;operazione e il nome visualizzato. Possiamo creare un nuovo percorso per la pagina <strong>Operations<\/strong> e utilizzare questi dati per verificare lo stato dell&#8217;operazione.<\/p>\n<p>In Express, possiamo accedere ai parametri URL con il parametro <code>req<\/code>. Ad esempio, per ottenere l&#8217;ID dell&#8217;operazione, usiamo <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>Con il codice qui sopra, cliccando sul link in Slack verr\u00e0 effettuata una richiesta all&#8217;API di Kinsta per verificare lo stato di funzionamento del sito. Aggiorniamo il file <strong>operation.ejs<\/strong> per aggiungere i dati dinamici:<\/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=\"Pagina delle operazioni che mostra l'ID dell'operazione e i dettagli del sito\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Pagina delle operazioni che mostra l&#8217;ID dell&#8217;operazione e i dettagli del sito.<\/figcaption><\/figure>\n<p>Un&#8217;ultima cosa: possiamo utilizzare il metodo di reindirizzamento per navigare alla pagina delle operazioni quando inizia il processo di creazione di un sito:<\/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>Il codice sorgente completo di questo progetto \u00e8 disponibile nel <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/main\" target=\"_blank\" rel=\"noopener noreferrer\">branch principale di questo repository GitHub<\/a>.<\/p>\n<h2>Distribuire un&#8217;applicazione Node.js su Kinsta<\/h2>\n<p>\u00c8 possibile distribuire facilmente questa applicazione Node.js sulla piattaforma di <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting di Applicazioni<\/a> di Kinsta. Basta inviare il codice al proprio provider Git preferito (<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> o <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) e poi seguire i passaggi qui sotto:<\/p>\n<ol start=\"1\">\n<li>Accedere al proprio account Kinsta nella dashboard <a href=\"https:\/\/my.kinsta.com\/?lang=it\">MyKinsta<\/a>.<\/li>\n<li>Cliccare su <strong>Aggiungi servizio<\/strong>.<\/li>\n<li>Selezionare <strong>Applicazione<\/strong> dal menu a tendina.<\/li>\n<li>Nella finestra di dialogo che appare, scegliere il repository che si vuole distribuire. Se si hanno pi\u00f9 branch, \u00e8 possibile selezionare il branch desiderato e dare un nome all&#8217;applicazione.<\/li>\n<li>Selezionare uno dei data center disponibili. Kinsta rilever\u00e0 e installer\u00e0 le dipendenze dell&#8217;applicazione dal file package.json, quindi eseguir\u00e0 la build e la distribuzione.<\/li>\n<\/ol>\n<p>Infine, non \u00e8 sicuro inviare le chiavi API a host pubblici come un provider Git. Durante l&#8217;hosting, \u00e8 possibile aggiungerle come <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">variabili d&#8217;ambiente<\/a> utilizzando lo stesso nome e valore della variabile specificata nel file <strong>.env<\/strong>.<\/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=\"Impostare le variabili d'ambiente su DevKinsta durante la distribuzione\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Impostare le variabili d&#8217;ambiente su DevKinsta durante la distribuzione.<\/figcaption><\/figure>\n<p>Una volta avviata la distribuzione dell&#8217;applicazione, questa verr\u00e0 in genere creata e distribuita in pochi minuti. Verr\u00e0 fornito un link alla nuova applicazione, che avr\u00e0 il seguente aspetto: <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>Se ci sono problemi con le configurazioni di Node.js che influiscono sulla distribuzione, si pu\u00f2 aggiungere un buildpack Node.js nella scheda delle impostazioni di distribuzione.<\/p>\n<\/aside>\n\n<h2>Riepilogo<\/h2>\n<p>In questo tutorial abbiamo imparato come inviare messaggi a Slack da un&#8217;applicazione Node.js utilizzando gli Incoming Webhooks e come personalizzare i messaggi di Slack con il Block Kit Builder.<\/p>\n<p>Le possibilit\u00e0 offerte da Slack e dall&#8217;API Kinsta sono molto ampie e questo tutorial \u00e8 solo l&#8217;inizio. Integrando questi strumenti, \u00e8 possibile creare un workflow continuo che mantiene il team ben informato e aumenta la produttivit\u00e0.<\/p>\n<p><em>Come utilizzate l&#8217;API di Kinsta? Quali funzioni vorreste vedere aggiunte\/esposte prossimamente?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nel corso degli anni, i servizi di Kinsta sono sempre stati gestiti manualmente tramite il cruscotto MyKinsta. Adesso, grazie l&#8217;introduzione dell&#8217;API di Kinsta e il continuo &#8230;<\/p>\n","protected":false},"author":287,"featured_media":72499,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26232,26203,26206],"class_list":["post-72498","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-node-js","topic-servizi-kinsta"],"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>Gestire i servizi di Kinsta con l&#039;API di Kinsta e Slack - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Scopri come gestire i servizi di Kinsta utilizzando l&#039;API di Kinsta e l&#039;integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!\" \/>\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\/it\/blog\/servizi-kinsta-api-slack\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gestire i servizi di Kinsta con l&#039;API di Kinsta e Slack\" \/>\n<meta property=\"og:description\" content=\"Scopri come gestire i servizi di Kinsta utilizzando l&#039;API di Kinsta e l&#039;integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-22T08:21:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-25T15:12:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.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=\"Scopri come gestire i servizi di Kinsta utilizzando l&#039;API di Kinsta e l&#039;integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Gestire i servizi di Kinsta con l&#8217;API di Kinsta e Slack\",\"datePublished\":\"2023-08-22T08:21:24+00:00\",\"dateModified\":\"2023-08-25T15:12:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\"},\"wordCount\":2696,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\",\"name\":\"Gestire i servizi di Kinsta con l'API di Kinsta e Slack - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg\",\"datePublished\":\"2023-08-22T08:21:24+00:00\",\"dateModified\":\"2023-08-25T15:12:42+00:00\",\"description\":\"Scopri come gestire i servizi di Kinsta utilizzando l'API di Kinsta e l'integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gestire i servizi di Kinsta con l&#8217;API di Kinsta e Slack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gestire i servizi di Kinsta con l'API di Kinsta e Slack - Kinsta\u00ae","description":"Scopri come gestire i servizi di Kinsta utilizzando l'API di Kinsta e l'integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!","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\/it\/blog\/servizi-kinsta-api-slack\/","og_locale":"it_IT","og_type":"article","og_title":"Gestire i servizi di Kinsta con l'API di Kinsta e Slack","og_description":"Scopri come gestire i servizi di Kinsta utilizzando l'API di Kinsta e l'integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!","og_url":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-08-22T08:21:24+00:00","article_modified_time":"2023-08-25T15:12:42+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Scopri come gestire i servizi di Kinsta utilizzando l'API di Kinsta e l'integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Joel Olawanle","Tempo di lettura stimato":"18 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Gestire i servizi di Kinsta con l&#8217;API di Kinsta e Slack","datePublished":"2023-08-22T08:21:24+00:00","dateModified":"2023-08-25T15:12:42+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/"},"wordCount":2696,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/","url":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/","name":"Gestire i servizi di Kinsta con l'API di Kinsta e Slack - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","datePublished":"2023-08-22T08:21:24+00:00","dateModified":"2023-08-25T15:12:42+00:00","description":"Scopri come gestire i servizi di Kinsta utilizzando l'API di Kinsta e l'integrazione con Slack. \u00c8 il momento di aumentare la tua efficienza!","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending-2.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/servizi-kinsta-api-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/it\/argomenti\/api\/"},{"@type":"ListItem","position":3,"name":"Gestire i servizi di Kinsta con l&#8217;API di Kinsta e Slack"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=72498"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72498\/revisions"}],"predecessor-version":[{"id":72575,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/72498\/revisions\/72575"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/72498\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/72499"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=72498"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=72498"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=72498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}