{"id":69276,"date":"2023-08-22T10:24:02","date_gmt":"2023-08-22T08:24:02","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=69276&#038;preview=true&#038;preview_id=69276"},"modified":"2023-08-23T08:52:48","modified_gmt":"2023-08-23T06:52:48","slug":"servicios-kinsta-api-slack","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/","title":{"rendered":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack"},"content":{"rendered":"<p>A lo largo de los a\u00f1os, nuestros servicios en Kinsta siempre se han gestionado manualmente a trav\u00e9s del panel de control MyKinsta. Sin embargo, con la introducci\u00f3n de la API de Kinsta y el lanzamiento continuo de nuevos endpoints de la API, puedes mejorar tu juego desarrollando un m\u00e9todo personalizado para interactuar con los servicios de Kinsta. Uno de estos medios es desarrollar un Slackbot para supervisar y gestionar actividades como la creaci\u00f3n de sitios.<\/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>Qu\u00e9 Est\u00e1s Construyendo<\/h2>\n<p>Este tutorial explica c\u00f3mo construir un Slackbot (o aplicaci\u00f3n Slack) que interact\u00faa con la <a href=\"https:\/\/kinsta.com\/es\/docs\/api-kinsta\/\">API de Kinsta<\/a> para recuperar informaci\u00f3n y entregarla como mensajes en tiempo real a un canal Slack determinado utilizando los <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\">Webhooks Entrantes de la API de Slack<\/a>.<\/p>\n<p>Para conseguirlo, crear\u00e1s una aplicaci\u00f3n <a href=\"https:\/\/kinsta.com\/es\/blog\/como-instalar-node-js\/\">Node.js<\/a> con el framework <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-express\/\">Express<\/a> para crear una interfaz de usuario para la creaci\u00f3n de sitios <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a> e integrarla con la API de Kinsta. La aplicaci\u00f3n utiliza un formulario para recoger los detalles de configuraci\u00f3n de tu sitio WordPress y luego env\u00eda una actualizaci\u00f3n en tiempo real sobre la informaci\u00f3n del sitio y detalles sobre c\u00f3mo comprobar su estado de funcionamiento al canal Slack especificado.<\/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 que muestra la aplicaci\u00f3n que se construir\u00eda y c\u00f3mo env\u00eda informaci\u00f3n en tiempo real a Slack.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Gif que muestra la aplicaci\u00f3n que se construir\u00eda y c\u00f3mo env\u00eda informaci\u00f3n en tiempo real a Slack.<\/figcaption><\/figure>\n<h3>Requisitos Previos<\/h3>\n<p>Para seguir adelante con este proyecto, debes tener lo siguiente:<\/p>\n<ul>\n<li>Conocimientos b\u00e1sicos de <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> y Node.js<\/li>\n<li>Node.js versi\u00f3n 12 o superior<\/li>\n<li>npm. (<a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-npm\/\">Node Package Manager, <\/a><a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-npm\/\">Gestor de Paquetes de Node<\/a>) instalado en tu ordenador<\/li>\n<li>Un espacio de trabajo Slack<\/li>\n<\/ul>\n<h2>Configurar el Entorno de Desarrollo<\/h2>\n<p>Para empezar, crea un nuevo directorio para tu aplicaci\u00f3n e in\u00edcialo con npm:<\/p>\n<pre><code class=\"language-bash\">mkdir my-express-app \ncd my-express-app \nnpm init -y<\/code><\/pre>\n<p>Tras ejecutar el comando <code>npm init -y<\/code>, se crear\u00e1 un nuevo archivo <strong>package.json<\/strong> en el directorio de tu proyecto con los valores predeterminados. Este archivo contiene informaci\u00f3n importante sobre tu proyecto y sus dependencias.<\/p>\n<p>A continuaci\u00f3n, instala las dependencias necesarias para tu proyecto. Las siguientes dependencias son esenciales:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/ejs\" target=\"_blank\" rel=\"noopener noreferrer\">ejs<\/a>: EJS (Embedded JavaScript) es un motor de plantillas que te permite generar contenido HTML din\u00e1mico con JavaScript.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a>: Express es un framework de aplicaciones web r\u00e1pido y minimalista para Node.js. Simplifica la creaci\u00f3n de aplicaciones web y API proporcionando funciones esenciales como el enrutamiento, el soporte de middleware y la gesti\u00f3n de solicitudes y respuestas 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 es una extensi\u00f3n para Express que permite utilizar layouts o plantillas para mantener una estructura coherente en m\u00faltiples vistas.<\/li>\n<\/ul>\n<p>Para instalar estas dependencias, ejecuta el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm install ejs express express-ejs-layouts<\/code><\/pre>\n<p>Adem\u00e1s, necesitar\u00e1s instalar las siguientes dependencias de desarrollo para facilitar la construcci\u00f3n y prueba de tu proyecto Node.js:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a>: Una valiosa herramienta que reinicia autom\u00e1ticamente tu aplicaci\u00f3n Node.js cada vez que se detectan cambios de archivo en el directorio, garantizando un flujo de trabajo de desarrollo optimizado.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>: Este m\u00f3dulo de dependencia cero desempe\u00f1a un papel crucial en la carga de variables de entorno desde un archivo <strong>.env<\/strong>.<\/li>\n<\/ul>\n<p>Para instalar estas dependencias de desarrollo, ejecuta el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm install -D nodemon dotenv<\/code><\/pre>\n<p>Una vez inicializado tu <strong>package.json<\/strong> e instaladas todas las dependencias, crea un nuevo archivo, por ejemplo <strong>app.js<\/strong>.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<p>Aqu\u00ed tienes una configuraci\u00f3n por defecto para tu archivo <strong>app.js<\/strong>, donde importas los m\u00f3dulos necesarios y lo configuras para que se ejecute en un puerto espec\u00edfico:<\/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>Para ejecutar tu aplicaci\u00f3n Node.js, ejecuta el comando<\/p>\n<pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<p>Sin embargo, ejecutar una aplicaci\u00f3n como \u00e9sta implica reiniciarla manualmente cada vez que hagas cambios en tu proyecto. Para superar este inconveniente, utiliza <code>nodemon<\/code>, que ya tienes instalado. Config\u00faralo en tu archivo <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>Ahora, ejecuta tu aplicaci\u00f3n Node.js con reinicios autom\u00e1ticos utilizando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<h3>Primeros Pasos con Express y EJS Templating<\/h3>\n<p>En este tutorial, est\u00e1s construyendo una aplicaci\u00f3n Node.js que mostrar\u00e1 contenido en el navegador. Para conseguirlo, se utiliza express.js como tu framework web, y EJS (Embedded JavaScript) como tu motor de plantillas.<\/p>\n<p>Para establecer EJS como tu motor de visualizaci\u00f3n, a\u00f1ade la siguiente l\u00ednea a tu archivo <strong>app.js<\/strong>. Esto permitir\u00e1 ejecutar archivos <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>Ahora que Express est\u00e1 configurado con EJS, define tus rutas. En las aplicaciones web, las rutas determinan c\u00f3mo responde la aplicaci\u00f3n a las distintas peticiones HTTP (como GET o POST) y especifican las acciones que deben realizarse cuando se accede a una URL concreta.<\/p>\n<p>Por ejemplo, crea una ruta que cargue una p\u00e1gina espec\u00edfica cuando un usuario navegue a la p\u00e1gina <strong>index<\/strong>\u00a0(<code>\/<\/code>). Para ello, utiliza el m\u00e9todo de petici\u00f3n 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>En el c\u00f3digo anterior, cuando un usuario acceda al <strong>index<\/strong>\u00a0de tu aplicaci\u00f3n, el servidor ejecutar\u00e1 la funci\u00f3n callback especificada como segundo par\u00e1metro. Dentro de esta funci\u00f3n de llamada de retorno, puedes manejar la l\u00f3gica para renderizar una plantilla EJS o enviar alg\u00fan contenido <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-el-html\/\">HTML<\/a> para que se muestre en la p\u00e1gina de inicio.<\/p>\n<p>Puedes utilizar el m\u00e9todo <code>res.render()<\/code> para renderizar una plantilla EJS o utilizar <code>res.send()<\/code> para enviar contenido HTML simple.<\/p>\n<pre><code class=\"language-js\">app.get('\/', (req, res) =&gt; {\n    res.send('Hello World');\n});<\/code><\/pre>\n<p>Cuando ejecutes tu aplicaci\u00f3n, se mostrar\u00e1 \u00abHello Word\u00bb en la p\u00e1gina <strong>index<\/strong>.<\/p>\n<h3>Plantillas EJS<\/h3>\n<p>Este tutorial se centra en la l\u00f3gica e incluye archivos de inicio, para que no tengas que preocuparte de crear plantillas desde cero. Sigue estos pasos para empezar:<\/p>\n<ol start=\"1\">\n<li>Accede a la <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\">plantilla en GitHub<\/a> para crear un nuevo repositorio.<\/li>\n<li>Marca la opci\u00f3n <strong>Incluir todas las ramas<\/strong> durante la creaci\u00f3n del repositorio.<\/li>\n<li>Una vez creado el repositorio, clona el proyecto en tu ordenador utilizando <a href=\"https:\/\/kinsta.com\/es\/secciones\/git\/\">Git<\/a>.<\/li>\n<li>Para acceder al c\u00f3digo de inicio, cambia a la rama <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a> en tu repositorio local.<\/li>\n<\/ol>\n<p>En el c\u00f3digo de inicio, tenemos dos carpetas principales: <strong>public<\/strong> y <strong>views<\/strong>. La carpeta <strong>public<\/strong> contiene todos los activos est\u00e1ticos (archivos CSS e im\u00e1genes). Se a\u00f1aden a la plantilla como archivos est\u00e1ticos:<\/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>En la carpeta <strong>views<\/strong>, tienes el archivo <strong>layout.ejs<\/strong> y dos carpetas: <strong>pages<\/strong> y <strong>partials<\/strong>. El archivo <strong>layout.ejs<\/strong> contiene el dise\u00f1o general de este proyecto, para que no tengas que repetir c\u00f3digo recurrente para todas las p\u00e1ginas. Importa la biblioteca <code>express-ejs-layouts<\/code> en el archivo <strong>app.js<\/strong> y, a continuaci\u00f3n, config\u00farala:<\/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 carpeta <strong>pages<\/strong> contiene los archivos de ruta (<strong>index.ejs<\/strong> y <strong>operation.ejs<\/strong>), mientras que la carpeta <strong>partials<\/strong> contiene los componentes (<strong>header.ejs<\/strong> y <strong>footer.ejs<\/strong>). A\u00f1\u00e1delos al dise\u00f1o de la siguiente forma<\/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>Cuando <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">ejecutes tu aplicaci\u00f3n Node.js<\/a>, la interfaz de usuario se cargar\u00e1, pero tienes que a\u00f1adir l\u00f3gica a esta aplicaci\u00f3n para enviar los datos del formulario a la API de Kinsta y enviar informaci\u00f3n sobre el sitio a Slack cuando se inicie la operaci\u00f3n.<\/p>\n<h2>Primeros Pasos con los Webhooks Entrantes de Slack<\/h2>\n<p>Los Webhooks Entrantes de Slack proporcionan una forma sencilla de enviar mensajes desde aplicaciones externas a Slack. Para utilizar los Webhooks Entrantes de Slack, crea y configura una aplicaci\u00f3n Slack, y luego copia la URL de tu Webhook para enviar mensajes a Slack mediante programaci\u00f3n.<\/p>\n<h3>Configurar una Aplicaci\u00f3n Slack y Obtener la URL del Webhook<\/h3>\n<p>Crea una nueva aplicaci\u00f3n Slack siguiendo estos pasos:<\/p>\n<ol start=\"1\">\n<li>Navega hasta el panel de control de la <a href=\"https:\/\/api.slack.com\/apps\/\">API de Slack<\/a>.<\/li>\n<li>Haz clic en el bot\u00f3n <strong>Crear Nueva App<\/strong>, que abrir\u00e1 un modal.<\/li>\n<li>Selecciona la opci\u00f3n <strong>Desde Cero<\/strong> para empezar a crear tu aplicaci\u00f3n desde cero.<\/li>\n<li>Dale un nombre a tu aplicaci\u00f3n Slack, por ejemplo, <strong>Kinsta Bot<\/strong>.<\/li>\n<li>A continuaci\u00f3n, elige el espacio de trabajo donde quieres instalar la aplicaci\u00f3n y haz clic en el bot\u00f3n <strong>Crear Aplicaci\u00f3n.<\/strong><\/li>\n<\/ol>\n<p>Una vez creada tu aplicaci\u00f3n Slack, puedes habilitar los Webhooks Entrantes navegando hasta <strong>Features<\/strong> y seleccionando <strong>Incoming Webhooks<\/strong>. Activa el interruptor para habilitar los Webhooks Entrantes para tu aplicaci\u00f3n.<\/p>\n<p>Despl\u00e1zate hacia abajo hasta la secci\u00f3n <strong>Webhook URLs for Your Workspace (URL de Webhooks para tu Espacio de Trabajo)<\/strong> y haz clic en <strong>Add New Webhook to Wordspace (A\u00f1adir Nuevo Webhook al Espacio de Trabajo)<\/strong>. Se te pedir\u00e1 que elijas un canal al que se enviar\u00e1n los mensajes. Selecciona el canal deseado y haz clic en <strong>Permitir<\/strong>.<\/p>\n<p>Tras la autorizaci\u00f3n, se te proporcionar\u00e1 una URL de Webhook para el canal seleccionado. Esta URL es la que utilizar\u00e1s para enviar mensajes a Slack mediante programaci\u00f3n. Este es el aspecto de una URL Webhook:<\/p>\n<pre><code class=\"language-js\">https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX<\/code><\/pre>\n<p>Este Webhook es espec\u00edfico para un \u00fanico usuario y un \u00fanico canal. Mantenlo seguro, ya que act\u00faa como token de autenticaci\u00f3n para tu aplicaci\u00f3n. Puedes almacenar los c\u00f3digos \u00fanicos despu\u00e9s de <code>\/services\/<\/code> en tu archivo <strong>.env<\/strong>. Tambi\u00e9n se te pedir\u00e1 que reinstales la app en tu espacio de trabajo para que los cambios surtan efecto.<\/p>\n<h2>Enviar Mensajes a Slack con Node.js y la API Kinsta<\/h2>\n<p>Ahora que la interfaz de tu aplicaci\u00f3n Node.js est\u00e1 configurada y el Slackbot se ha creado correctamente (junto con tu URL WebHook), es hora de manejar la l\u00f3gica.<\/p>\n<h3>Obtener Datos del Formulario en Node.js<\/h3>\n<p>En la p\u00e1gina <strong>index<\/strong>, tienes un formulario que enviar\u00e1 datos a la API de Kinsta para crear un nuevo sitio de WordPress. Para que esto funcione, necesitas crear una petici\u00f3n POST desde la p\u00e1gina index. Aseg\u00farate de que tu formulario tiene un m\u00e9todo <code>POST<\/code>, y los campos de entrada tienen un atributo <code>name<\/code>, que se utilizar\u00e1 en el archivo <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>Para recuperar datos de un formulario en Node.js, necesitar\u00e1s utilizar el siguiente middleware:<\/p>\n<pre><code class=\"language-js\">app.use(express.json());\napp.use(express.urlencoded({ extended: true }));<\/code><\/pre>\n<p>Ahora, puedes acceder a los valores de tu formulario utilizando <code>req.body.[form field name]<\/code>. Por ejemplo, <code>req.body.displayName<\/code> te dar\u00e1 el nombre para mostrar enviado a trav\u00e9s del formulario. Vamos a registrar los datos generales del formulario:<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    console.log(req.body);\n});<\/code><\/pre>\n<p>Cuando ejecutes tu c\u00f3digo, se mostrar\u00e1n los datos del formulario despu\u00e9s de rellenarlo y pulsar el bot\u00f3n <strong>Enviar<\/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=\"Detalles del formulario recuperados del par\u00e1metro req en Node.js\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Detalles del formulario recuperados del par\u00e1metro req en Node.js.<\/figcaption><\/figure>\n<h3>Creaci\u00f3n de un Sitio con la API de Kinsta en Node.js<\/h3>\n<p>Para crear un sitio WordPress con la API Kinsta en Node.js, puedes utilizar el m\u00e9todo <code>fetch()<\/code>, que ahora es compatible y funciona eficazmente en las <a href=\"https:\/\/kinsta.com\/es\/blog\/node-js-20\/#performance\">\u00faltimas versiones de Node.js<\/a>.<\/p>\n<p>Para realizar cualquier operaci\u00f3n con la API de Kinsta, necesitas crear una <a href=\"https:\/\/kinsta.com\/es\/blog\/kinsta-api-key\/\">clave API<\/a>. Para generar una clave API:<\/p>\n<ol start=\"1\">\n<li>Ve a tu panel de control MyKinsta.<\/li>\n<li>Ve a la p\u00e1gina <strong>Claves API<\/strong> (<strong>Tu nombre<\/strong> &gt; <strong>Configuraci\u00f3n de la empresa<\/strong> &gt; <strong>Claves API<\/strong>).<\/li>\n<li>Haz clic en <strong>Crear Clave API<\/strong>.<\/li>\n<li>Elige una fecha de caducidad o establece una fecha de inicio personalizada y un n\u00famero de horas para que caduque la clave.<\/li>\n<li>Dale a la clave un nombre \u00fanico.<\/li>\n<li>Haz clic en <strong>Generar<\/strong>.<\/li>\n<\/ol>\n<p>Aseg\u00farate de copiar la clave API generada y almacenarla de forma segura, ya que s\u00f3lo ser\u00e1 visible en este momento. Para este proyecto, crea un archivo <strong>.env<\/strong> en tu directorio root y guarda la clave API como <code>KINSTA_API_KEY<\/code>.<\/p>\n<p>Adem\u00e1s, para crear un sitio WordPress utilizando la API de Kinsta, necesitar\u00e1s tu ID de empresa (que puedes encontrar en MyKinsta en <strong>Empresa<\/strong> &gt; <strong>Detalles de facturaci\u00f3n<\/strong> &gt; <strong>ID de empresa<\/strong>). Almacena tambi\u00e9n este ID en el archivo <strong>.env<\/strong>, para poder acceder a estas variables de entorno a trav\u00e9s de <code>process.env<\/code>. Para habilitar esta funcionalidad, aseg\u00farate de configurar la dependencia <code>dotenv<\/code> en la parte superior de tu archivo <strong>app.js<\/strong> de la siguiente manera:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config();<\/code><\/pre>\n<p>Para proceder a la creaci\u00f3n de un sitio WordPress a trav\u00e9s de la API de Kinsta, env\u00eda una solicitud POST al endpoint <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/addWordPressSite\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites<\/a><\/code> con los datos necesarios proporcionados en el objeto <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>Al ejecutar el c\u00f3digo anterior, crear\u00e1s un nuevo sitio WordPress con la API de Kinsta. Pero \u00e9ste no es el objetivo principal. El objetivo es enviar un mensaje a Slack con informaci\u00f3n sobre el sitio cuando la operaci\u00f3n de creaci\u00f3n del sitio se realice correctamente.<\/p>\n<h3>Enviar un Mensaje a Slack con la URL del Webhook Entrante<\/h3>\n<p>Para ello, crea una sentencia <strong>If<\/strong> para comprobar el estado de la respuesta a la solicitud de la API. Si es <code>202<\/code>, significa que \u00abla creaci\u00f3n del sitio ha comenzado\u00bb y puedes enviar un mensaje a Slack utilizando la URL entrante de Webhooks. Para ello, puedes utilizar tu biblioteca de peticiones HTTP preferida (por ejemplo, <a href=\"https:\/\/kinsta.com\/es\/blog\/javascript-peticion-http\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>) o un m\u00e9todo para enviar una petici\u00f3n POST a Slack. Utilicemos el m\u00e9todo <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>Ejecuta el c\u00f3digo anterior y rellena el formulario de creaci\u00f3n del sitio. Si el proceso tiene \u00e9xito, se enviar\u00e1 inmediatamente un mensaje 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 enviado desde Node.js a Slack con Incoming Webhooks\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Hello World enviado desde Node.js a Slack con Incoming Webhooks<\/figcaption><\/figure>\n<h3>Personalizar los Mensajes de Slack<\/h3>\n<p>El ejemplo anterior env\u00eda un mensaje de texto b\u00e1sico, pero los Webhooks Entrantes de Slack admiten mucho m\u00e1s que un simple texto. Puedes personalizar tus mensajes para incluir adjuntos, enlaces, im\u00e1genes, botones y mucho m\u00e1s.<\/p>\n<p>Una forma de personalizar los mensajes de Slack es utilizar el <a href=\"https:\/\/app.slack.com\/block-kit-builder\">Constructor de Kit de Bloques de Slack<\/a>. El Kit de bloques es un framework de interfaz de usuario proporcionado por Slack que te permite construir mensajes ricos e interactivos con diversos elementos de contenido.<\/p>\n<p>Para este tutorial, aqu\u00ed tienes un bloque creado con el constructor de kit de bloques para dar el formato adecuado al mensaje y a\u00f1adir algunos valores del formulario y de la respuesta de creaci\u00f3n del sitio:<\/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>En este c\u00f3digo, creas un objeto mensaje que contiene un array de bloques. Cada bloque representa una secci\u00f3n espec\u00edfica del mensaje Slack y puede tener diferentes tipos de contenido.<\/p>\n<ol start=\"1\">\n<li><strong>Bloque de Secci\u00f3n<\/strong>: Este tipo de bloque se utiliza para mostrar una secci\u00f3n de texto. Utiliza el <code>type: 'section'<\/code> para indicar que es un bloque de secci\u00f3n. Dentro del bloque de secci\u00f3n, la propiedad text se utiliza con <code>type: 'mrkdwn'<\/code> para especificar que el contenido del texto debe interpretarse como formato Markdown. El contenido de texto real se proporciona en la propiedad text, y utilizamos literales de plantilla para incluir valores din\u00e1micos del formulario y de la respuesta de creaci\u00f3n del sitio, como <code>req.body.displayName<\/code> y <code>data.operation_id<\/code>.<\/li>\n<li><strong>Bloque Divisor<\/strong>: Este tipo de bloque se utiliza para a\u00f1adir una l\u00ednea horizontal para separar secciones del mensaje. Utilizamos <code>type: 'divider'<\/code> para crear el bloque divisor.<\/li>\n<\/ol>\n<p>Cuando este mensaje se env\u00ede a Slack mediante el Webhook Entrante, generar\u00e1 un mensaje visualmente atractivo e informativo en tu canal de Slack. El mensaje incluir\u00e1 valores din\u00e1micos del formulario (como el nombre del sitio) e informaci\u00f3n de la respuesta de creaci\u00f3n del sitio, convirti\u00e9ndolo en un mensaje altamente personalizado.<\/p>\n<p>Para enviar este mensaje personalizado, sustituye el objeto del cuerpo del <code>fetch()<\/code> por el contenido de la variable del mensaje:<\/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=\"Mensaje Slack personalizado con Constructor de Kits de bloques de Slack.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Mensaje Slack personalizado con Constructor de Kits de bloques de Slack.<\/figcaption><\/figure>\n<h2>Manejar la Operaci\u00f3n de Creaci\u00f3n del Sitio con la API de Kinsta<\/h2>\n<p>En el mensaje enviado a Slack, se crea un enlace que tiene el ID de la operaci\u00f3n y el nombre para mostrar. Puedes crear una nueva ruta para que la p\u00e1gina <strong>Operaciones<\/strong> utilice estos datos para comprobar el estado de la operaci\u00f3n.<\/p>\n<p>En Express, puedes acceder a los par\u00e1metros de la URL con el par\u00e1metro <code>req<\/code>. Por ejemplo, para obtener el ID de la operaci\u00f3n, utiliza <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 el c\u00f3digo anterior, al hacer clic en el enlace de Slack se realizar\u00e1 una solicitud a la API de Kinsta para comprobar el estado de la operaci\u00f3n de tu sitio. Actualiza el archivo <strong>operation.ejs<\/strong> para a\u00f1adir datos din\u00e1micos:<\/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=\"P\u00e1gina de operaciones que muestra el ID de la operaci\u00f3n y los detalles del sitio.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">P\u00e1gina de operaciones que muestra el ID de la operaci\u00f3n y los detalles del sitio.<\/figcaption><\/figure>\n<p>Una \u00faltima cosa, puedes utilizar el m\u00e9todo de redirecci\u00f3n para navegar a la p\u00e1gina de operaciones cuando se inicie el proceso de creaci\u00f3n de un sitio:<\/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>El c\u00f3digo fuente completo de este proyecto est\u00e1 disponible en <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/main\" target=\"_blank\" rel=\"noopener noreferrer\">la rama principal de este repositorio de GitHub<\/a>.<\/p>\n<h2>Desplegar Tu Aplicaci\u00f3n Node.js en Kinsta<\/h2>\n<p>Puedes desplegar f\u00e1cilmente esta aplicaci\u00f3n Node.js en la plataforma de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones<\/a> de Kinsta. Todo lo que tienes que hacer es enviar tu c\u00f3digo a tu proveedor Git preferido (<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>). A continuaci\u00f3n, sigue estos pasos:<\/p>\n<ol start=\"1\">\n<li>Accede a tu cuenta Kinsta en el panel <a href=\"https:\/\/my.kinsta.com\/?lang=es\">MyKinsta<\/a>.<\/li>\n<li>Haz clic en <strong>A\u00f1adir servicio<\/strong>.<\/li>\n<li>Selecciona <strong>Aplicaci\u00f3n<\/strong> en el men\u00fa desplegable.<\/li>\n<li>En el modal que aparece, elige el repositorio que quieres desplegar. Si tienes varias ramas, puedes seleccionar la rama deseada y dar un nombre a tu aplicaci\u00f3n.<\/li>\n<li>Selecciona una de las ubicaciones de centros de datos disponibles. Kinsta detectar\u00e1 e instalar\u00e1 las dependencias de tu aplicaci\u00f3n desde package.json y, a continuaci\u00f3n, la construir\u00e1 y desplegar\u00e1.<\/li>\n<\/ol>\n<p>Por \u00faltimo, no es seguro enviar claves API a alojamientos p\u00fablicos como tu proveedor de Git. Cuando alojes, puedes a\u00f1adirlas como <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">variables de entorno<\/a> utilizando el mismo nombre de variable y valor especificados en el archivo <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=\"Establece variables de entorno en DevKinsta al desplegar.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Establece variables de entorno en DevKinsta al desplegar.<\/figcaption><\/figure>\n<p>Una vez que inicies el despliegue de tu aplicaci\u00f3n, normalmente se crear\u00e1 y desplegar\u00e1 en unos minutos. Se proporcionar\u00e1 un enlace a tu nueva aplicaci\u00f3n, con el siguiente aspecto: <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>Si hay alg\u00fan problema con tus configuraciones de Node.js que afecte al despliegue, puedes a\u00f1adir un buildpack de Node.js en la pesta\u00f1a de configuraci\u00f3n del despliegue.<\/p>\n<\/aside>\n\n<h2>Resumen<\/h2>\n<p>En este tutorial, has aprendido c\u00f3mo enviar mensajes a Slack desde una aplicaci\u00f3n Node.js utilizando Webhooks Entrantes y c\u00f3mo personalizar los mensajes de Slack con el Kit de Construcci\u00f3n de Bloques.<\/p>\n<p>Las posibilidades con Slack y la API Kinsta son enormes, y este tutorial es s\u00f3lo el principio. Integrando estas herramientas, puedes crear un flujo de trabajo fluido que mantenga a tu equipo bien informado y aumente la productividad.<\/p>\n<p><em>\u00bfC\u00f3mo utilizas la API Kinsta? \u00bfQu\u00e9 funciones te gustar\u00eda que se a\u00f1adieran\/expusieran pr\u00f3ximamente?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A lo largo de los a\u00f1os, nuestros servicios en Kinsta siempre se han gestionado manualmente a trav\u00e9s del panel de control MyKinsta. Sin embargo, con la &#8230;<\/p>\n","protected":false},"author":287,"featured_media":69277,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1270,1311,1302],"class_list":["post-69276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-node-js","topic-servicios-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>Gestionar los Servicios de Kinsta con la API de Kinsta y Slack - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!\" \/>\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\/es\/blog\/servicios-kinsta-api-slack\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack\" \/>\n<meta property=\"og:description\" content=\"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-22T08:24:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T06:52:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack\",\"datePublished\":\"2023-08-22T08:24:02+00:00\",\"dateModified\":\"2023-08-23T06:52:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\"},\"wordCount\":3068,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\",\"name\":\"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"datePublished\":\"2023-08-22T08:24:02+00:00\",\"dateModified\":\"2023-08-23T06:52:48+00:00\",\"description\":\"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack - Kinsta\u00ae","description":"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!","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\/es\/blog\/servicios-kinsta-api-slack\/","og_locale":"es_ES","og_type":"article","og_title":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack","og_description":"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!","og_url":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-08-22T08:24:02+00:00","article_modified_time":"2023-08-23T06:52:48+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Joel Olawanle","Tiempo de lectura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack","datePublished":"2023-08-22T08:24:02+00:00","dateModified":"2023-08-23T06:52:48+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/"},"wordCount":3068,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/","url":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/","name":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","datePublished":"2023-08-22T08:24:02+00:00","dateModified":"2023-08-23T06:52:48+00:00","description":"Aprende a gestionar sin esfuerzo los servicios de Kinsta utilizando la API de Kinsta y la integraci\u00f3n con Slack. \u00a1Aumenta la eficiencia hoy mismo!","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/servicios-kinsta-api-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/es\/secciones\/api\/"},{"@type":"ListItem","position":3,"name":"Gestionar los Servicios de Kinsta con la API de Kinsta y Slack"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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\/es\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=69276"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69276\/revisions"}],"predecessor-version":[{"id":69326,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69276\/revisions\/69326"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69276\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/69277"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=69276"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=69276"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=69276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}