Como construir um slackbot básico: um guia para iniciantes

Vamos tentar automatizar algo [em python]

Vishwa Shah Blocked Unblock Seguir Seguindo 6 de janeiro Foto por Rock'n Roll Monkey em Unsplash

Slackbots: Por que usá-los?

Antes de entrarmos na parte tutorial deste post, vamos dar uma olhada em por que isso pode ser um projeto e uma ferramenta valiosos.

O Slack é uma ferramenta cada vez mais popular para comunicação em equipe. Ele cresceu para incluir plugins para outras ferramentas de gerenciamento de projetos amplamente utilizadas, como JIRA, Google Drive e outros. Qualquer usuário frouxo sabe – quanto mais você pode fazer dentro da conversa, melhor.

Usos comuns para um slackbot variam de um notificador simples para quando uma tarefa é concluída (como uma compilação de teste ou quando o almoço está pronto) para bots interativos baseados em botões que executam comandos à vontade do usuário. Você pode criar mecanismos de pesquisa, bots de conversação e muito mais.

Configurando um ambiente de programação python

Se você é um usuário do Windows e ainda não usou o Python, precisará instalá- lo. Usuários de Linux / Mac: Unix vem com python!

Uma vez instalado, python3 seu terminal e digite python ou python3 (se você tiver várias instalações) para ter certeza de que funciona e está lá.

Verifique também se você tem um bom editor de texto para código: sublime e atom são ótimas opções.

Opcional: Também pode ser útil trabalhar em um ambiente virtual – é uma boa prática quando você tem muitas dependências.

 instalar pip virtualenv 
tutorial virtualenv
tutorial de origem / bin / activate

Você também deve bifurcar o repositório GitHub do tutorial e clonar em sua máquina local, já que estaremos usando esse código como uma estrutura para este tutorial.

Para fazer isso, vá para o repositório e clique em Fork no canto superior direito. O repositório bifurcado deve ser seu nome de usuário / slackbot-tutorial. Bata no Clone or download verde Clone or download no botão de Clone or download à direita, abaixo da barra de estatísticas, e copie o URL. Retorne ao terminal para clonar o repositório:

 cd Desktop / 
git clone https://github.com/yourusername/slackbot-tutorial.git
cd slackbot-tutorial /
sublime. (ou abra seu editor de texto e abra este diretório)

Apps folgados

Existem duas maneiras de criar seu slackbot: bots autônomos ou aplicativos Slack. Os aplicativos permitem uma variedade maior de funcionalidades daqui para frente e é a rota recomendada do Slack para criar um usuário de bot.

Vá para https://api.slack.com/apps e clique em Create New App no canto superior direito. Dê um nome e escolha um espaço de trabalho onde você pode criar um canal para testar seu bot. Você sempre pode reconfigurar seu bot para outro espaço de trabalho mais tarde, ou até mesmo publicá-lo no Slack App Directory.

A primeira coisa que você vai querer fazer é pegar o token do bot. Quando você chegar à página acima, clique em Bots e crie um usuário de bot. Os padrões são bons, embora você possa renomear seu bot se desejar.

Agora, para obter seus tokens, você precisa ir para OAuth & Permissions na barra lateral esquerda.

Aqui, você poderá Install the App to the Workspace e gerar os tokens necessários. Como regra geral, os tokens de bot começam com xoxb-.

Você também deseja o token de verificação , localizado em Informações básicas> Credenciais do aplicativo.

Agindo como seu bot

Agora você tem as credenciais necessárias para fazer chamadas de API e agir como seu bot. Para testar isso, inicie um terminal e execute-o (com o token e o nome do canal corretos):

 curl -X POST  
-H 'Autorização: portador xoxb-your-token'
-H 'Tipo de conteúdo: aplicativo / json; charset = utf-8'
--data '{"channel": "# test", "text": "Olá, Slack!"}'
https://slack.com/api/chat.postMessage

Se você for a esse canal em seu espaço de trabalho, agora deverá ver uma mensagem do seu bot! Você acabou de fazer uma solicitação HTTP POST – pediu a um servidor para postar uma mensagem em algum lugar.

Programando o Bot

Queremos fazer o acima programaticamente. Existem algumas maneiras diferentes de configurar um slackbot. Eu cobrirei o seguinte:

  • Acionado periodicamente (em um horário) para dizer algo
  • / slash comandos

O segundo requer um servidor em execução, enquanto o primeiro não.

Mensagens agendadas

Digamos que você queira enviar periodicamente uma mensagem em algum lugar – talvez toda segunda-feira de manhã. Vá para o editor de texto onde você abriu o slackbot-tutorial .

Você deve ver um arquivo scheduled.py . Dê uma olhada: sendMessage é uma função que dispara a chamada da API para slack e posta uma mensagem. Na parte inferior, você verá o método principal: o que é executado quando você executa o script. Aqui, você verá algumas coisas para observar:

  • SLACK_BOT_TOKEN não está armazenado no arquivo. Em vez disso, o script obtém do SO – como? Execute a export SLACK_BOT_TOKEN="xoxb-your-token" no seu terminal para definir esta variável.
  • um agendador é usado aqui e há um loop infinito que verifica eventos no agendador. Por padrão aqui, agendei a função sendMessage para ser chamada a cada minuto.

Para testar isso, volte ao terminal onde você está no diretório slackbot-tutorial e execute

 export SLACK_BOT_TOKEN = "xoxb-seu-token" 
python scheduled.py

Você deve ver as mensagens de log impressas. Deixe correr por alguns minutos e veja as mensagens aparecerem no Slack! Se você não tiver um canal de teste chamado #test , altere isso no script.

Esta é, naturalmente, uma implementação super básica de um remetente de mensagem programada – você pode realmente fazer isso apenas com slackbot /remind #test “Hello, Slack!” every Monday at 9am .

O verdadeiro poder aqui é que você pode substituir em qualquer função para sendMessage , aproveitando o poder de interface com serviços externos através de APIs, fazendo matemática, etc e, em seguida, construir uma mensagem para postar.

Comandos da barra

Este requer um pouco mais de configuração – volte para as configurações do seu aplicativo > Comandos do Slash. Crie um novo comando de barra: por exemplo, /test . Para o URL de solicitação, você precisará implantar esse servidor da Web (eu uso Heroku) ou executar uma instância nginx local para testá-lo. Este último irá executá-lo localmente. Obter o nginx configurado aqui .

No slashCommand.py código inicial, procure por slashCommand.py para começar a entender esse método. Para iniciar o servidor, execute o python server.py . O URL de solicitação para colocar no Slack será dado pela sua instância nginx e pelo @app.route no seu código. Você deve ser capaz de testar os comandos slash no seu espaço de trabalho do Slack.

Seguindo em frente

Agora você tem um slackbot muito básico que opera em um comando ou é executado de vez em quando. Seja criativo com o modo como você o usa! Pense no que mais você pode vincular esse esqueleto para torná-lo mais útil.

Outras maneiras pelas quais seu bot pode responder

  1. Ações / respostas podem ser desencadeadas por menções ou certas frases. Isso requer a execução de um servidor e a escuta das mensagens em algum lugar.
  2. Você bot poderia ser conversacional e pode contribuir para tópicos. Confira alguns PNL para começar a ter uma conversa inteligível! Word2Vec + TensorFlow ou Keras podem ser um lugar para começar. O DialogFlow também é ótimo.
  3. Vincule-o a algumas outras APIs. Talvez você queira interagir com uma planilha do Google e executar alguns cálculos. Você pode querer enviar a outros usuários uma mensagem com base em algumas ações. Integrar botões Talvez você queira acionar mensagens com base em outra coisa.