{"id":62430,"date":"2023-08-22T05:19:36","date_gmt":"2023-08-22T08:19:36","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=62430&#038;preview=true&#038;preview_id=62430"},"modified":"2023-08-29T09:35:58","modified_gmt":"2023-08-29T12:35:58","slug":"servicos-api-kinsta-e-slack","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/","title":{"rendered":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack"},"content":{"rendered":"<p>Ao longo dos anos, nossos servi\u00e7os na Kinsta sempre foram gerenciados manualmente atrav\u00e9s do painel MyKinsta. No entanto, com a introdu\u00e7\u00e3o da API da Kinsta e o lan\u00e7amento cont\u00ednuo de novos endpoints de API, voc\u00ea pode aprimorar sua estrat\u00e9gia desenvolvendo um m\u00e9todo personalizado para interagir com os servi\u00e7os da Kinsta. Um desses meios \u00e9 desenvolver um Slackbot para monitorar e gerenciar atividades como a cria\u00e7\u00e3o de sites.<\/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>O que voc\u00ea est\u00e1 construindo<\/h2>\n<p>Este tutorial explica como voc\u00ea pode criar um Slackbot (ou aplicativo Slack) que interage com a <a href=\"https:\/\/kinsta.com\/pt\/docs\/kinsta-api\/\">API da Kinsta<\/a> para recuperar informa\u00e7\u00f5es e entreg\u00e1-las como mensagens em tempo real para um canal designado do Slack usando os <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Webhooks de entrada da API do Slack<\/a>.<\/p>\n<p>Para conseguir isso, voc\u00ea criar\u00e1 um aplicativo <a href=\"https:\/\/kinsta.com\/pt\/blog\/como-instalar-o-node-js\/\">Node.js<\/a> com a framework <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-express-js\/\">Express<\/a> para criar uma interface de usu\u00e1rio para a cria\u00e7\u00e3o de sites <a href=\"https:\/\/kinsta.com\/wordpress\/\">WordPress<\/a> e integr\u00e1-la \u00e0 API da Kinsta. O aplicativo usa um formul\u00e1rio para coletar detalhes de configura\u00e7\u00e3o para o seu site WordPress e, em seguida, envia uma atualiza\u00e7\u00e3o em tempo real sobre as informa\u00e7\u00f5es do site e detalhes sobre como verificar seu status de opera\u00e7\u00e3o para o 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 mostrando o aplicativo que seria criado e como ele envia informa\u00e7\u00f5es em tempo real para o Slack.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Gif mostrando o aplicativo que seria criado e como ele envia informa\u00e7\u00f5es em tempo real para o Slack.<\/figcaption><\/figure>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>Para acompanhar este projeto, voc\u00ea deve ter o seguinte:<\/p>\n<ul>\n<li>Conhecimento b\u00e1sico de <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> e Node.js<\/li>\n<li>Node.js vers\u00e3o 12 ou superior<\/li>\n<li>O npm (<a href=\"https:\/\/kinsta.com\/pt\/blog\/npm-gerenciador-pacotes-node\/\">Gerenciador de pacotes do Node<\/a>) instalado em seu computador<\/li>\n<li>Um espa\u00e7o de trabalho do Slack<\/li>\n<\/ul>\n<h2>Configura\u00e7\u00e3o do ambiente de desenvolvimento<\/h2>\n<p>Para come\u00e7ar, crie um novo diret\u00f3rio para o seu aplicativo e inicialize com o npm:<\/p>\n<pre><code class=\"language-bash\">mkdir my-express-app \ncd my-express-app \nnpm init -y<\/code><\/pre>\n<p>Ap\u00f3s executar o comando <code>npm init -y<\/code>, um novo arquivo <strong>package.json<\/strong> ser\u00e1 criado no diret\u00f3rio do seu projeto com valores padr\u00e3o. Esse arquivo cont\u00e9m informa\u00e7\u00f5es importantes sobre seu projeto e suas depend\u00eancias.<\/p>\n<p>Em seguida, instale as depend\u00eancias necess\u00e1rias para seu projeto. As seguintes depend\u00eancias s\u00e3o essenciais:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/ejs\" target=\"_blank\" rel=\"noopener noreferrer\">ejs<\/a>: o EJS (Embedded JavaScript) \u00e9 um mecanismo de modelos que permite a voc\u00ea gerar conte\u00fado HTML din\u00e2mico com JavaScript.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a>: O Express \u00e9 uma estrutura de aplicativos da web r\u00e1pida e minimalista para o Node.js. Ele simplifica a cria\u00e7\u00e3o de aplicativos da Web e APIs fornecendo recursos essenciais como roteamento, suporte a middleware e manipula\u00e7\u00e3o de solicita\u00e7\u00f5es e respostas HTTP.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/express-ejs-layouts\" target=\"_blank\" rel=\"noopener noreferrer\">express-ejs-layouts<\/a>: Os layouts do Express EJS s\u00e3o uma extens\u00e3o do Express que permite o uso de layouts ou modelos para manter uma estrutura consistente em v\u00e1rias exibi\u00e7\u00f5es.<\/li>\n<\/ul>\n<p>Para instalar essas depend\u00eancias, execute o comando abaixo:<\/p>\n<pre><code class=\"language-bash\">npm install ejs express express-ejs-layouts<\/code><\/pre>\n<p>Al\u00e9m disso, voc\u00ea precisar\u00e1 instalar as seguintes depend\u00eancias de desenvolvimento para facilitar a cria\u00e7\u00e3o e o teste do seu projeto Node.js:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/nodemon\" target=\"_blank\" rel=\"noopener noreferrer\">nodemon<\/a>: Uma ferramenta valiosa que reinicia automaticamente seu aplicativo Node.js sempre que s\u00e3o detectadas altera\u00e7\u00f5es de arquivo no diret\u00f3rio, garantindo um fluxo de trabalho de desenvolvimento simplificado.<\/li>\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a>: esse m\u00f3dulo de depend\u00eancia zero desempenha uma fun\u00e7\u00e3o crucial no carregamento de vari\u00e1veis de ambiente de um arquivo <strong>.env<\/strong>.<\/li>\n<\/ul>\n<p>Para instalar essas depend\u00eancias de desenvolvimento, execute o comando abaixo:<\/p>\n<pre><code class=\"language-bash\">npm install -D nodemon dotenv<\/code><\/pre>\n<p>Depois que o <strong>package.json<\/strong> for inicializado e todas as depend\u00eancias estiverem instaladas, crie um novo arquivo, por exemplo, <strong>app.js<\/strong>.<\/p>\n<pre><code class=\"language-bash\">touch app.js<\/code><\/pre>\n<p>Aqui est\u00e1 uma configura\u00e7\u00e3o padr\u00e3o para o seu arquivo <strong>app.js<\/strong>, em que voc\u00ea importa os m\u00f3dulos necess\u00e1rios e o define para ser executado em uma porta espec\u00edfica:<\/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 executar seu aplicativo Node.js, execute o comando:<\/p>\n<pre><code class=\"language-bash\">node app.js<\/code><\/pre>\n<p>No entanto, executar um aplicativo como esse significa reinici\u00e1-lo manualmente toda vez que voc\u00ea fizer altera\u00e7\u00f5es no projeto. Para superar esse inconveniente, use <code>nodemon<\/code>, que voc\u00ea j\u00e1 instalou. Configure em seu arquivo <strong>package.json<\/strong> criando um comando de script:<\/p>\n<pre><code class=\"language-json\">  \"scripts\": {\n    \"dev\": \"nodemon app.js\"\n  },<\/code><\/pre>\n<p>Agora, execute seu aplicativo Node.js com reinicializa\u00e7\u00f5es autom\u00e1ticas usando o seguinte comando:<\/p>\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<h3>Come\u00e7ando com o Express e o Templating EJS<\/h3>\n<p>Neste tutorial, voc\u00ea est\u00e1 construindo um aplicativo Node.js que exibir\u00e1 conte\u00fado no navegador. Para conseguir isso, express.js \u00e9 utilizado como seu framework web e EJS (Embedded JavaScript) como seu mecanismo de template.<\/p>\n<p>Para definir o EJS como mecanismo de exibi\u00e7\u00e3o, adicione a seguinte linha ao arquivo <strong>app.js<\/strong>. Isso permitir\u00e1 que voc\u00ea execute os arquivos <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>Agora que o Express est\u00e1 configurado com o EJS, defina suas rotas. Em aplicativos web, as rotas determinam como o aplicativo responde a diferentes solicita\u00e7\u00f5es HTTP (como GET ou POST) e especificam as a\u00e7\u00f5es a serem executadas quando uma URL espec\u00edfica \u00e9 acessada.<\/p>\n<p>Por exemplo, crie uma rota que carregue uma p\u00e1gina espec\u00edfica quando um usu\u00e1rio navegar at\u00e9 a p\u00e1gina de<strong> \u00edndice<\/strong> (<code>\/<\/code>). Para fazer isso, use o m\u00e9todo de solicita\u00e7\u00e3o 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>No c\u00f3digo acima, quando um usu\u00e1rio acessar o <strong>\u00edndice<\/strong> do seu aplicativo, o servidor executar\u00e1 a fun\u00e7\u00e3o de callback especificada como o segundo par\u00e2metro. Dentro dessa fun\u00e7\u00e3o de callback, voc\u00ea pode manipular a l\u00f3gica para renderizar um Templating EJS ou enviar algum conte\u00fado <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-html\/\">HTML<\/a> para ser exibido na p\u00e1gina inicial.<\/p>\n<p>Voc\u00ea pode usar o m\u00e9todo <code>res.render()<\/code> para renderizar um Templating EJS ou usar <code>res.send()<\/code> para enviar conte\u00fado HTML simples.<\/p>\n<pre><code class=\"language-js\">app.get('\/', (req, res) =&gt; {\n    res.send('Hello World');\n});<\/code><\/pre>\n<p>Quando voc\u00ea executar o aplicativo, a mensagem &#8220;Hello World&#8221; ser\u00e1 exibida na p\u00e1gina de <strong>\u00edndice<\/strong>.<\/p>\n<h3>Templating EJS<\/h3>\n<p>Este tutorial se concentra na l\u00f3gica e inclui arquivos iniciais, de modo que voc\u00ea n\u00e3o precisa se preocupar em criar templates do zero. Siga estas etapas para que voc\u00ea possa come\u00e7ar:<\/p>\n<ol start=\"1\">\n<li>Acesse o <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\" target=\"_blank\" rel=\"noopener noreferrer\">template no GitHub<\/a> para criar um novo reposit\u00f3rio.<\/li>\n<li>Marque a op\u00e7\u00e3o <strong>Include all branches<\/strong>\u00a0durante a cria\u00e7\u00e3o do reposit\u00f3rio.<\/li>\n<li>Depois que o reposit\u00f3rio for criado, clone o projeto em seu computador usando o <a href=\"https:\/\/kinsta.com\/pt\/topicos\/git\/\">Git<\/a>.<\/li>\n<li>Para acessar o c\u00f3digo inicial, mude para a branch <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a> em seu reposit\u00f3rio local.<\/li>\n<\/ol>\n<p>No c\u00f3digo inicial, temos duas pastas principais: <strong>public<\/strong> e <strong>views<\/strong>. A pasta <strong>public<\/strong> cont\u00e9m todos os ativos est\u00e1ticos (arquivos CSS e imagens). Eles s\u00e3o adicionados ao template como arquivos 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>Na pasta <strong>views<\/strong>, voc\u00ea tem o arquivo <strong>layout.ejs<\/strong> e duas pastas: <strong>pages<\/strong> e <strong>partials<\/strong>. O arquivo layout. <strong>ejs<\/strong> cont\u00e9m o layout geral deste projeto, de modo que voc\u00ea n\u00e3o precisa repetir alguns c\u00f3digos recorrentes para todas as p\u00e1ginas. Voc\u00ea deve importar a biblioteca <code>express-ejs-layouts<\/code> para o arquivo <strong>app.js<\/strong> e configur\u00e1-la:<\/p>\n<pre><code class=\"language-js\">\/\/ Import\nconst expressEjsLayouts = require('express-ejs-layouts');\n\n\/\/ Configure\napp.use(expressEjsLayouts);<\/code><\/pre>\n<p>A pasta <strong>pages<\/strong> cont\u00e9m os arquivos de rota (<strong>index.ejs<\/strong> e <strong>operation.ejs<\/strong>), enquanto a pasta <strong>partials<\/strong> cont\u00e9m componentes (<strong>header.ejs<\/strong> e <strong>footer.ejs<\/strong>). Adicione ao layout desta 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>Quando voc\u00ea <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">executar seu aplicativo Node.js<\/a>, a interface do usu\u00e1rio ser\u00e1 carregada, mas voc\u00ea precisar\u00e1 adicionar l\u00f3gica a esse aplicativo para enviar os dados do formul\u00e1rio para a API da Kinsta e enviar informa\u00e7\u00f5es sobre o site para o Slack quando a opera\u00e7\u00e3o for iniciada.<\/p>\n<h2>Come\u00e7ando com o Slack Incoming Webhooks<\/h2>\n<p>Os Incoming Webhooks do Slack fornecem uma maneira simples de enviar mensagens de aplicativos externos para o Slack. Para usar os Incoming Webhooks do Slack, crie e configure um aplicativo Slack, depois copie a URL do Webhook para enviar mensagens ao Slack programaticamente.<\/p>\n<h3>Como configurar um aplicativo do Slack e obter a URL do webhook<\/h3>\n<p>Crie um novo aplicativo do Slack seguindo estas etapas:<\/p>\n<ol start=\"1\">\n<li>Navegue at\u00e9 o painel de controle <a href=\"https:\/\/api.slack.com\/apps\/\" target=\"_blank\" rel=\"noopener noreferrer\">da API do Slack<\/a>.<\/li>\n<li>Clique no bot\u00e3o <strong>Criar novo aplicativo<\/strong>, que abrir\u00e1 um modal.<\/li>\n<li>Selecione a op\u00e7\u00e3o <strong>From Scratch<\/strong> para come\u00e7ar a criar seu aplicativo do zero.<\/li>\n<li>Forne\u00e7a um nome para o seu aplicativo Slack, por exemplo, <strong>Kinsta Bot<\/strong>.<\/li>\n<li>Em seguida, escolha o espa\u00e7o de trabalho onde voc\u00ea deseja instalar o aplicativo e clique no bot\u00e3o <strong>Create App<\/strong>.<\/li>\n<\/ol>\n<p>Depois que o aplicativo Slack for criado, voc\u00ea poder\u00e1 ativar os Webhooks de entrada navegando at\u00e9 <strong>Features<\/strong> e selecionando <strong>Incoming Webhooks<\/strong>. Alterne a chave para ativar os Webhooks de entrada para seu aplicativo.<\/p>\n<p>Role para baixo at\u00e9 a se\u00e7\u00e3o <strong>Webhook URLs for Your Workspaceg<\/strong> e clique em <strong>Add New Webhook to Workspace<\/strong>. Voc\u00ea ser\u00e1 solicitado a escolher um canal para o qual as mensagens ser\u00e3o enviadas. Selecione o canal desejado e clique em <strong>Authorize<\/strong>.<\/p>\n<p>Ap\u00f3s a autoriza\u00e7\u00e3o, ser\u00e1 fornecida uma URL de Webhook para o canal selecionado. Essa URL \u00e9 o que voc\u00ea usar\u00e1 para enviar mensagens ao Slack programaticamente. \u00c9 assim que uma URL de Webhook se parece:<\/p>\n<pre><code class=\"language-js\">https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX<\/code><\/pre>\n<p>Esse Webhook \u00e9 espec\u00edfico para um \u00fanico usu\u00e1rio e um \u00fanico canal. Mantenha seguro, pois ele funciona como um token de autentica\u00e7\u00e3o para o seu aplicativo. Voc\u00ea pode armazenar os c\u00f3digos exclusivos ap\u00f3s <code>\/services\/<\/code> em seu arquivo <strong>.env<\/strong>. Voc\u00ea tamb\u00e9m ser\u00e1 solicitado a reinstalar o aplicativo no seu espa\u00e7o de trabalho para que as altera\u00e7\u00f5es tenham efeito.<\/p>\n<h2>Como enviar mensagens para o Slack com o Node.js e a API da Kinsta<\/h2>\n<p>Agora que a interface do seu aplicativo Node.js est\u00e1 configurada e o Slackbot foi criado com sucesso (juntamente com a URL do WebHook), \u00e9 hora de lidar com a l\u00f3gica.<\/p>\n<h3>Obtendo dados de formul\u00e1rio no Node.js<\/h3>\n<p>Na p\u00e1gina de<strong> \u00edndice<\/strong>, voc\u00ea tem um formul\u00e1rio que enviar\u00e1 dados para a API da Kinsta para criar um novo site WordPress. Para que isso funcione, voc\u00ea precisa criar uma solicita\u00e7\u00e3o POST a partir da p\u00e1gina de \u00edndice. Certifique-se de que seu formul\u00e1rio tenha um m\u00e9todo <code>POST<\/code> e que os campos de entrada tenham um atributo <code>name<\/code>, que ser\u00e1 usado no arquivo <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 dados de um formul\u00e1rio no Node.js, voc\u00ea precisar\u00e1 usar o seguinte middleware:<\/p>\n<pre><code class=\"language-js\">app.use(express.json());\napp.use(express.urlencoded({ extended: true }));<\/code><\/pre>\n<p>Agora, voc\u00ea pode acessar os valores do formul\u00e1rio usando <code>req.body.[form field name]<\/code>. Por exemplo, <code>req.body.displayName<\/code> fornecer\u00e1 a voc\u00ea o nome de exibi\u00e7\u00e3o enviado por meio do formul\u00e1rio. Vamos registrar os dados gerais do formul\u00e1rio:<\/p>\n<pre><code class=\"language-js\">app.post('\/', (req, res) =&gt; {\n    console.log(req.body);\n});<\/code><\/pre>\n<p>Quando voc\u00ea executar o seu c\u00f3digo, os dados do formul\u00e1rio ser\u00e3o exibidos depois que voc\u00ea preencher o formul\u00e1rio e clicar no bot\u00e3o <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=\"Detalhes do formul\u00e1rio recuperados do par\u00e2metro req no Node.js.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Detalhes do formul\u00e1rio recuperados do par\u00e2metro req no Node.js.<\/figcaption><\/figure>\n<h3>Criando um site com a API da Kinsta no Node.js<\/h3>\n<p>Para criar um site WordPress com a API da Kinsta no Node.js, voc\u00ea pode usar o m\u00e9todo <code>fetch()<\/code>, que agora \u00e9 suportado e tem um desempenho eficiente nas <a href=\"https:\/\/kinsta.com\/pt\/blog\/node-js-20\/#performance\">vers\u00f5es mais recentes do Node.js<\/a>.<\/p>\n<p>Para realizar qualquer opera\u00e7\u00e3o com a API da Kinsta, voc\u00ea precisa criar uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/chave-api-kinsta\/\">chave de API<\/a>. Para gerar uma chave de API:<\/p>\n<ol start=\"1\">\n<li>V\u00e1 para o seu painel MyKinsta.<\/li>\n<li>Navegue at\u00e9 a p\u00e1gina <strong>Chaves API <\/strong>(<strong>Seu nome<\/strong> &gt; <strong>Configura\u00e7\u00f5es da empresa<\/strong> &gt; <strong>Chaves API<\/strong>).<\/li>\n<li>Clique em <strong>Criar chave<\/strong> <strong>API<\/strong>.<\/li>\n<li>Escolha uma data de expira\u00e7\u00e3o ou defina uma data de in\u00edcio personalizada e o n\u00famero de horas para a chave expirar.<\/li>\n<li>D\u00ea \u00e0 chave um nome exclusivo.<\/li>\n<li>Clique em <strong>Gerar<\/strong>.<\/li>\n<\/ol>\n<p>Certifique-se de copiar a chave API gerada e armazen\u00e1-la com seguran\u00e7a, pois ela s\u00f3 estar\u00e1 vis\u00edvel neste momento. Para este projeto, crie um arquivo <strong>.env<\/strong> em seu diret\u00f3rio raiz e salve a chave API como <code>KINSTA_API_KEY<\/code>.<\/p>\n<p>Al\u00e9m disso, para criar um site WordPress usando a API da Kinsta, voc\u00ea precisar\u00e1 do ID da empresa (que pode ser encontrado no MyKinsta em <strong>Empresa<\/strong> &gt; <strong>Detalhes da fatura <\/strong>&gt; <strong>Identifica\u00e7\u00e3o da empresa<\/strong>. Armazene esse ID no arquivo <strong>.env<\/strong> tamb\u00e9m, para que voc\u00ea possa acessar essas vari\u00e1veis de ambiente por meio de <code>process.env<\/code>. Para habilitar essa funcionalidade, certifique-se de que voc\u00ea configure a depend\u00eancia <code>dotenv<\/code> na parte superior do seu arquivo <strong>app.js<\/strong> da seguinte forma:<\/p>\n<pre><code class=\"language-js\">require('dotenv').config();<\/code><\/pre>\n<p>Para prosseguir com a cria\u00e7\u00e3o de um site WordPress por meio da API da Kinsta, envie uma solicita\u00e7\u00e3o POST para o endpoint <code><a href=\"https:\/\/api-docs.kinsta.com\/tag\/WordPress-Sites#operation\/addWordPressSite\" target=\"_blank\" rel=\"noopener noreferrer\">\/sites<\/a><\/code> com os dados necess\u00e1rios fornecidos no 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>Ao executar o c\u00f3digo acima, voc\u00ea criar\u00e1 um novo site WordPress com a API da Kinsta. Mas esse n\u00e3o \u00e9 o objetivo principal. O objetivo \u00e9 enviar uma mensagem para o Slack contendo informa\u00e7\u00f5es sobre o site quando a opera\u00e7\u00e3o de cria\u00e7\u00e3o do site for bem-sucedida.<\/p>\n<h3>Enviando uma mensagem para o Slack com a URL do Incoming Webhook<\/h3>\n<p>Para fazer isso, crie uma instru\u00e7\u00e3o <strong>If<\/strong> para verificar o status da resposta da solicita\u00e7\u00e3o de API. Se for <code>202<\/code>, isso significa que &#8220;a cria\u00e7\u00e3o do site foi iniciada&#8221; e voc\u00ea pode enviar uma mensagem para o Slack usando a URL do Incoming Webhook. Para conseguir isso, voc\u00ea pode usar sua biblioteca de solicita\u00e7\u00e3o HTTP preferida (por exemplo, <a href=\"https:\/\/kinsta.com\/pt\/blog\/solicitacoes-http-javascript\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>) ou m\u00e9todo para enviar uma solicita\u00e7\u00e3o POST ao Slack. Vamos usar o 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>Execute o c\u00f3digo acima e preencha o formul\u00e1rio de cria\u00e7\u00e3o do site. Se o processo for bem-sucedido, uma mensagem ser\u00e1 enviada ao Slack imediatamente.<\/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 do Node.js para o Slack com o Incoming Webhook.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Hello World enviado do Node.js para o Slack com o Incoming Webhook.<\/figcaption><\/figure>\n<h3>Personalizando as mensagens do Slack<\/h3>\n<p>O exemplo acima envia uma mensagem de texto b\u00e1sico, mas os webhooks de entrada do Slack suportam muito mais do que um simples texto. Voc\u00ea pode personalizar suas mensagens para incluir anexos, links, imagens, bot\u00f5es e muito mais.<\/p>\n<p>Uma maneira de voc\u00ea personalizar as mensagens do Slack \u00e9 usando o <a href=\"https:\/\/app.slack.com\/block-kit-builder\" target=\"_blank\" rel=\"noopener noreferrer\">Slack Block Kit Builder<\/a>. O Block Kit \u00e9 uma estrutura de interface de usu\u00e1rio fornecida pelo Slack que permite que voc\u00ea crie mensagens ricas e interativas com v\u00e1rios elementos de conte\u00fado.<\/p>\n<p>Para este tutorial, voc\u00ea ver\u00e1 um bloco criado com o Block Kit Builder para formatar a mensagem adequadamente e adicionar alguns valores do formul\u00e1rio e da resposta de cria\u00e7\u00e3o do site:<\/p>\n<pre><code class=\"language-js\">const message = {\n    blocks: [\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: `Hello, your new site (${req.body.displayName}) has started building. It takes minutes to build. You can check the operation status intermittently via https:\/\/site-builder-nodejs-xvsph.kinsta.app\/operation\/${req.body.displayName}\/${data.operation_id}.`,\n            },\n        },\n        {\n            type: 'divider',\n        },\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: \"_Here are your site's details:_\",\n            },\n        },\n        {\n            type: 'section',\n            text: {\n                type: 'mrkdwn',\n                text: `1. *Site URL:* http:\/\/${req.body.displayName}.kinsta.cloud\/n2. *WP Admin URL:* http:\/\/${req.body.displayName}.kinsta.cloud\/wp-admin\/`,\n            },\n        },\n    ],\n};<\/code><\/pre>\n<p>Nesse c\u00f3digo, voc\u00ea cria um objeto de mensagem que cont\u00e9m uma array de blocos. Cada bloco representa uma se\u00e7\u00e3o espec\u00edfica da mensagem do Slack e pode ter diferentes tipos de conte\u00fado.<\/p>\n<ol start=\"1\">\n<li><strong>Bloco de se\u00e7\u00e3o<\/strong>: Esse tipo de bloco \u00e9 usado para exibir uma se\u00e7\u00e3o de texto. Voc\u00ea usa o <code>type: 'section'<\/code> para indicar que se trata de um bloco de se\u00e7\u00e3o. Dentro do bloco de se\u00e7\u00e3o, a propriedade text \u00e9 usada com <code>type: 'mrkdwn'<\/code> para especificar que o conte\u00fado do texto deve ser interpretado como formato Markdown. O conte\u00fado real do texto \u00e9 fornecido na propriedade text, e usamos literais de modelo para incluir valores din\u00e2micos do formul\u00e1rio e da resposta de cria\u00e7\u00e3o do site, como <code>req.body.displayName<\/code> e <code>data.operation_id<\/code>.<\/li>\n<li><strong>Bloco divisor<\/strong>: Esse tipo de bloco \u00e9 usado para adicionar uma linha horizontal para separar as se\u00e7\u00f5es da mensagem. Usamos <code>type: 'divider'<\/code> para criar o bloco divisor.<\/li>\n<\/ol>\n<p>Quando essa mensagem for enviada ao Slack usando o Incoming Webhook, ela gerar\u00e1 uma mensagem visualmente atraente e informativa em seu canal do Slack. A mensagem incluir\u00e1 valores din\u00e2micos do formul\u00e1rio (como o nome do site) e informa\u00e7\u00f5es da resposta de cria\u00e7\u00e3o do site, tornando uma mensagem altamente personalizada e customizada.<\/p>\n<p>Para enviar essa mensagem personalizada, substitua o objeto no corpo do <code>fetch()<\/code> pelo conte\u00fado da vari\u00e1vel de mensagem:<\/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=\"Mensagem do Slack personalizada com o Slack Block Kit Builder.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Mensagem do Slack personalizada com o Slack Block Kit Builder.<\/figcaption><\/figure>\n<h2>Lidando com a opera\u00e7\u00e3o de cria\u00e7\u00e3o do site com a API da Kinsta<\/h2>\n<p>Na mensagem enviada ao Slack, \u00e9 criado um link que tem o ID da opera\u00e7\u00e3o e o nome de exibi\u00e7\u00e3o. Voc\u00ea pode criar uma nova rota para a p\u00e1gina <strong>Operations<\/strong> para usar esses dados para verificar o status da opera\u00e7\u00e3o.<\/p>\n<p>No Express, voc\u00ea pode acessar par\u00e2metros de URL com o par\u00e2metro <code>req<\/code>. Por exemplo, para obter o ID da opera\u00e7\u00e3o, voc\u00ea usa <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>Com o c\u00f3digo acima, ao clicar no link no Slack, voc\u00ea far\u00e1 uma solicita\u00e7\u00e3o \u00e0 API da Kinsta para verificar o status da opera\u00e7\u00e3o do seu site. Atualize o arquivo <strong>operation.ejs<\/strong> para adicionar dados din\u00e2micos:<\/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 opera\u00e7\u00f5es mostrando o ID da opera\u00e7\u00e3o e os detalhes do site.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">P\u00e1gina de opera\u00e7\u00f5es mostrando o ID da opera\u00e7\u00e3o e os detalhes do site.<\/figcaption><\/figure>\n<p>Por fim, voc\u00ea pode usar o m\u00e9todo de redirecionamento para navegar at\u00e9 a p\u00e1gina de opera\u00e7\u00f5es quando o processo de cria\u00e7\u00e3o de um site for iniciado:<\/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>O c\u00f3digo-fonte completo para este projeto est\u00e1 dispon\u00edvel na <a href=\"https:\/\/github.com\/kinsta\/site-builder-nodejs\/tree\/main\">branch principal deste reposit\u00f3rio no GitHub<\/a>.<\/p>\n<h2>Implantando seu aplicativo Node.js na Kinsta<\/h2>\n<p>Voc\u00ea pode implantar facilmente este aplicativo Node.js na plataforma de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hospedagem de aplicativos<\/a> da Kinsta. Tudo o que voc\u00ea precisa fazer \u00e9 enviar seu c\u00f3digo para o seu provedor 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> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>). Em seguida, voc\u00ea deve seguir estas etapas:<\/p>\n<ol start=\"1\">\n<li>Fa\u00e7a login em sua conta Kinsta no painel <a href=\"https:\/\/my.kinsta.com\/?lang=pt\">MyKinsta<\/a>.<\/li>\n<li>Clique em <strong>Adicionar servi\u00e7o<\/strong>.<\/li>\n<li>Selecione <strong>Aplicativo<\/strong> no menu suspenso.<\/li>\n<li>No modal que aparece, escolha o reposit\u00f3rio que voc\u00ea deseja implantar. Se voc\u00ea tiver v\u00e1rias branches, poder\u00e1 selecionar a branch desejada e dar um nome ao seu aplicativo.<\/li>\n<li>Selecione um dos locais de centros de dados dispon\u00edveis. A Kinsta detectar\u00e1 e instalar\u00e1 as depend\u00eancias do seu aplicativo a partir do package.json e, em seguida, criar\u00e1 e implantar\u00e1.<\/li>\n<\/ol>\n<p>Por fim, n\u00e3o \u00e9 seguro enviar chaves de API para hosts p\u00fablicos, como seu provedor Git. Ao hospedar, voc\u00ea pode adicion\u00e1-las como <a href=\"https:\/\/docs.sevalla.com\/applications\/environment-variables\">vari\u00e1veis de ambiente<\/a> usando o mesmo nome e valor de vari\u00e1vel especificados no arquivo <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=\"Defina as vari\u00e1veis de ambiente no DevKinsta ao fazer a implanta\u00e7\u00e3o.\" width=\"1600\" height=\"360\"><figcaption class=\"wp-caption-text\">Defina as vari\u00e1veis de ambiente no DevKinsta ao fazer a implanta\u00e7\u00e3o.<\/figcaption><\/figure>\n<p>Depois que voc\u00ea iniciar a implanta\u00e7\u00e3o do seu aplicativo, ele ser\u00e1 normalmente criado e implantado em alguns minutos. Voc\u00ea receber\u00e1 um link para o seu novo aplicativo, que ter\u00e1 a seguinte apar\u00eancia: <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 houver algum problema com as configura\u00e7\u00f5es do Node.js que afete a implanta\u00e7\u00e3o, voc\u00ea poder\u00e1 adicionar um buildpack do Node.js na aba de configura\u00e7\u00f5es de implanta\u00e7\u00e3o.<\/p>\n<\/aside>\n\n<h2>Resumo<\/h2>\n<p>Neste tutorial, voc\u00ea aprendeu como enviar mensagens para o Slack a partir de um aplicativo Node.js usando Incoming Webhooks e como personalizar as mensagens do Slack com o Block Kit Builder.<\/p>\n<p>As possibilidades com o Slack e a API Kinsta s\u00e3o vastas, e este tutorial \u00e9 apenas o come\u00e7o. Ao integrar essas ferramentas, voc\u00ea pode criar um fluxo de trabalho cont\u00ednuo que mant\u00e9m sua equipe bem informada e aumenta a produtividade.<\/p>\n<p><em>Como voc\u00ea est\u00e1 usando a API Kinsta? Quais recursos voc\u00ea gostaria de ver adicionados em seguida?<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ao longo dos anos, nossos servi\u00e7os na Kinsta sempre foram gerenciados manualmente atrav\u00e9s do painel MyKinsta. No entanto, com a introdu\u00e7\u00e3o da API da Kinsta e &#8230;<\/p>\n","protected":false},"author":287,"featured_media":62431,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[951,992,983],"class_list":["post-62430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-node-js","topic-servicos-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>Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!\" \/>\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\/pt\/blog\/servicos-api-kinsta-e-slack\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack\" \/>\n<meta property=\"og:description\" content=\"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-22T08:19:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T12:35:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\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\/pt\/blog\/servicos-api-kinsta-e-slack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack\",\"datePublished\":\"2023-08-22T08:19:36+00:00\",\"dateModified\":\"2023-08-29T12:35:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\"},\"wordCount\":3097,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\",\"name\":\"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"datePublished\":\"2023-08-22T08:19:36+00:00\",\"dateModified\":\"2023-08-29T12:35:58+00:00\",\"description\":\"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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\/pt\/blog\/servicos-api-kinsta-e-slack\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack - Kinsta\u00ae","description":"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!","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\/pt\/blog\/servicos-api-kinsta-e-slack\/","og_locale":"pt_PT","og_type":"article","og_title":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack","og_description":"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!","og_url":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-08-22T08:19:36+00:00","article_modified_time":"2023-08-29T12:35:58+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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":"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Joel Olawanle","Tempo estimado de leitura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack","datePublished":"2023-08-22T08:19:36+00:00","dateModified":"2023-08-29T12:35:58+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/"},"wordCount":3097,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/","url":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/","name":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","datePublished":"2023-08-22T08:19:36+00:00","dateModified":"2023-08-29T12:35:58+00:00","description":"Aprenda como gerenciar os Servi\u00e7os da Kinsta sem esfor\u00e7o usando a integra\u00e7\u00e3o da API da Kinsta e Slack. Aumente a efici\u00eancia hoje!","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/servicos-api-kinsta-e-slack\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/building-a-slackbot-using-node.js-and-kinsta-api-for-message-sending.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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\/pt\/blog\/servicos-api-kinsta-e-slack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/pt\/topicos\/api\/"},{"@type":"ListItem","position":3,"name":"Gerenciando os Servi\u00e7os da Kinsta com a API da Kinsta e Slack"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/62430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=62430"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/62430\/revisions"}],"predecessor-version":[{"id":62573,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/62430\/revisions\/62573"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/it"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/nl"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/de"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/translations\/es"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62430\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/62431"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=62430"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=62430"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=62430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}