Maximizando a produtividade: o poder dos SlackBots
O Slack se tornou uma plataforma de comunicação em qualquer lugar para equipes modernas, oferecendo um espaço centralizado para mensagens, compartilhamento de arquivos e colaboração. Mas você sabia que pode estender ainda mais a funcionalidade do Slack com a ajuda de bots? Os SlackBots são ferramentas automatizadas que podem executar uma ampla gama de tarefas, desde o gerenciamento de sua agenda até o fornecimento de atualizações em tempo real sobre suas tarefas. Neste artigo, mergulharemos no mundo dos SlackBots, explorando seus recursos e como eles podem ser usados para aumentar a produtividade, otimizar fluxos de trabalho e aprimorar a experiência geral do Slack. Seja você um usuário avançado do Slack ou apenas começando, este guia fornecerá tudo o que você precisa saber sobre como aproveitar o poder dos SlackBots para levar a comunicação e a colaboração de sua equipe para o próximo nível.
Se você deseja criar um SlackBot personalizado que possa automatizar tarefas, enviar notificações ou interagir com outros aplicativos, você está no lugar certo! Exploraremos como usar a API Slack e a estrutura Slack Bolt em Python para criar um bot totalmente funcional que pode fazer tudo isso e muito mais. Slack Bolt é uma biblioteca Python que simplifica o processo de criação e execução de SlackBots, fornecendo uma interface limpa e intuitiva para interagir com a API do Slack. Com o Slack Bolt, você pode criar gerenciadores de mensagens personalizados de maneira rápida e fácil, configurar ouvintes de eventos e criar componentes interativos, como botões e menus. Orientaremos você pelas etapas de criação de um SlackBot usando o Slack Bolt em Python, desde a configuração do ambiente de desenvolvimento até a implantação do bot na produção.
Você pode encontrar todos os códigos usados neste tutorial aqui .
Requisitos :
- Python3
- Área de Trabalho Slack
- Python Slack CDK, Slack-Bolt, Flask.
pip install slack-cdk
pip install slack-bolt
pip install flask
- Vá parahttps://api.slack.com, em seguida, Criar novo aplicativo.
- Selecione “Do zero” ou você pode encontrar um manifesto no Projeto GitHub .
- No manifesto, definimos os escopos e outras configurações do nosso bot.
- Depois de adicionar esses escopos, role para cima e clique em ' Instalar no espaço de trabalho '.
- Após a instalação do aplicativo, você receberá um ' Bot User OAuth Token '. Copie e salve em algum lugar.
Existem três tipos principais de tokens no Slack:
- Tokens de bot — são usados pelos SlackBots para autenticação com a API do Slack e acesso aos recursos e permissões concedidas ao bot. As strings de token de bot começam com
xoxb-. - Tokens de usuário — são emitidos em nome de um usuário específico do Slack e fornecem acesso aos recursos e permissões do usuário em um espaço de trabalho específico. As strings de token do usuário começam com
xoxp-. - Tokens no nível do aplicativo: os tokens no nível do aplicativo são usados pelos aplicativos do Slack para autenticação com a API do Slack e acesso a recursos e permissões concedidos ao aplicativo. As strings de token no nível do aplicativo começam com
xapp-. - Por fim, precisamos adicionar nosso aplicativo a um ou mais canais onde ele terá todos os acessos que adicionamos anteriormente. Vou adicionar meu aplicativo a '#slackmate'.
O bot que temos atualmente não pode fazer nada, precisamos adicionar algumas funcionalidades a ele. Para esta parte, usaremos o Slack-Bolt.
Aqui está um Slack-Bolt simples em Python que responde à mensagem de um usuário com um “Olá, Mundo!” resposta:
# import libraries
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# New instance of the Slack-Bolt app
slackmate_app = App(token=os.environ["SLACK_BOT_TOKEN"])
# Message Handler Function
@slackmate_app.event("message")
def handle_message(payload, say):
# check if the message contains the word "hello"
if "hello" in payload["text"].lower():
# send a response message to the user
say("Hello, World!")
Em seguida, definimos uma função de manipulador de mensagens que é acionada sempre que um usuário envia uma mensagem em um canal do qual o bot é membro. A função handler recupera o texto da mensagem e verifica se contém a palavra “hello”. Em caso afirmativo, a função envia um “Hello, World!” mensagem de resposta de volta ao usuário usando a say()função fornecida pelo Slack-Bolt.
As instruções ife elifsão apenas uma maneira simples de verificar o conteúdo das mensagens recebidas, mas você pode usar qualquer outro código Python para manipular mensagens com base em seu conteúdo, contexto ou qualquer outro atributo.
Por exemplo, você pode usar expressões regulares para corresponder padrões no texto da mensagem ou pode usar modelos de aprendizado de máquina para classificar mensagens com base em seu conteúdo ou intenção. Você também pode usar APIs externas para executar ações com base no conteúdo da mensagem, como traduzir o texto da mensagem ou procurar informações em um banco de dados.
Aqui está um exemplo de como usar expressões regulares para combinar padrões no texto da mensagem.
@slackmate_app.event("message")
def handle_message(payload, say):
chat_message = payload["text"]
thread_message = payload["ts"] # thread reply
if re.match(r"\b(hello|hi|hey|salut) slackmate\b", chat_message, re.IGNORECASE):
say(f"Hi <@{payload['user']}>", thread_ts=thread_message)
elif re.match(r"\bhow are you\b", chat_message, re.IGNORECASE):
say("I'm doing great, thanks for asking!",thread_ts=thread_message)
elif re.match(r"\b something other\b", chat_message, re.IGNORECASE):
say("test", thread_ts=thread_message)
Você pode filtrar eventos de mensagens recebidas para um ID de canal específico verificando o channelatributo do objeto de evento. Se o evento for do canal especificado, a função responderá com base no conteúdo da mensagem como antes. Se o evento for de um canal diferente, a função não fará nada.
def handle_message(payload, say):
# Filter messages to a specific channel ID
if payload["channel"] == "CHANNEL_ID":
API de eventos do Slack
A API do Slack oferece suporte a vários tipos de eventos que seu app pode ouvir e responder. Aqui estão alguns dos tipos de eventos mais comuns:
message: acionado quando um usuário envia uma mensagem em um canal ou uma mensagem direta para o aplicativo.app_mention: Acionado quando o aplicativo é mencionado em uma mensagem, seja em um canal ou em uma mensagem direta.reaction_added: acionado quando um usuário adiciona uma reação a uma mensagem.member_joined_channel: Acionado quando um novo usuário ingressa em um canal.
Você pode encontrar uma lista completa de tipos de eventos na documentação da API do Slack:https://api.slack.com/events.
Agora, esta é uma parte complicada, mas necessária. Precisamos aceitar e enviar solicitações do Slack, o que significa que precisamos criar um aplicativo que possa se comunicar com o mundo exterior. Aqui temos 2 opções: podemos usar uma VM em nuvem, como a instância do EC2 na AWS, ou usar o ngrok , que é usado para expor um servidor de desenvolvimento ao mundo externo.
Mas… não vamos esquecer a opção mais simples…
Podemos receber cargas de aplicativos por meio de Websockets em vez de URLs de solicitação.
Modo Soquete
O Socket Mode é um recurso da plataforma do Slack que permite criar aplicativos e bots do Slack que usam uma conexão WebSocket para se comunicar com o Slack. Com o Socket Mode, você pode criar aplicativos Slack que não exigem um URL público ou um servidor da web para funcionar. Em vez disso, seu aplicativo se conecta ao Slack por meio de um WebSocket usando um token seguro. Isso facilita a criação de bots e apps Slack leves e sem servidor que podem ser executados em qualquer plataforma, inclusive no local ou atrás de um firewall.
Para usar o Socket Mode em nosso app Slack, no manifesto temos:
socket_mode_enabled: true
Por fim, iniciamos o aplicativo usando o manipulador Socket Mode, passando nosso token de aplicativo e o ID do cliente.
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os
import re
import logging
from modules import test
logging.basicConfig(level=logging.INFO)
slackmate_app = App(token=os.environ["SLACK_BOT_TOKEN"])
@slackmate_app.event("message")
def handle_message(payload, say):
chat_message = payload["text"]
thread_message = payload["ts"] # thread reply
if re.match(r"\b(hello|hi|hey|salut) slackmate\b", chat_message, re.IGNORECASE):
say(f"Hi <@{payload['user']}>", thread_ts=thread_message)
elif re.match(r"\bhow are you\b", chat_message, re.IGNORECASE):
say("I'm doing great, thanks for asking!",thread_ts=thread_message)
if re.match(r"\b something other\b", chat_message, re.IGNORECASE):
text = test.Test("test")
say(test.test(), thread_ts=thread_message)
@slackmate_app.event("app_mention")
def handle_mention(payload, say):
thread_message = payload["ts"]
say(f"Hi <@{payload['user']}>", thread_ts=thread_message)
if __name__ == "__main__":
handler = SocketModeHandler(app_token=os.environ["SLACK_APP_TOKEN"], app=slackmate_app)
handler.start()
Replies from SlackMate
Para obter dados de uma API, seu SlackBot precisará enviar uma solicitação ao endpoint da API e, em seguida, analisar a resposta.
Por exemplo, digamos que você queira criar um SlackBot que recupere informações meteorológicas de um determinado local. Você pode usar uma API como OpenWeatherMap para recuperar os dados meteorológicos e, em seguida, usar o Python para fazer a solicitação da API e analisar a resposta.
Ao criar um SlackBot, é importante ter em mente as necessidades e preferências de sua equipe. Pense nas tarefas que consomem mais tempo ou são repetitivas e considere como um SlackBot pode ajudar a simplificar esses fluxos de trabalho. Além disso, certifique-se de seguir as práticas recomendadas de segurança, privacidade e manuseio de dados para garantir que seu SlackBot seja seguro e compatível.
No geral, os SlackBots podem ser uma adição valiosa ao espaço de trabalho Slack de qualquer equipe e, com um pouco de criatividade e conhecimento de programação, você pode criar um SlackBot que atenda às necessidades exclusivas de sua equipe.
Espero que seja útil, encontre novamente com outro tópico interessante.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)