1.为什么选择Slack平台作为通知渠道

Slack毕竟作为Salesforce的下属公司,至少是不用担心跑路的。并且Slack的api较为开放,可以利用bot api向频道内推送消息。甚至可以在频道或私聊里控制bot。Telegram Bot虽然也能够做到这点,但毕竟在境内被墙了,没有Slack来的好用。同时Slack的网页版较Telegram的好用点,类Discord和钉钉风格,因此使用Slack

2.注册一个Slack账号

打开 https://slack.com/intl/zh-cn/ 注册一个账号,工作区名字可以随便填,其中正在讨论的话题就是频道名字,这些都可以后期修改。

在注册完成后应该像是这样。

slack_welcome.png

3.创建一个Slack应用

打开 https://api.slack.com/apps 选择绿色的Create an App

slack_apihome_Before.png

选择从scratch创建App

slack_apihome_ChooseCreateAppWay

填写你App的基本信息,App名字可以在之后修改,Workspace选择你刚才创建的。

slack_apihome_AppBasicInfoM.png

选择Bots作为我们的App模版

slack_apihome_AppType.png

刚创建的App没有被我们授予任何权限,我们要找到App Home菜单(通常创建后会自动跳转过去,可直接看下面寻找Review Scopes to Add部分),没有的话回到 https://api.slack.com/apps 寻找

slack_apihome_findyourapp.png

本例中以TestBot作为测试,这里以你创建的App名称为准。

点击后在左侧菜单找到App Home。然后选择Review Scopes to Add

slack_apihome_FindAppHomeMenu.png

在打开的Scope页面里找到Bot Token Scopes中的Add an OAuth Scope,我们要为Bot添加权限,才能发送消息到话题里

slack_apihome_Scope_resize.png

添加chat:write权限

slack_apihome_writePermission.png

然后回到Basic Information(在左侧菜单的Settings里),选择Install to Workspace

slack_apihome_AppBasicInfoM2.png

在接下来的授权页面点击允许

slack_appOauth_add2Workspace.png

看到Success就表明添加成功了。

slack_apihome_add2WorkspaceSuccess.png

4.准备Python环境

本次Slack Bot集成使用Slack官方提供的Python SDK,首先你需要先安装Python,Python的安装教程不在这里重复给出,毕竟网上已有很多资料。

打开你的终端(Windows为命令提示符)输入

1
pip install slack_sdk

出现

1
Successfully installed slack-sdk-3.21.3

提示时就大功告成了。

5.开始编写程序

这次我们使用Slack官方给的示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import os
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

client = WebClient(token="Your_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']}")

注意:将代码中的Your_Token更换为你自己的Bot Token,Bot Token可在OAuth & Permissions中的OAuth Tokens for Your Workspace找到。(如下图所示)#random更换为你的话题名,同时在执行前先确认Bot是否已经加入到话题。

slack_FindBotToken.jpg

如何把Bot加入到话题 第一步:确认Bot已经加入到Workspace,没有的重新点击Install to Workspace slack_ConfirmBotAdded.png 第二步:点击频道名称,找到应用菜单 slack_AddBotToChannel_1.png 第三步:添加你的Bot slack_AddBotToChannel_2.png 最后回到频道,看见此外 xxx 已加入说明Bot添加成功

点击运行后,Slack工作区中你所选的话题下就会多出一条消息

slack_HelloWorld.png

这表明你的Bot现在就可用了。后续看时间再继续写吧。

6.常见问题

  • Q1.终端输出Got an error: invalid_auth,且消息未发送成功
  • A1.通常是Bot Token填写有误,Bot Token通常是4-13-13-24位形式的,请参照上文寻找

参考来源

Slack Python SDK: https://github.com/SlackAPI/python-slack-sdk