{"id":65859,"date":"2023-12-08T10:40:28","date_gmt":"2023-12-08T13:40:28","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=65859&#038;preview=true&#038;preview_id=65859"},"modified":"2023-12-18T13:08:22","modified_gmt":"2023-12-18T16:08:22","slug":"comunicacao-do-slack-para-o-aplicativo","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/","title":{"rendered":"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta"},"content":{"rendered":"<p>No contexto de hospedagem de alto desempenho e das ferramentas de desenvolvimento vers\u00e1teis, a Kinsta se destaca como uma plataforma l\u00edder que atende ao <a href=\"https:\/\/kinsta.com\/pt\/hospedagem-wordpress\/\">WordPress<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">aplicativos<\/a>, <a href=\"https:\/\/sevalla.com\/database-hosting\/\">bancos de dados<\/a> e at\u00e9 mesmo \u00e0 <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">hospedagem gratuita de site est\u00e1tico<\/a>.<\/p>\n<p>O <a href=\"https:\/\/kinsta.com\/pt\/blog\/como-usar-slack\/\">Slack<\/a>, conhecido por seus comandos Slash, integra-se perfeitamente aos aplicativos e servi\u00e7os hospedados na Kinsta, permitindo que os usu\u00e1rios automatizem tarefas e aumentem significativamente a efici\u00eancia.<\/p>\n<p>Este guia explica como voc\u00ea pode configurar a comunica\u00e7\u00e3o em tempo real entre o Slack e um aplicativo Python hospedado na Kinsta. Ao aproveitar os comandos Slash, os usu\u00e1rios do aplicativo ganham a capacidade de criar, consultar e excluir produtos com rapidez.<\/p>\n<p>Essa integra\u00e7\u00e3o permite que eles atualizem dinamicamente o invent\u00e1rio de produtos, garantindo respostas r\u00e1pidas \u00e0s necessidades dos clientes.<\/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>Entendendo os comandos do Slack<\/h2>\n<p>Os comandos do Slack s\u00e3o atalhos baseados em texto. Eles come\u00e7am com uma barra (<code>\/<\/code>) seguida de uma palavra-chave espec\u00edfica e um par\u00e2metro opcional.<\/p>\n<p>Os comandos do Slack acionam a\u00e7\u00f5es ou interagem diretamente com integra\u00e7\u00f5es na interface do Slack. Por exemplo, <code>\/remind<\/code> permite que voc\u00ea defina lembretes diretamente por meio de notifica\u00e7\u00f5es do Slack.<\/p>\n<p>Com as <a href=\"https:\/\/kinsta.com\/pt\/blog\/integracoes-do-slack\/\">integra\u00e7\u00f5es do Slack<\/a>, voc\u00ea pode configurar comandos personalizados para seus aplicativos. Neste tutorial, sua equipe pode consultar sem esfor\u00e7o o invent\u00e1rio do nosso aplicativo de produto usando o comando Slash <code>\/check_inventory<\/code> e outros comandos.<\/p>\n<p>Ao integrar o Slack aos seus aplicativos, voc\u00ea promove uma intera\u00e7\u00e3o perfeita e fluxos de trabalho simplificados em um local de trabalho moderno. Ele aprimora a comunica\u00e7\u00e3o e a produtividade por meio de:<\/p>\n<ul>\n<li><strong>Um hub de comunica\u00e7\u00e3o centralizado<\/strong> &#8211; O Slack funciona como um espa\u00e7o unificado para as equipes. A integra\u00e7\u00e3o de aplicativos ao Slack consolida os canais, mantendo as conversas e as informa\u00e7\u00f5es em um s\u00f3 lugar e aumentando a efici\u00eancia.<\/li>\n<li><strong>Atualiza\u00e7\u00f5es em tempo real<\/strong> &#8211; Os aplicativos integrados fornecem alertas instant\u00e2neos sobre eventos importantes, garantindo que todos se mantenham informados e reajam rapidamente a mudan\u00e7as ou atualiza\u00e7\u00f5es.<\/li>\n<li><strong>Fluxos de trabalho simplificados<\/strong> &#8211; As integra\u00e7\u00f5es automatizam tarefas como notifica\u00e7\u00f5es de ferramentas de gerenciamento de projetos ou a\u00e7\u00f5es de acionamento no software de CRM, reduzindo o trabalho manual.<\/li>\n<li><strong>Colabora\u00e7\u00e3o aprimorada<\/strong> &#8211; Os membros da equipe que acessam aplicativos diretamente do Slack promovem uma colabora\u00e7\u00e3o perfeita. Eles podem compartilhar, editar arquivos e discutir projetos com facilidade, promovendo o trabalho em equipe em todas as fun\u00e7\u00f5es.<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Voc\u00ea pode aproveitar a <a href=\"https:\/\/kinsta.com\/pt\/docs\/kinsta-api\/\">API da Kinsta<\/a> juntamente com os comandos Slash do Slack para <a href=\"https:\/\/kinsta.com\/pt\/blog\/criar-slackbot-gerenciamento-sites\/\">gerenciar seus aplicativos, banco de dados e sites<\/a> hospedados na Kinsta.<\/p>\n<\/aside>\n\n<h2>Como criar um aplicativo Python na Kinsta<\/h2>\n<p>Vamos criar e implantar um aplicativo de gerenciamento de produtos na Kinsta. Em seguida, integre ao Slack para explorar os comandos Slash. Os usu\u00e1rios podem adicionar, excluir e consultar os produtos do invent\u00e1rio por meio de comandos Slash no Slack.<\/p>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>Para acompanhar este guia, presumimos que voc\u00ea tenha:<\/p>\n<ul>\n<li>Conhecimento b\u00e1sico de <a href=\"https:\/\/kinsta.com\/pt\/topicos\/python\/\">Python<\/a><\/li>\n<li>Uma <a href=\"https:\/\/slack.com\/workspace-signin\" target=\"_blank\" rel=\"noopener noreferrer\">conta do Slack<\/a><\/li>\n<\/ul>\n<p>Primeiro, vamos configurar um projeto Python na Kinsta. Para fazer isso, siga as etapas abaixo:<\/p>\n<ol start=\"1\">\n<li>Visite o <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">template Python da Kinsta<\/a> no GitHub.<\/li>\n<li>Selecione <strong>Usar este template<\/strong> &gt; <strong>Criar um novo reposit\u00f3rio<\/strong> para copiar o c\u00f3digo inicial em um reposit\u00f3rio dentro da sua conta <a href=\"https:\/\/kinsta.com\/pt\/blog\/que-github\/\">GitHub<\/a>.<\/li>\n<li>Quando seu reposit\u00f3rio estiver pronto, fa\u00e7a login ou crie uma conta para visualizar seu painel <a href=\"https:\/\/my.kinsta.com\/?lang=pt\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorize a Kinsta com seu provedor Git <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>).<\/li>\n<li>Clique em <strong>Aplicativos<\/strong> na barra lateral esquerda e, em seguida, clique em <strong>Adicionar aplicativo<\/strong>.<\/li>\n<li>Selecione o reposit\u00f3rio e o branch dos quais voc\u00ea deseja implantar.<\/li>\n<li>Atribua um nome exclusivo ao seu aplicativo e escolha um local de centro de dados.<\/li>\n<li>Em seguida, configure seu ambiente de build. Selecione a configura\u00e7\u00e3o da <strong>m\u00e1quina de build padr\u00e3o<\/strong> com a op\u00e7\u00e3o <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks<\/a> recomendada para esta demonstra\u00e7\u00e3o.<\/li>\n<li>Use todas as configura\u00e7\u00f5es padr\u00e3o e, em seguida, clique em <strong>Criar aplicativo<\/strong>.<\/li>\n<\/ol>\n<p>A implanta\u00e7\u00e3o normalmente leva alguns minutos e, se for bem-sucedida, voc\u00ea receber\u00e1 um link para o aplicativo junto com um painel contendo informa\u00e7\u00f5es sobre a implanta\u00e7\u00e3o.<\/p>\n<h2>Como configurar a integra\u00e7\u00e3o do Slack em um aplicativo Python<\/h2>\n<p>Vamos come\u00e7ar criando um aplicativo do Slack e, em seguida, configurar os comandos do Slack que seriam conectados ao seu aplicativo Python por meio de alguns tokens. Vamos configurar um aplicativo do Slack:<\/p>\n<ol start=\"1\">\n<li>Acesse o painel de controle da <a href=\"https:\/\/api.slack.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">API do Slack<\/a>.<\/li>\n<li>Clique em <strong>Create New App <\/strong>e escolha <strong>From Scratch<\/strong>.<\/li>\n<li>D\u00ea um nome ao seu aplicativo Slack (por exemplo, <strong>product-inventory<\/strong>).<\/li>\n<li>Selecione o espa\u00e7o de trabalho e clique em <strong>Create App<\/strong>.<\/li>\n<\/ol>\n<p>Agora, para a autentica\u00e7\u00e3o:<\/p>\n<ol start=\"1\">\n<li>Habilite o <strong>Socket Mode<\/strong>\u00a0na barra lateral do painel do Slack.<\/li>\n<li>Gere um token no n\u00edvel do aplicativo digitando um nome de token e clicando em <strong>Generate<\/strong>.<\/li>\n<li>Salve esse token em n\u00edvel de aplicativo para configurar vari\u00e1veis de ambiente posteriormente.<\/li>\n<\/ol>\n<h3>Como configurar os comandos Slash<\/h3>\n<p>Para configurar os comandos Slash do seu aplicativo:<\/p>\n<ol start=\"1\">\n<li>Navegue at\u00e9 a se\u00e7\u00e3o <strong>Features<\/strong>\u00a0em <strong>Basic Information<\/strong> no painel da API do Slack. Escolha <strong>Slash Commands<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/slack-api-features.png\" alt=\"Painel da API do Slack com op\u00e7\u00f5es para adicionar recursos e fun\u00e7\u00f5es.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Painel da API do Slack com op\u00e7\u00f5es para adicionar recursos e fun\u00e7\u00f5es.<\/figcaption><\/figure><\/li>\n<li>Clique em <strong>Create New Command<\/strong>\u00a0para configurar um novo comando.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-slash-command.jpg\" alt=\"P\u00e1gina Criar novo comando no Slack.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">P\u00e1gina Criar novo comando no Slack.<\/figcaption><\/figure><\/li>\n<li>Na p\u00e1gina <strong>Create New Command<\/strong>, preencha os detalhes do seu novo comando do Slack. Por exemplo, digite <code>\/hi<\/code> no campo Comando. Opcionalmente, adicione uma breve descri\u00e7\u00e3o como &#8220;Says hello!&#8221; (Diz ol\u00e1!) e forne\u00e7a uma dica de uso. Clique em <strong>Save<\/strong>.<\/li>\n<li>Na se\u00e7\u00e3o Instalar aplicativo da barra lateral, clique em <strong>Install to Workspace<\/strong>.<\/li>\n<li>Acesse o token OAuth do usu\u00e1rio do bot indo para <strong>OAuth &#038; Permissions<\/strong> na barra lateral. Salve esse token para refer\u00eancia futura.<\/li>\n<\/ol>\n<h3>Como adicionar tokens \u00e0 implanta\u00e7\u00e3o de aplicativos da Kinsta<\/h3>\n<ol start=\"1\">\n<li>V\u00e1 para a se\u00e7\u00e3o <strong>Vari\u00e1veis de ambiente <\/strong>em <strong>Configura\u00e7\u00f5es<\/strong> da implanta\u00e7\u00e3o do seu aplicativo no MyKinsta.<\/li>\n<li>Clique em <strong>Adicionar vari\u00e1vel de ambiente<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/environment-variables-kinsta.png\" alt=\"Voc\u00ea ver\u00e1 o pop-up Adicionar vari\u00e1vel de ambiente do Slack.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Voc\u00ea ver\u00e1 o pop-up Adicionar vari\u00e1vel de ambiente do Slack.<\/figcaption><\/figure><\/li>\n<li>Para a <strong>Chave 1<\/strong>, SLACK_BOT_TOKEN, cole o token OAuth do usu\u00e1rio do bot no <strong>Valor 1<\/strong>. Para a <strong>Chave 2<\/strong>, SLACK_APP_TOKEN, cole o token no n\u00edvel do aplicativo no <strong>Valor 2<\/strong>.<\/li>\n<li>Certifique-se de que ambas as op\u00e7\u00f5es estejam marcadas e clique em <strong>Implantar agora<\/strong> para que a Kinsta possa reimplantar seu aplicativo com as vari\u00e1veis de ambiente.<\/li>\n<\/ol>\n<h2>Como implementar a comunica\u00e7\u00e3o em tempo real<\/h2>\n<p>Para esta demonstra\u00e7\u00e3o, voc\u00ea usa o <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">template Python da Kinsta<\/a>, que cont\u00e9m os seguintes arquivos:<\/p>\n<ul>\n<li><strong>Procfile<\/strong> &#8211; Especifica os comandos para executar seu aplicativo.<\/li>\n<li><strong>requirements.txt<\/strong> &#8211; Lista as depend\u00eancias necess\u00e1rias para o aplicativo Python.<\/li>\n<li><strong>server.py<\/strong> &#8211; O arquivo principal do aplicativo Python, que lida com a funcionalidade ou as opera\u00e7\u00f5es do lado do servidor.<\/li>\n<\/ul>\n<p>A Kinsta cria automaticamente um <a href=\"https:\/\/docs.sevalla.com\/applications\/processes\">processo<\/a> com base no <strong>Procfile <\/strong>na raiz do reposit\u00f3rio ao implantar um aplicativo. O <strong>Procfile<\/strong> cont\u00e9m o seguinte c\u00f3digo.<\/p>\n<pre><code class=\"language-python\">web: python server.py<\/code><\/pre>\n<p>Esse comando executa o c\u00f3digo que o <strong>server.py<\/strong> cont\u00e9m. A Kinsta tamb\u00e9m instala as depend\u00eancias do Python em <strong>requirements.txt<\/strong> durante a implanta\u00e7\u00e3o e a reimplanta\u00e7\u00e3o.<\/p>\n<p>Agora, vamos usar o <a href=\"https:\/\/slack.dev\/bolt-python\/concepts\" target=\"_blank\" rel=\"noopener noreferrer\">framework Bolt<\/a> para configurar a comunica\u00e7\u00e3o em tempo real com seu aplicativo. Adicione as seguintes linhas ao seu arquivo <strong>requirements.txt<\/strong> para instalar automaticamente o Bolt no seu aplicativo Python quando voc\u00ea atualizar o reposit\u00f3rio.<\/p>\n<pre><code class=\"language-markdown\">slack-bolt==1.18.0\nslack-sdk==3.23.0<\/code><\/pre>\n<p>Al\u00e9m disso, adicione a biblioteca <code>psycopg2<\/code> ao arquivo <strong>requirements.txt<\/strong>. Ela ser\u00e1 usada para que voc\u00ea se conecte a um banco de dados Postgres.<\/p>\n<pre><code class=\"language-markdown\">psycopg2-binary==2.9.9<\/code><\/pre>\n<h3>Como implantar um banco de dados Postgres com a Kinsta<\/h3>\n<p>O aplicativo de invent\u00e1rio de produtos precisa de uma maneira de manter os dados dos produtos que o comandos Slash adiciona ao <a href=\"https:\/\/kinsta.com\/database\/\">banco de dados<\/a>. Para criar um armazenamento de dados persistente, voc\u00ea pode usar o banco de dados hospedado da Kinsta.<\/p>\n<ol start=\"1\">\n<li>Primeiro, implante um <a href=\"https:\/\/sevalla.com\/database-hosting\/\">banco de dados Postgres<\/a> no seu painel Kinsta navegando at\u00e9 a se\u00e7\u00e3o <strong>Bancos de dados<\/strong> na barra lateral do painel MyKinsta.<\/li>\n<li>Clique em <strong>Criar um banco de dados<\/strong>. Configure os detalhes do banco de dados inserindo um nome e selecionando o tipo de banco de dados. Selecione a op\u00e7\u00e3o <strong>PostgreSQL<\/strong> e configure o tamanho que voc\u00ea deseja. Um <strong>nome de usu\u00e1rio<\/strong> e uma <strong>senha<\/strong> <strong>do banco de dados<\/strong> s\u00e3o gerados automaticamente:\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-database-app.png\" alt=\"Formul\u00e1rio para criar um banco de dados.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Formul\u00e1rio para criar um banco de dados.<\/figcaption><\/figure><\/li>\n<li>Clique em <strong>Continuar<\/strong> para concluir a configura\u00e7\u00e3o do banco de dados. Aguarde at\u00e9 que o banco de dados PostgreSQL seja criado.<br \/>\nQuando voc\u00ea for bem-sucedido, para obter a string de conex\u00e3o para acesso externo ao banco de dados, navegue at\u00e9 a se\u00e7\u00e3o <strong>Conex\u00f5es externas<\/strong> do painel do banco de dados implantado e copie a string de conex\u00e3o externa.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/basic-info-database.png\" alt=\"Informa\u00e7\u00f5es de conex\u00e3o externa do banco de dados.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Informa\u00e7\u00f5es de conex\u00e3o externa do banco de dados.<\/figcaption><\/figure>\n<p>Agora, voc\u00ea pode usar essa string de conex\u00e3o para se conectar ao banco de dados a partir do seu aplicativo Python.<\/p>\n<p><aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>No painel do seu aplicativo Python, salve a string de conex\u00e3o como uma vari\u00e1vel de ambiente em <code>DATABASE_CONNECTION_STRING<\/code>, como voc\u00ea fez anteriormente com os tokens do Slack.<\/p>\n<\/aside>\n<\/li>\n<li>No seu projeto Python, crie um arquivo <strong>db.py<\/strong> no diret\u00f3rio do projeto para as fun\u00e7\u00f5es de inicializa\u00e7\u00e3o do banco de dados. Adicione o seguinte c\u00f3digo:\n<pre><code class=\"language-python\">import psycopg2\nimport os\n\n# get connection string from environment variable\nconnection_string = os.environ.get(\"DATABASE_CONNECTION_STRING\")\n \ndef get_conn():\n   # create connection\n   conn = psycopg2.connect(connection_string)\n\n   # Return connection to the database\n   return conn\n     \ndef init_db():\n   # get connection\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   cur.execute(\"\"\"\n       DROP TABLE IF EXISTS products;\n                   \n       CREATE TABLE products (\n           id INTEGER PRIMARY KEY,\n           name TEXT UNIQUE NOT NULL,\n           quantity INTEGER NOT NULL\n       );\n   \"\"\")\n\n   cur.close()\n   conn.commit()\n   conn.close()<\/code><\/pre>\n<p>Quando a fun\u00e7\u00e3o <code>get_conn()<\/code> \u00e9 chamada, ela cria e retorna uma conex\u00e3o com o banco de dados Kinsta implantado usando sua string de conex\u00e3o externa.<\/p>\n<p>A fun\u00e7\u00e3o <code>init_db()<\/code> obt\u00e9m uma conex\u00e3o com o banco de dados, define o esquema do banco de dados e cria a tabela, al\u00e9m de confirmar as altera\u00e7\u00f5es. Voc\u00ea s\u00f3 deve chamar a fun\u00e7\u00e3o <code>init_db()<\/code> uma vez ao configurar inicialmente o servidor de aplicativos. Use a fun\u00e7\u00e3o <code>get_conn()<\/code> nas chamadas subsequentes para obter uma conex\u00e3o com o banco de dados.<\/li>\n<\/ol>\n<h3>Como implementar os manipuladores do comando Slash<\/h3>\n<p>Agora, crie o c\u00f3digo do servidor de aplicativos.<\/p>\n<ol start=\"1\">\n<li>Exclua o conte\u00fado do arquivo <strong>server.py<\/strong> e importe as seguintes bibliotecas:\n<pre><code class=\"language-python\">import os\nfrom slack_bolt import App\nfrom slack_bolt.adapter.socket_mode import SocketModeHandler\nfrom db import get_conn, init_db\nfrom psycopg2 import DatabaseError<\/code><\/pre>\n<p>Elas s\u00e3o necess\u00e1rias para a funcionalidade do aplicativo Slack, conex\u00f5es de banco de dados e tratamento de erros.<\/li>\n<li>Adicione o seguinte c\u00f3digo ao arquivo <strong>server.py<\/strong> ap\u00f3s as instru\u00e7\u00f5es de importa\u00e7\u00e3o:\n<pre><code class=\"language-python\"># Initialize your app with your bot token\napp = App(\n  token=os.environ.get(\"SLACK_BOT_TOKEN\"),\n)<\/code><\/pre>\n<p>A classe <code>App<\/code> de <code>slack_bolt<\/code> \u00e9 usada para criar uma inst\u00e2ncia do aplicativo Slack. Ela inicializa o aplicativo com o token OAuth do usu\u00e1rio do bot recuperado da vari\u00e1vel de ambiente <code>SLACK_BOT_TOKEN<\/code>.<\/li>\n<li>Em seguida, implante um manipulador para o comando Slash <code>\/hi<\/code> que voc\u00ea adicionou ao seu aplicativo Slack anteriormente. Adicione as seguintes linhas ao arquivo <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># The hi command simply sends back a greeting\n@app.command(\"\/hi\")\ndef send_hello(ack, respond, command):\n  # Acknowledge command request\n  ack()\n  respond(f\"Hello!\")<\/code><\/pre>\n<p>O <code>@app.command()<\/code> cria um ouvinte para a string de comando passada como argumento e mapeia a seguinte fun\u00e7\u00e3o para as solicita\u00e7\u00f5es desse comando Slash. A fun\u00e7\u00e3o <code>send_hello()<\/code> lida com a l\u00f3gica da solicita\u00e7\u00e3o.<\/p>\n<p>O c\u00f3digo tamb\u00e9m passa as vari\u00e1veis de solicita\u00e7\u00e3o <code>ack<\/code>, <code>respond<\/code> e <code>command<\/code> para que a fun\u00e7\u00e3o as utilize. Chame <code>ack<\/code> para confirmar a solicita\u00e7\u00e3o do comando Slash, pois essa \u00e9 a primeira etapa antes de continuar o processamento, e chame <code>respond<\/code> para enviar uma resposta de texto.<\/p>\n<p>Quando o usu\u00e1rio digitar o comando Slash <code>\/hi<\/code> no seu espa\u00e7o de trabalho do Slack, ele receber\u00e1 a resposta &#8220;Hello!&#8221;<\/li>\n<li>Volte ao painel do aplicativo Slack e adicione os seguintes comandos.<br \/>\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Comando<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Descri\u00e7\u00e3o curta<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Dica de uso<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/add_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Adicionar um produto ao invent\u00e1rio.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id, product_name, product_quantity<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/check_inventory<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Verificar se h\u00e1 um produto com um ID correspondente no invent\u00e1rio.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/delete_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Excluir do invent\u00e1rio o produto com o ID correspondente.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Agora, sua p\u00e1gina <strong>comando Slash<\/strong>\u00a0deve se parecer com a seguinte captura de tela, contendo uma lista de comandos e seus detalhes.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/all-slash-commands.png\" alt=\"P\u00e1gina do comando Slash da API do Slack.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">P\u00e1gina do comando Slash da API do Slack.<\/figcaption><\/figure><\/li>\n<li>Adicione o manipulador <code>\/add_product<\/code> ao arquivo <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># command to add products\n@app.command(\"\/add_product\")\ndef add_product(ack, respond, command, request):\n #Acknowledge command request\n ack()\n\n # Extract payload from request\n payload = request.body['text']\n id, name, quantity = [i.strip() for i in payload.split(\",\")]\n  \n # conn object\n conn = None\n\n try:\n   # get conn\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   # Insert product into the database\n   cur.execute(\n     \"INSERT INTO products (id, name, quantity) VALUES (%s, %s, %s)\",\n       (int(id), name, int(quantity))\n   )\n   \n   # close communication with postgresql\n   cur.close()\n   \n   # commit changes\n   conn.commit()\n   \n   # Response\n   respond(f\"\"\"Added product to inventory:\n     id - {id},\n     name - {name},\n     quantity - {quantity}\n   \"\"\")\n\n except DatabaseError:\n   # Send a response\n   respond(f\"Product with ID {id} exists in inventory!\")\n  \n finally:\n   # close connection\n   if conn is not None:\n     conn.close()<\/code><\/pre>\n<p><code>request.body<\/code> acessa a carga \u00fatil completa da solicita\u00e7\u00e3o que o Slack envia durante o processo de tratamento.<\/p>\n<p>Quando um usu\u00e1rio digita o comando Slash <code>\/add_product<\/code>, o aplicativo envia o seguinte exemplo de payload JSON como uma solicita\u00e7\u00e3o POST.<\/p>\n<pre><code class=\"language-python\">{\n    'token': , \n    'team_id': , \n    'team_domain': , \n    'channel_id': , \n    'channel_name': , \n    'user_id': , \n    'user_name': , \n    'command': '\/add_product', \n    'text': '1, notebook, 5', \n    'api_app_id': , \n    'is_enterprise_install': , \n    'response_url': , \n    'trigger_id': \n}<\/code><\/pre>\n<p>Os campos <code>command<\/code> e <code>text<\/code> est\u00e3o inclu\u00eddos. <code>command<\/code> cont\u00e9m o <strong>comando Slash<\/strong> acionado, enquanto <code>text<\/code> cont\u00e9m seu texto adicional. Por exemplo, se o usu\u00e1rio digitar o comando <code>\/add_product 1, notebook, 5<\/code>, <code>text<\/code> conter\u00e1 &#8220;1, notebook, 5&#8221;.<\/p>\n<p>O manipulador <code>add_product<\/code> extrai o ID, o nome e a quantidade do produto da solicita\u00e7\u00e3o do usu\u00e1rio e se conecta ao banco de dados usando a fun\u00e7\u00e3o auxiliar <code>get_conn()<\/code>. Ele tamb\u00e9m executa uma opera\u00e7\u00e3o SQL de inser\u00e7\u00e3o para adicionar o produto ao banco de dados. Se o ID do produto j\u00e1 existir no banco de dados, o c\u00f3digo tratar\u00e1 o erro e responder\u00e1 que o ID j\u00e1 existe.<\/li>\n<li>Agora, adicione o restante dos manipuladores de comando ao arquivo <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># command to check inventory for a product_id\n@app.command(\"\/check_inventory\")\ndef check_inventory(ack, respond, command, request):\n   # Acknowledge command request\n   ack()\n\n   # Extract payload from request\n   id = request.body['text'].strip()\n\n   # Get a database connection\n   conn = None\n   try:\n       # get conn\n       conn = get_conn()\n\n       # get cursor\n       cur = conn.cursor()\n \n       # Fetch matching product with ID from database\n       cur.execute(\n           \"SELECT * FROM products WHERE id=%s\",\n           (int(id),)\n       )\n\n       product = cur.fetchone()\n\n       # close comms\n       cur.close()\n\n       if product is None:\n           respond(f\"No product with matching ID {id} found.\")\n       else:\n           # Deconstruct tuple if the product exists\n           _, name, quantity = product\n          \n           respond(f\"\"\"Product with ID {id} found:\n                      name - {name},\n                      quantity - {quantity}\n                  \"\"\")\n         \n   except Exception as e:\n       print(\"Connection error: %s\", e)\n         \n   finally:\n       # close connection\n       if conn is not None:\n           conn.close()\n\n# command to delete the matching product_id from inventory\n@app.command(\"\/delete_product\")\ndef delete_product(ack, respond, command, request):\n    #Acknowledge command request\n    ack()\n\n    # Extract payload from request\n    id = request.body['text'].strip()\n    \n    # Get connection\n    conn = None\n    try:\n        # Get connection\n        conn = get_conn()\n   \t \n        # get cursor\n        cur = conn.cursor()\n   \t \n        # Insert the product into the database\n        cur.execute(\n        \t\"DELETE FROM products WHERE id = %s\",\n        \t(int(id),)\n        )\n        cur.close()\n        conn.commit()\n   \t \n        # Response\n        respond(f\"Product with ID {id} deleted from inventory!\")\n    except Exception as e:\n        print(\"Connection error: %s\", e)\n    finally:\n        # close connection\n        if conn is not None:\n            conn.close()\n<\/code><\/pre>\n<p>Esses dois manipuladores de comando consultam e excluem o ID do produto correspondente no invent\u00e1rio, respectivamente.<\/li>\n<\/ol>\n<h3>Como executar o servidor<\/h3>\n<ol start=\"1\">\n<li>Para reunir a inicializa\u00e7\u00e3o do banco de dados e a conex\u00e3o do soquete, adicione as seguintes linhas ao arquivo <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># Start your app\nif __name__ == \"__main__\":\n    # Initialize database on start\n    init_db()\n\n    # Connect socket\n    handler = SocketModeHandler(app, os.environ[\"SLACK_APP_TOKEN\"])\n    handler.start()<\/code><\/pre>\n<p>Voc\u00ea deve inicializar o <code>SocketModeHandler<\/code> com seu token no n\u00edvel do aplicativo. Use o <code>SLACK_APP_TOKEN<\/code> para acessar a vari\u00e1vel de ambiente implantada no aplicativo Kinsta.<\/li>\n<li>Confirme as altera\u00e7\u00f5es em seu reposit\u00f3rio remoto para implant\u00e1-las automaticamente na Kinsta. Agora, o <strong>server.py<\/strong> inicializa o banco de dados e estabelece a conex\u00e3o de soquete. A Kinsta acionar\u00e1 uma reimplanta\u00e7\u00e3o autom\u00e1tica do seu aplicativo Python.<\/li>\n<\/ol>\n<h2>Teste e solucione problemas do seu aplicativo<\/h2>\n<p>Voc\u00ea pode testar seu aplicativo no Slack usando os comandos Slash configurados.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li>V\u00e1 para o espa\u00e7o de trabalho associado ao seu aplicativo. Digite o caractere de barra (&#8216;\/&#8217;) para exibir os comandos do aplicativo:\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/testing-slack-slash-commands.png\" alt=\"O canal kinsta-demo.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">O canal kinsta-demo.<\/figcaption><\/figure><\/li>\n<li>Teste cada comando de barra. Por exemplo, digite <code>\/hi<\/code>. Voc\u00ea receber\u00e1 a resposta &#8220;Hello!&#8221;\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/returns-hello.png\" alt=\"Resposta ao comando Hi.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Resposta ao comando Hi.<\/figcaption><\/figure><\/li>\n<li>Teste o que acontece quando voc\u00ea adiciona o mesmo produto duas vezes. Execute o comando de barra <code>\/add_product 1, notepad, 2<\/code> duas vezes.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/adding-product.png\" alt=\"Adicionando um produto duas vezes.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Adicionando um produto duas vezes.<\/figcaption><\/figure>\n<p>Como mostra a captura de tela acima, o primeiro comando funcionou. Ele adicionou um novo produto. O segundo comando solicitou a resposta de que o ID j\u00e1 existe.<\/li>\n<li>Tente consultar o ID do produto que acabamos de adicionar. Digite <code>\/check_inventory 1<\/code>.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/getting-a-product.png\" alt=\"Verificando o invent\u00e1rio.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Verificando o invent\u00e1rio.<\/figcaption><\/figure>\n<p>A consulta retornou o produto com o ID correspondente.<\/li>\n<li>Por fim, tente excluir o produto que voc\u00ea adicionou. Digite <code>\/delete_product 1<\/code>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/deleting-inventory.png\" alt=\"Excluindo um produto.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Excluindo um produto.<\/figcaption><\/figure><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>Como solucionar problemas<\/h3>\n<p>Ao configurar e implantar o aplicativo, voc\u00ea pode encontrar erros que precisam ser resolvidos para que o aplicativo funcione corretamente. Tente os seguintes m\u00e9todos para detectar e corrigir erros t\u00edpicos.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>Verifique seus tokens<\/strong>: Certifique-se de que voc\u00ea configurou corretamente o token no n\u00edvel do aplicativo com o escopo <code>connections:write<\/code> para habilitar o acesso usando o Socket Mode. Al\u00e9m disso, use os tokens corretos para a classe do aplicativo. O token de usu\u00e1rio do bot come\u00e7a com <code>xoxb-&lt;...&gt;<\/code>. Use o token em n\u00edvel de aplicativo (<code>xapp-&lt;...&gt;<\/code>) para a classe <code>SocketModeHandler<\/code>.<\/li>\n<li><strong>Verifique seus comandos de barra<\/strong>: Certifique-se de que voc\u00ea configurou os comandos Slash no painel do seu aplicativo Slack e configurou os manipuladores corretos no c\u00f3digo do servidor de aplicativos.<\/li>\n<li><strong>Use um melhor tratamento de erros<\/strong>: Verifique se a l\u00f3gica do seu aplicativo trata corretamente os erros, por exemplo, ao executar opera\u00e7\u00f5es do banco de dados.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Resumo<\/h2>\n<p>Neste guia, voc\u00ea aprendeu a criar um aplicativo Python com comunica\u00e7\u00e3o em tempo real por meio dos comandos Slash do Slack. Voc\u00ea tamb\u00e9m aprendeu a implantar o aplicativo na Kinsta.<\/p>\n<p>A integra\u00e7\u00e3o de um aplicativo hospedado na Kinsta com o Slack permite que os usu\u00e1rios fa\u00e7am altera\u00e7\u00f5es usando rapidamente os comandos Slash, aumentando a interatividade e a efici\u00eancia do fluxo de trabalho e oferecendo acesso imediato a dados em tempo real. Agora, a equipe pode adicionar, excluir ou verificar o invent\u00e1rio de produtos sem sair da plataforma de comunica\u00e7\u00f5es, aumentando a produtividade durante um dia de trabalho agitado.<\/p>\n<p>A <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-paas\/\">PaaS<\/a> da Kinsta oferece ainda mais possibilidades &#8211; voc\u00ea pode conectar aplicativos e bancos de dados, implantando solu\u00e7\u00f5es de Full-Stack para empresas e neg\u00f3cios. E a melhor parte? Seus <a href=\"https:\/\/kinsta.com\/pt\/inscreva-se\/\">primeiros US$20 s\u00e3o por nossa conta<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No contexto de hospedagem de alto desempenho e das ferramentas de desenvolvimento vers\u00e1teis, a Kinsta se destaca como uma plataforma l\u00edder que atende ao WordPress, aplicativos, &#8230;<\/p>\n","protected":false},"author":199,"featured_media":65860,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1001],"class_list":["post-65859","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-python"],"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>Comunica\u00e7\u00e3o em Tempo Real do Slack (com aplicativo Python) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!\" \/>\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\/comunicacao-do-slack-para-o-aplicativo\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta\" \/>\n<meta property=\"og:description\" content=\"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\" \/>\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-12-08T13:40:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-18T16:08:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.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=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta\",\"datePublished\":\"2023-12-08T13:40:28+00:00\",\"dateModified\":\"2023-12-18T16:08:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\"},\"wordCount\":2789,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\",\"name\":\"Comunica\u00e7\u00e3o em Tempo Real do Slack (com aplicativo Python) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg\",\"datePublished\":\"2023-12-08T13:40:28+00:00\",\"dateModified\":\"2023-12-18T16:08:22+00:00\",\"description\":\"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta\"}]},{\"@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\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comunica\u00e7\u00e3o em Tempo Real do Slack (com aplicativo Python) - Kinsta\u00ae","description":"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!","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\/comunicacao-do-slack-para-o-aplicativo\/","og_locale":"pt_PT","og_type":"article","og_title":"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta","og_description":"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!","og_url":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-12-08T13:40:28+00:00","article_modified_time":"2023-12-18T16:08:22+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tempo estimado de leitura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta","datePublished":"2023-12-08T13:40:28+00:00","dateModified":"2023-12-18T16:08:22+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/"},"wordCount":2789,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/","url":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/","name":"Comunica\u00e7\u00e3o em Tempo Real do Slack (com aplicativo Python) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","datePublished":"2023-12-08T13:40:28+00:00","dateModified":"2023-12-18T16:08:22+00:00","description":"Saiba como criar uma integra\u00e7\u00e3o perfeita de comunica\u00e7\u00e3o em tempo real com o Slack para seu aplicativo Python hospedado na Kinsta neste guia!","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/slack-notifications-to-app.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/comunicacao-do-slack-para-o-aplicativo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/pt\/topicos\/python\/"},{"@type":"ListItem","position":3,"name":"Comunica\u00e7\u00e3o em Tempo Real com Slack para o seu Aplicativo Python Hospedado na Kinsta"}]},{"@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\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65859","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\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=65859"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65859\/revisions"}],"predecessor-version":[{"id":66095,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65859\/revisions\/66095"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/translations\/es"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65859\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/65860"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=65859"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=65859"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=65859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}