前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Slack 创建聊天机器人

Slack 创建聊天机器人

原创
作者头像
IT蜗壳-Tango
发布2024-11-21 00:26:08
发布2024-11-21 00:26:08
8300
代码可运行
举报
运行总次数:0
代码可运行

必备工具

  1. 非国内网络:这点很重要。如果是国内网络,则没有办法常见工作区
  2. 一个非QQ的邮箱:可以正常接收邮件
  3. 一个服务器:用来接收消息和回复消息

本地服务我没有测试,理论上是可行的,只要知道公网IP就行。

  1. Python:用来搭建后端服务

注册Slack

官网网站:slack.com/signin

image-20241120234122089
image-20241120234122089

输入邮箱

image-20241120234157157
image-20241120234157157

输入收到的验证码

image-20241120234234001
image-20241120234234001

创建一个工作区

image-20241120234259153
image-20241120234259153
image-20241120234315133
image-20241120234315133

如果是国内网络,这里则会提示不能创建工作区。

输入团队名称

image-20241120235122583
image-20241120235122583

输入昵称

image-20241120235150981
image-20241120235150981

如果没有要邀请的人,直接点击跳过

image-20241120235243741
image-20241120235243741
image-20241120235256519
image-20241120235256519

填写欢迎词

image-20241120235316509
image-20241120235316509

选择免费套餐

image-20241120235353362
image-20241120235353362
image-20241120235416337
image-20241120235416337

这样就完成了账号的注册和工作区的创建。

创建一个 Slack 应用

官方网站:https://api.slack.com/apps

image-20241120235538393
image-20241120235538393
  1. 登录到 Slack API Dashboard.
  2. 点击 "Create an App" 按钮。
  • 选择 "From scratch"
    image-20241120235731517
    image-20241120235731517
  • 输入应用名称,例如 Demo
  • 选择要安装应用的工作区,然后点击 "Create App"
image-20241120235810267
image-20241120235810267

2. 配置 Bot Token 和权限

  1. 在应用配置页面,点击左侧的 "OAuth & Permissions"
  2. 滑动到 Scopes 区域:
  • Bot Token Scopes 下,添加以下权限:
    • channels:history(读取公开频道的消息)
    • groups:history(读取私有频道的消息)
    • im:history(读取直接消息)
    • mpim:history(读取多方直接消息)
    • chat:write(允许发送消息)
  • 根据需要添加其他权限。
    image-20241120235901270
    image-20241120235901270
    image-20241121000020449
    image-20241121000020449
  1. 点击顶部的 "Install to Workspace" 按钮,然后在弹出的授权页面点击 "Allow"
    image-20241121000053591
    image-20241121000053591
image-20241121000115149
image-20241121000115149
  1. 授权完成后,你会获得一个 Bot User OAuth Token,例如 xoxb-...。保存此令牌。
image-20241121000145061
image-20241121000145061

3. 配置事件订阅

  1. 在应用配置页面,点击左侧的 "Event Subscriptions"
  2. 启用 "Enable Events"
image-20241121000231830
image-20241121000231830
  1. Request URL 中填写你的 Web 服务地址(例如:https://yourdomain.com/slack/events)。
  • Slack 会发送一个验证请求到该 URL,确保你的服务能够响应。

这一步暂时先跳过,后台代码在文章下面。

  1. 添加事件订阅:
  • 点击 Subscribe to Bot Events,添加以下事件:
    • message.channels(公开频道的消息)
    • message.groups(私有频道的消息)
    • message.im(直接消息)
    • message.mpim(多方直接消息)
image-20241121000450551
image-20241121000450551
  1. 保存更改。

开发 Web 服务来接收和处理消息

Slack 会将事件推送到你配置的 Request URL。以下是使用 Python 和 Flask 的示例代码:

安装必要的依赖
代码语言:bash
复制
pip install flask slack_sdk
示例代码
代码语言:python
代码运行次数:0
复制
from flask import Flask, request, jsonify
from slack_sdk.web import WebClient
from slack_sdk.errors import SlackApiError

app = Flask(__name__)

SLACK_BOT_TOKEN = "xoxb-your-bot-token"  # 替换为你的 Bot Token
client = WebClient(token=SLACK_BOT_TOKEN)

@app.route("/slack/events", methods=["POST"])
def slack_events():
    data = request.json

    # 验证 URL 时,直接返回 challenge 值
    if "challenge" in data:
        return jsonify({"challenge": data["challenge"]})

    # 处理消息事件
    if "event" in data:
        event = data["event"]
        
        # 忽略子类型为 bot_message 或包含 bot_id 的消息(即机器人自己的消息)
        if event.get("type") == "message" and "subtype" not in event and "bot_id" not in event:
            user = event.get("user")
            text = event.get("text")
            channel = event.get("channel")

            # 回复用户消息
            try:
                client.chat_postMessage(channel=channel, text=f"收到你的消息:{text}")
            except SlackApiError as e:
                print(f"Error sending message: {e.response['error']}")

    return jsonify({"status": "ok"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=3000)

5. 部署 Web 服务

  1. 本地运行测试
  • 运行上述代码。
  • 使用工具(如 ngrok)将本地服务暴露到公网:
代码语言:bash
复制
ngrok http 3000
  • 将生成的公网 URL(例如 https://abc123.ngrok.io/slack/events)填入 Slack 的 Request URL 中。
    image-20241121000941135
    image-20241121000941135
  1. 生产环境部署
  • 将 Web 服务部署到支持 HTTPS 的生产环境。

我这里用的是阿里云的windows镜像,所以直接通过命令行启动了服务,只是为了测试前后端是否正常通信

image-20241121000755733
image-20241121000755733

测试

我们回到slack中,在菜单左侧可以看到我们的应用的名字

image-20241121001137291
image-20241121001137291

点击这个应用

image-20241121001213614
image-20241121001213614

如果看到这个提示,则说明你的应用还没有授权在这里使用。

我们只需要进入APP Home页面,然后滑动到最下面

image-20241121001355113
image-20241121001355113
image-20241121001409912
image-20241121001409912

勾选checkbook。刷新一下slack页面,就可以看到消息输入框了。

image-20241121001550161
image-20241121001550161

我们随便输入些什么

image-20241121001712104
image-20241121001712104

可以看到机器人成功的回复了我们。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 必备工具
  • 注册Slack
  • 创建一个 Slack 应用
    • 2. 配置 Bot Token 和权限
    • 3. 配置事件订阅
  • 开发 Web 服务来接收和处理消息
    • 安装必要的依赖
    • 示例代码
    • 5. 部署 Web 服务
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档