A plataforma Slack oferece várias APIs para criar aplicativos. Cada API do Slack entrega parte dos recursos da plataforma, para que você possa escolher apenas aqueles que atendem às suas necessidades. Este SDK oferece um pacote correspondente para cada uma das APIs do Slack. Eles são pequenos e poderosos quando usados de forma independente e trabalham perfeitamente quando usados juntos também.
A documentação abrangente sobre o uso do Slack Python pode ser encontrada em https://tools.slack.dev/python-slack-sdk/
Esteja você criando um aplicativo personalizado para sua equipe ou integrando um serviço de terceiros em seus fluxos de trabalho frouxos, o Slack Developer Kit para Python permite alavancar a flexibilidade do Python para colocar seu projeto em funcionamento o mais rápido possível.
O Python Slack SDK permite a interação com:
slack_sdk.web
: para chamar os métodos da API da webslack_sdk.webhook
: para utilizar os webhooks e response_url
de entrada em cargas úteisslack_sdk.signature
: para verificar solicitações de entrada do servidor API Slackslack_sdk.socket_mode
: Para receber e enviar mensagens sobre conexões do modo de soqueteslack_sdk.audit_logs
: Para utilizar as APIs de logs de auditoriaslack_sdk.scim
: para utilizar APIs SCIMslack_sdk.oauth
: para implementar o fluxo Slack Oauthslack_sdk.models
: para construir componentes da interface do kit de bloco usando construtores fáceis de usarslack_sdk.rtm
: para utilizar a API RTMSe você deseja usar nossa API de eventos e recursos de interatividade, verifique o parafuso da Biblioteca Python. Detalhes sobre os tokens e autenticação podem ser encontrados em nosso guia de autenticação.
Você está procurando por SlackClient? O site está ao vivo aqui como antes. No entanto, o projeto SlackClient está no modo de manutenção agora e este slack_sdk
é o sucessor. Se você tiver tempo para fazer uma migração para o SLACK_SDK V3, siga nosso guia de migração para garantir que seu aplicativo continue trabalhando após a atualização.
Esta biblioteca requer Python 3.6 e acima. Se você precisar do Python 2, use nosso SlackClient - v1.x. Se você não tiver certeza de como verificar em que versão do Python você está, pode verificar usando o seguinte:
NOTA: Pode ser necessário usar
python3
antes dos seus comandos para garantir que você use o caminho Python correto. Por exemplo,python3 --version
python --version
-- or --
python3 --version
Recomendamos o uso do Pypi para instalar o Slack Developer Kit para Python.
$ pip install slack_sdk
Criamos este tutorial para criar um aplicativo Basic Slack em menos de 10 minutos. Requer algum conhecimento geral de programação e o básico do Python. Ele se concentra na interação com a Slack Web API e RTM API. Use -o para dar uma idéia de como usar este SDK.
Leia o tutorial para começar!
O Slack fornece uma API da Web que oferece a capacidade de criar aplicativos que interagem com o Slack de várias maneiras. Este kit de desenvolvimento é um invólucro baseado em módulo que facilita a interação com essa API. Temos um exemplo básico aqui com alguns dos usos mais comuns, mas uma lista completa dos métodos disponíveis estão disponíveis aqui. Exemplos mais detalhados podem ser encontrados em nosso guia.
Um dos casos de uso mais comuns é enviar uma mensagem para o Slack. Se você deseja enviar uma mensagem como seu aplicativo ou como usuário, esse método pode fazer as duas coisas. Em nossos exemplos, especificamos o nome do canal, no entanto, é recomendável usar o channel_id
sempre que possível. Além disso, se o usuário de bot do seu aplicativo ainda não estiver em um canal, convide o usuário do bot antes de executar o snippet de código (ou adicionar chat:write.public
to Bot token scopes para postar em qualquer canal público).
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
response = client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
# Also receive a corresponding status_code
assert isinstance ( e . response . status_code , int )
print ( f"Received a response status_code: { e . response . status_code } " )
Aqui também garantimos que a resposta de volta do Slack seja bem -sucedida e que a mensagem seja a que enviamos usando a instrução assert
.
Mudamos o processo de fazer upload de arquivos para Slack para ser muito mais fácil e direto. Agora você pode incluir um caminho para o arquivo diretamente na chamada da API e fazer upload dessa maneira.
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
filepath = "./tmp.txt"
response = client . files_upload_v2 ( channel = 'C0123456789' , file = filepath )
assert response [ "file" ] # the uploaded file
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
Mais detalhes sobre o método files_upload_v2
podem ser encontrados aqui.
AsyncWebClient
neste SDK requer AIOHTTP sob o capô para solicitações assíncronas.
import asyncio
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
async def post_message ():
try :
response = await client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
asyncio . run ( post_message ())
Se você estiver usando uma estrutura que invocava o loop de eventos Asyncio, como: notebook Sanic/Jupyter/etc.
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
# Define this as an async function
async def send_to_slack ( channel , text ):
try :
# Don't forget to have await as the client returns asyncio.Future
response = await client . chat_postMessage ( channel = channel , text = text )
assert response [ "message" ][ "text" ] == text
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
raise e
from aiohttp import web
async def handle_requests ( request : web . Request ) -> web . Response :
text = 'Hello World!'
if 'text' in request . query :
text = " t " . join ( request . query . getall ( "text" ))
try :
await send_to_slack ( channel = "#random" , text = text )
return web . json_response ( data = { 'message' : 'Done!' })
except SlackApiError as e :
return web . json_response ( data = { 'message' : f"Failed due to { e . response [ 'error' ] } " })
if __name__ == "__main__" :
app = web . Application ()
app . add_routes ([ web . get ( "/" , handle_requests )])
# e.g., http://localhost:3000/?text=foo&text=bar
web . run_app ( app , host = "0.0.0.0" , port = 3000 )
Você pode fornecer um contexto SSL personalizado ou desativar a verificação passando a opção ssl
, suportada pelo RTM e pelo Web Client.
Para solicitações assíncronas, consulte a documentação AIOHTTP SSL.
Para solicitações de sincronização, consulte a documentação URLLIB SSL.
Um proxy é suportado ao fazer solicitações assíncronas, passe na opção proxy
, suportada pelo RTM e pelo Web Client.
Para solicitações assíncronas, consulte a documentação de proxy AIOHTTP.
Para solicitações de sincronização, a definição da variável HTTPS_PROXY
ENV ou a opção proxy
funciona.
Usando o cliente assíncrono e procurando um impulso de desempenho? A instalação das dependências opcionais (AIODNs) pode ajudar a acelerar o DNS resolvendo pelo cliente. Nós o incluímos como um extra chamado "Opcional":
$ pip install slack_sdk[optional]
import os
from slack_sdk import WebClient
from ssl import SSLContext
sslcert = SSLContext ()
# pip3 install proxy.py
# proxy --port 9000 --log-level d
proxyinfo = "http://localhost:9000"
client = WebClient (
token = os . environ [ 'SLACK_BOT_TOKEN' ],
ssl = sslcert ,
proxy = proxyinfo
)
response = client . chat_postMessage ( channel = "#random" , text = "Hello World!" )
print ( response )
Se você estiver migrando do SlackClient v2.x de slack_sdk para v3.x, siga nosso guia de migração para garantir que seu aplicativo continue trabalhando após a atualização.
Confira o guia de migração aqui!
Se você estiver migrando do v1.x do SlackClient para o V2.X, siga nosso guia de migração para garantir que seu aplicativo continue trabalhando após a atualização.
Confira o guia de migração aqui!
Se você ficar preso, estamos aqui para ajudar. A seguir, são as melhores maneiras de obter assistência trabalhando com seu problema:
Use nosso rastreador de problemas do GitHub para relatar bugs ou solicitar recursos. Visite a Comunidade Slack para obter ajuda para usar o Slack Developer Kit para Python ou apenas se relaciona com seus colegas desenvolvedores de Slack.
Congratulamo -nos com contribuições de todos! Confira o guia do nosso colaborador sobre como contribuir de maneira útil e colaborativa.