SQL Server – Como fazer uma integração do banco de dados com o Slack e enviar mensagens utilizando Python e sp_execute_external_script

Visualizações: 877
Tempo de Leitura: 7 minutos

Faaaaala pessoal!!
Hoje estou bastante animado por causa desse post. Meu primeiro utilizando Python no SQL Server 2017, e podem esperar bem mais por aí.. No dia 04 de fevereiro de 2017, eu havia liberado o post SQL Server – Como fazer uma integração do banco de dados com o Slack e enviar mensagens utilizando o CLR (C#) e desta vez eu volto aqui para lhes mostrar como realizar essa mesma integração utilizando apenas recursos nativos do SQL Server 2017.

Introdução

Como vocês devem saber, o SQL 2017 trouxe uma série de novidades e novos recursos para o nosso dia a dia, e uma delas, foi a possibilidade de executar scripts escritos em Python pelo SQL Server, tanto para análises estatísticas (muito utilizado por cientistas de dados e estatísticos), tanto para realizar tarefas do dia a dia.

Não conheço o Slack

Visualizar mais informações

O que é o Slack?

Para quem não conhece, o Slack é um dos comunicadores corporativos mais famosos e utilizados em todo o mundo, principal concorrente do Ryver e tem a proposta de substituir a comunicação via e-mail por grupos privados e públicos (dentro do time) focados em determinadas equipes e/ou assuntos. Você pode criar grupos públicos, onde toda sua equipe pode interagir e colaborar e grupos privados para cada setor, onde somente quem está no grupo pode visualizar as mensagens.

O Slack permite que você responda e-mails pela própria ferramenta, envio e compartilhamento de arquivos, envio de mensagens privadas, instalação de diversos plugins para adicionar novos recursos e muito mais.

No plano gratuito, a busca de mensagens recupera apenas as últimas 10 mil mensagens, o limite de armazenamento é de 5 GB e mais algumas limitações que você pode verificar neste link.

Onde e como posso usar o Slack na minha empresa?

Esse recurso é especialmente útil para criar equipes na sua empresa e gerar alertas e monitoramentos por equipe, onde cada equipe recebe apenas os alertas referentes às suas atividades. Além disso, você pode utilizar os grupos abertos para enviar informativos e notificações que interessam para a empresa toda. Tudo isso, sem custo algum e você pode receber por e-mail, visualizar na Web e no seu smartphone.

Uma outra forma legal de se utilizar o Slack, é enviar acompanhamento de metas de vendas para o setor de comercial, de forma que os gerentes regionais e locais possam acompanhar a performance da equipe de vendas em tempo real, sem ter que ficar consultando e abrindo relatórios, onde quer que eles estejam, mesmo fora da empresa.

Caso sua empresa adote o Slack, o setor de RH pode utilizar o serviço para enviar mensagens e informativos para os colaboradores. Enviar mensagens de natal, uma mensagem especial no aniversário do colaborador, etc.

Enfim, a vantagem do Slack é que ele pode ser enviado de várias formas diferentes (E-mail, Web, Smartphone), onde quer que você esteja, dentro ou fora da empresa e representa uma grande revolução na forma em que as pessoas interagem com as informações.

Utilizo o Slack onde eu trabalho como ferramenta de comunicação, monitoramento e alertas das rotinas de TI, como falhas em jobs críticos, problemas em backups, corrupções de bases, queries lentas, locks, etc. Sempre que alguma rotina crítica falha, é enviado um e-mail interno e uma notificação via Slack, onde chega uma notificação Push no meu celular (igual do Whatsapp) e onde quer que eu esteja, tomo conhecimento dessa falha.

Como adicionar usuários ao Slack

O primeiro passo para criar a integração, é criar sua conta no Slack, acessando este link. Uma vez criada, você receberá um e-mail para logar na sua conta.

Tela inicial do Slack, já com alguns grupos que criei para este post

Para adicionar novos usuários, basta clicar no menu (Seu nome) e selecionar a opção “Invite people”

Você pode adicionar seus contatos da usa conta do Google, importar vários contatos no formato CSV e outros. Uma vez que você convide outras pessoas, ela receberão um link para se juntar à sua equipe e após finalizar o cadastro, elas já poderão visualizar os dados pelo navegador Web ou aplicativo para celular.

Como habilitar o Python no SQL Server 2017

Para habilitar o Python no SQL Server 2017 você irá precisar ativar o recurso external scripts enabled, com o comando abaixo:

Resultado:
Configuration option 'external scripts enabled' changed from 0 to 1. Run the RECONFIGURE statement to install.

Uma vez executado, você precisará reiniciar o serviço do SQL Server 2017 no Configuration Manager:

Agora é só reiniciar o serviço, conforme a imagem abaixo:

Recomendo também reiniciar o serviço “SQL Server Launchpad”, uma vez que quando tentei executar o script Python, recebi essa mensagem de erro:

Msg 39011, Level 16, State 1, Line 10
SQL Server was unable to communicate with the LaunchPad service. Please verify the configuration of the service.

Como instalar a biblioteca Slacker

Para a nossa integração com o Slack pelo SQL Server, vamos utilizar a biblioteca Slacker. Para a sua instalação, abra o Prompt de comando como Administrador:

Uma vez aberto, basta digitar o comando abaixo:

Caso você não saiba o caminho da sua instalação, você pode descobrir facilmente com esse comando aqui:

Resultado:

Após digitar os comandos acima, a biblioteca terá sido instalada com sucesso:

Como ativar a API do Slack

Para que seja possível enviar as mensagens pelo Slack, precisamos criar uma integração customizada. Para isso acesse a URL https://api.slack.com/docs/oauth-test-tokens logado na conta do usuário que servirá como BOT e fará o envio das mensagens automáticas.

Clique no botão “Create token”.

Copie o token gerado para a sua aplicação. É com esse código enorme (76 caracteres no meu caso) que você será fará a autenticação com a API e poderá enviar suas mensagens através da API.

Como enviar mensagens no Slack pelo SQL Server

Agora que já expliquei o que é o Slack, habilitamos os scripts Python na instância e você já gerou o seu token de acesso, podemos começar a enviar mensagens no Slack através do SQL Server 2017.

Versão simples (apenas formatação)

Código da Stored Procedure que faz o envio das mensagens:

Exemplo de uso para mensagem privada para outro usuário:

Resultado:

Exemplo de uso para mensagem em um canal:

Resultado:

Versão completa (com cores, links e formatações)

Código da Stored Procedure que faz o envio da mensagem:

Exemplos de uso

Envio de mensagens com formatação

Envio de mensagens com Links externos
Ao clicar no título da mensagem, você será direcionado para a URL https://www.dirceuresende.com/blog 🙂

Envio de mensagem com quebra de linha

Para saber mais sobre formatação no Slack, acesse este link.

E é isso aí, pessoal!
Espero que tenham gostado desse post e até a próxima!