用于web api和rtm api的slack api客户端
slackclient的Python项目详细描述
python slackclient
python slackclient是一个开发工具包,用于在python 3.6及更高版本上与slack web api和实时消息(rtm)api交互。
无论您是为您的团队构建自定义应用程序,还是将第三方服务集成到Slack工作流中,Slack Developer Kit for Python都允许您利用Python的灵活性使您的项目尽快启动和运行。
python slackclient允许与以下对象交互:
- 可在我们的api文档网站上找到slack web api方法
- 与我们的rtm api进行交互
如果您想使用我们的事件API,请检查用于python的slack事件API适配器。
有关令牌和身份验证的详细信息,请参见我们的《身份验证指南》。
目录
- 需求
- 安装
- 入门教程
- Web客户端的基本用法
- 向slack发送消息
- 将文件上载到slack
- rtm客户端的基本用法
- 异步用法
- 将slackclient作为脚本
- 框架中的slackclient
- 高级选项
- 从v1.x迁移
- 支持
要求
此库需要Python3.6及更高版本。如果您需要Python2,请使用我们的slackclient-v1.x。如果您不确定如何检查所使用的python版本,可以使用以下方法进行检查:
< Buff行情>注意:您可能需要在命令之前使用python3
,以确保使用正确的python路径。例如,python3--版本
python --version -- or -- python3 --version
安装
我们建议使用pypi安装slack developer kit for python。
$ pip3 install slackclient
入门教程
我们创建了这个教程,以便在10分钟内构建一个基本的Slack应用程序。它需要一些通用编程知识和python基础知识。它关注与slack的web和rtm api的交互。使用它可以让您了解如何使用此sdk。
阅读教程开始!
Web客户端的基本用法
slack提供了一个web api,使您能够构建以各种方式与slack交互的应用程序。这个开发工具包是一个基于模块的包装器,它使与api的交互变得更容易。我们这里有一个基本的示例,其中包含一些更常见的用法,但是这里有可用方法的完整列表。更详细的示例可以在我们的基本用法指南中找到。
向slack发送消息
最常见的用例之一是向slack发送消息。如果要以应用程序或用户身份发送消息,此方法可以同时执行这两项操作。在我们的示例中,我们指定频道名称,但是建议尽可能使用频道id
。
importosimportslackclient=slack.WebClient(token=os.environ['SLACK_API_TOKEN'])response=client.chat_postMessage(channel='#random',text="Hello world!")assertresponse["ok"]assertresponse["message"]["text"]=="Hello world!"
在此,我们还确保slack返回的响应是成功的,并且消息是我们使用assert
语句发送的消息。
将文件上载到Slack
我们已经将上载文件的过程更改为slack,使之更加简单和直接。现在只需在api调用中直接包含文件的路径,然后以这种方式上传。您可以在这里找到有关此API调用的详细信息
importosimportslackclient=slack.WebClient(token=os.environ['SLACK_API_TOKEN'])response=client.files_upload(channels='#random',file="my_file.pdf")assertresponse["ok"]
rtm客户端的基本用法
实时消息(RTM)API是一个基于WebSocket的API,它允许您实时接收来自Slack的事件并以用户身份发送消息。
如果您希望将事件推送到您的手中,我们建议您改用基于http的事件api。rtm api支持的大多数事件类型在events api中也可用。如果您想改用这个api,可以查看我们的python slackapi适配器。
rtmclient允许应用程序与slack平台的rtm api通信。
这个客户机的事件驱动架构允许您简单地 将回调链接到相应的事件。当事件发生时 此客户端在传递任何 它收到的信息。我们还允许您从回调内部调用我们的Web客户端。
在下面的示例中,我们将观察包含"hello"的消息事件,如果它被接收,我们将调用函数。然后,我们向web客户机发出一个调用,将其发回channel对用户说"嗨"。
importosimportslack@slack.RTMClient.run_on(event='message')defsay_hello(**payload):data=payload['data']web_client=payload['web_client']rtm_client=payload['rtm_client']if'Hello'indata['text']:channel_id=data['channel']thread_ts=data['ts']user=data['user']web_client.chat_postMessage(channel=channel_id,text=f"Hi <@{user}>!",thread_ts=thread_ts)slack_token=os.environ["SLACK_API_TOKEN"]rtm_client=slack.RTMClient(token=slack_token)rtm_client.start()
异步使用
slackclient v2及更高版本使用aiohttp和asyncio来启用异步功能。
库的正常使用不会以异步方式运行它,因此需要一个run_async=true的函数。
在异步模式下,重要的是记住等待或运行/运行直到完成呼叫。
将slackclient作为脚本
importosimportslackimportasyncioloop=asyncio.get_event_loop()client=slack.WebClient(token=os.environ['SLACK_API_TOKEN'],run_async=True)response=loop.run_until_complete(client.chat_postMessage(channel='#random',text="Hello world!"))assertresponse["ok"]assertresponse["message"]["text"]=="Hello world!"
在框架中松弛客户端
如果您使用的是调用异步事件循环的框架,如:sanic/jupyter notebook/etc。
importosimportslackclient=slack.WebClient(token=os.environ['SLACK_API_TOKEN'],run_async=True)asyncdefsend_async_message(channel='#random',text='')response=awaitclient.chat_postMessage(channel=channel,text=text)assertresponse["ok"]assertresponse["message"]["text"]=="Hello world!"
高级选项
python slackclient v2现在在引擎盖下面使用aiohttp
寻找性能提升?安装可选依赖项(aiodns)可能有助于加快客户端解析dns的速度。我们将其作为一个额外的称为"可选":
$ pip3 install slackclient[optional]
对ssl或代理支持感兴趣吗?只需使用其内置的代理参数。您可以将这些选项直接传递到RTM和Web客户端。
importosimportslackclient=slack.WebClient(token=os.environ['SLACK_API_TOKEN'],ssl=sslcert,proxy=proxyinfo)
对于这些代理和ssl设置,我们将始终遵循aiohttp中的标准过程,因此有关更多信息,请查看链接在此处的文档页
从v1迁移
如果您正在从SlackClient的v1.x版迁移到v2.x版,请按照我们的迁移指南进行操作,以确保您的应用程序在更新后继续工作。
支持
如果你被困住了,我们是来帮忙的。以下是帮助您解决问题的最佳方法:
使用我们的github issue tracker来报告错误或请求功能。 访问bot developer hangout以获取使用python的slack developer kit的帮助,或者只是与其他slack开发人员建立联系。