news 2026/5/1 3:02:14

第16章(2)——项目十五:Gradio应用拓展为Slack Bot

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第16章(2)——项目十五:Gradio应用拓展为Slack Bot

第16章(2)——项目十五:Gradio应用拓展为Slack Bot

    • 16.2 项目十五:Gradio应用拓展为Slack Bot
      • 16.2.1 创建并配置Slack应用
      • 16.2.2 编写Slack Bot代码
      • 16.2.3 将机器人添加到Slack工作区
      • 16.2.4 操作机器人及功能扩展

16.2 项目十五:Gradio应用拓展为Slack Bot

Slack可以将人员、项目、应用和AI代理整合在一起,进行人员协作、项目管理、工具集成,并可使用人工智能Slack AI及智能代理Agentforce提供服务,Slack官网地址🖇️链接16-5。将Gradio应用拓展到Slack,创建Slack Bot,让Slack工作区中的成员直接与之互动,下面逐步讲述部署过程。
工作原理。该Slack Bot会监听频道中提及它的消息,当收到消息时(可包含文本或文件),后端运行程序会通过Gradio内置API将内容发送至已部署的Gradio应用,并将API返回的响应进行回显。得益于Gradio API的高度灵活性,用户可以轻松创建支持文本、图片、音频、实时视频流、聊天记录等丰富功能的Slack Bot。

开始之前,安装最新版gradio和slack-bolt库,安装命令如下所示:pip install --upgrade gradio slack-bolt~=1.0。确保已部署可运行的Gradio应用(可运行于本地或Spaces),本示例使用与16.1节相同的Gradio Playground Bot。

16.2.1 创建并配置Slack应用

创建并配置Slack应用的步骤包括创建Slack工作区、创建Slack App、授权并获取OAuth Tokens、生成socket-token及订阅app_mention事件,操作步骤较繁琐,容易出错,请读者按照教程一步步操作。

创建Slack工作区。访问Slack Apps🖇️链接16-6,在创建Slack账户或使用已有邮箱登录后,在没有创建自己的工作区之前,界面如图16-13所示:

图16-13

在创建App之前需先创建工作区,单击"Create a workspace",之后还需再点一遍确认。然后输入工作区名称gradio_union_slack(根据需要修改),设置名称和照片,可跳过邀请同事,需填写当前团队工作,最后点击使用免费版本完成创建。

创建Slack应用。还是访问Slack Apps,选择“Create New App -> From Scratch”,为应用命名GradioPlaygroundBot,选择或新建要开发应用的目标工作区,如之前创建的gradio_union_slack,然后点击“Create App”,可看到应用ID、客户端ID及验证令牌等信息,如图16-14所示:

图16-14

授权并获取OAuth Tokens。单击左侧导航栏"OAuth & Permissions",滚动至"Scopes",在Bot Token Scopes点击“Add an OAuth Scope”并添加:

  • app_mentions:read(读取提及消息):查看会话中的消息(需应用已加入该会话)。
  • chat:write(聊天消息写入):以GradioPlaygroundBot身份发送消息。
  • files:read(文件读取):查看已添加应用的频道和会话中的共享文件。
  • files:write(文件写入):以应用身份上传、编辑和删除频道和会话中的文件。

添加完成后,如图16-15所示:

图16-15

滚动到同一页面顶部,点击“Install to gradio_union_slack”,可看到应用在工作空间gradio_union_slack中可见以及可操作权限如图16-16所示:

图16-16

点击"Allow"后跳转回"OAuth & Permissions"页面,并在OAuth Tokens下得到Bot User OAuth Token:xoxb-X,保存为SLACK_BOT_TOKEN,如图16-17所示:

图16-17

生成socket-token。点击左侧菜单栏"Socket Mode",在Connect using Socket Mode,点击切换键“Enable Socket Mode”开启Socket模式,如图16-18所示:

图16-18

在弹出的对话框中,为Socket令牌命名(如gradio_socket_token),单击“Generate”生成令牌:xapp-X,保存为SLACK_APP_TOKEN。如图16-19所示:

图16-19

订阅事件app_mention。单击左侧导航栏的"Event Subscription",在"Enable Events"区域单击切换键toggle以启用该事件,使Slack应用可以订阅并接收Slack事件通知(例如当用户添加表情或创建文件时),通知将发送至用户指定的URL。

在“Subscribe to bot events”区域,应用可以订阅接收Bot User有权访问的事件(例如频道中的新消息)。在此单击“Add Bot User Event”,订阅机器人事件app_mention,仅订阅提及用户的应用程序或机器人的消息事件。若用户在此添加事件,系统将自动添加所需的OAuth权限范围。最终效果如图16-20所示:

图16-20

最后单击右下角的“Save changes”。Slack App创建及设置完成!

16.2.2 编写Slack Bot代码

本节编写Slack Bot基础及详细版代码,并对其代码进行详细解读。
首先,编写一个基础版Slack机器人来验证基础功能。如代码16-4所示:

代码16-4
# slack_bot.pyfromslack_boltimportAppfromslack_bolt.adapter.socket_modeimportSocketModeHandler SLACK_BOT_TOKEN="xoxb-XXX"SLACK_APP_TOKEN="xapp-XXX"app=App(token=SLACK_BOT_TOKEN)@app.event("app_mention")defhandle_app_mention_events(body,say):user_id=body["event"]["user"]say(f"Hi <@{user_id}>! You mentioned me and said:{body['event']['text']}")if__name__=="__main__":handler=SocketModeHandler(app,SLACK_APP_TOKEN)handler.start()

Socket Mode表示通过WebSocket接收事件,无需公网URL(适合开发/测试环境)。当有人@机器人时触发,say()在相同频道回复消息的便捷方法。通过命令python slack_bot.py运行。然后添加Gradio专用代码,使用Gradio的Python客户端调用Gradio Playground Bot,更新后的slack_bot.py文件内容如代码16-5所示:

代码16-5
fromgradio_clientimportClient,handle_filefromslack_boltimportAppfromslack_bolt.adapter.socket_modeimportSocketModeHandlerimportos,re,httpx SLACK_BOT_TOKEN="xoxb-XXX"SLACK_APP_TOKEN="xapp-XXX"slack_app=App(token=SLACK_BOT_TOKEN)gradio_client=Client("abidlabs/gradio-playground-bot")defdownload_image(url,filename):headers={"Authorization":f"Bearer{SLACK_BOT_TOKEN}"}response=httpx.get(url,headers=headers)image_path=f"./images/{filename}"os.makedirs("./images",exist_ok=True)withopen(image_path,"wb")asf:f.write(response.content)returnimage_pathdefslackify_message(message):pattern=r'\[(.*?)\]\((.*?)\)'cleaned=re.sub(pattern,r'<\2|\1>',message)cleaned=re.sub(r'```\w+\n','```',cleaned)returncleaned.strip()@slack_app.event("app_mention")defhandle_app_mention_events(body,say):text=body["event"]["text"]bot_user_id=body["authorizations"][0]["user_id"]clean_message=text.replace(f"<@{bot_user_id}>","").strip()files=[]if"files"inbody["event"]:forfileinbody["event"]["files"]:iffile["filetype"]in["png","jpg","jpeg","gif","webp"]:image_path=download_image(file["url_private_download"],file["name"])files.append(handle_file(image_path))breakforresponseingradio_client.submit(message={"text":clean_message,"files":files},):cleaned_response=slackify_message(response[-1])say(cleaned_response)if__name__=="__main__":handler=SocketModeHandler(slack_app,SLACK_APP_TOKEN)handler.start()

通过Socket Mode适配器启动,之后阻塞运行,开始监听事件,解读如下:
(1)首先,引入相关库和定义相关TOKEN,再分别通过SLACK_BOT_TOKEN和Space ID创建SLACK应用slack_app和Gradio客户端gradio_client。
(2)然后,定义图像下载函数download_image和将信息整理为Slack格式的函数slackify_message,其逻辑简单不再赘述。
(3)接着,看主程序中SocketModeHandler处理程序,使用SLACK_APP_TOKEN标识开启用户创建的slack_app的Soket模式,然后启动。
(4)当Slakc Bot被提及时,触发slack_app的事件app_mention,此时调用函数handle_app_mention_events。它首先清理信息,去掉机器人用户标识符;然后判断是否有枚举文件类型中的文件,当存在时下载文件;接着将信息和文件发给gradio_client获得回复response;最后将response中内容整理成slack格式,通过say发送到Slack Bot进行回显。运行后输出如下:

Loaded as API: https://abidlabs-gradio-playground-bot.hf.space ✔ ⚡ Bolt slack_app is running!

通过代码解读可以看到,本例定义的slack_app通过SLACK_BOT_TOKEN与Slack中创建的App关联并获取授权,而SLACK_APP_TOKEN则开启了slack_app的Socket模式。当SocketModeHandler启动时,slack_app会通过SLACK_BOT_TOKEN关联到GradioPlaygroundBot及其授权,并通过SLACK_APP_TOKEN与Channel建立Socket通道;然后,当在Slack的频道中提及GradioPlaygroundBot时,会触发slack_app的事件app_mention,由此调用函数handle_app_mention_events进行处理;接着对Slack消息进行处理,比如净化消息并下载文件,并将消息发送到Gradio客户端;最后将Gradio应用的回复response进行Slack格式化处理,通过函数say发送到channel另一端的Slack Bot进行回显。

16.2.3 将机器人添加到Slack工作区

在Slack工作区中,除了定义App,还需要创建用于消息传输的频道Channels。现在,在想要使用机器人的Slack工作区中新建或进入现有频道channel,然后将聊天机器人加入频道。步骤如下:
新建频道channel。选择工作区,比如用户创建的gradio_union_slack,单击工作区侧边栏"Channels"下的标有Add channels的"+"按钮,如图16-21所示:

图16-21

选择“Create a new channel”,只需输入名称并邀请成员即可创建。当然也可以使用现有的channel,从图16-21可以看到之前已创建的channel。

将机器人加入频道。步骤如下:在新频道中输入/invite @机器人名称;或者直接@机器人名称,系统会提示"You mentioned @XXX, but they are not in this channel.",是否加入channel,选择添加即可。添加后效果如图16-22所示:

图16-22

16.2.4 操作机器人及功能扩展

使用Slack Bot。现在Slack用户可以在机器人的频道@GradioPlaygroundBot,并选择性地附加图片,发送后机器人就会用Gradio应用生成的代码进行回复!比如上传图片并配文:@GradioPlaygroundBot make this app。此时可将Gradio Playground Bot的程序部署到本地或自己的Hugging Face Spaces中,设置好ANTHROPIC_API_KEY并更改slack_bot.py中gradio_client的地址后,Slack窗口收到的正常回复类似图16-23所示:

图16-23

功能及扩展。该机器人将实现以下功能:①监听被提及的消息;②处理所有附加图片;③将文本和图片发送至Gradio应用;④将Gradio应用的响应内容实时传回Slack频道。这只是一个基础示例,可以扩展它来处理更多文件类型、添加错误处理机制或集成其他的Gradio应用!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 3:01:45

2026优质CRM品牌盘点,销售供应链全维度对比,选型手册

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…

作者头像 李华
网站建设 2026/5/1 2:58:24

使用Taotoken管理API密钥并设置访问权限与审计日志

使用Taotoken管理API密钥并设置访问权限与审计日志 1. API Key 的创建与管理 在Taotoken控制台中&#xff0c;团队管理员可以创建多个API Key以满足不同场景的调用需求。登录控制台后&#xff0c;导航至「API密钥」页面&#xff0c;点击「新建密钥」按钮即可生成新的访问凭证…

作者头像 李华
网站建设 2026/5/1 2:53:39

利用模型广场与用量数据优化AI应用的技术选型与预算

利用模型广场与用量数据优化AI应用的技术选型与预算 1. 模型选型的技术挑战与解决方案 在构建长期AI应用架构时&#xff0c;技术负责人常面临模型选型的两大核心难题&#xff1a;如何快速获取不同厂商模型的能力边界与定价策略&#xff0c;以及如何将历史项目的实际用量转化为…

作者头像 李华
网站建设 2026/5/1 2:51:26

霍尼韦尔1.20-0008-20-RP PCBA CPU,SSP,M-100

霍尼韦尔1.20-0008-20-RP PCBA CPU&#xff0c;SSP&#xff0c;M-100介绍霍尼韦尔&#xff08;Honeywell&#xff09;作为全球领先的工业自动化和技术解决方案提供商&#xff0c;其产品在航空航天、建筑控制和安全系统等领域享有盛誉。本次介绍的“霍尼韦尔1.20-0008-20-RP PCB…

作者头像 李华
网站建设 2026/5/1 2:49:07

如何为 Claude Code 编程助手配置 Taotoken 作为后端模型服务

如何为 Claude Code 编程助手配置 Taotoken 作为后端模型服务 1. 准备工作 在开始配置前&#xff0c;请确保已安装 Claude Code 编程助手并拥有 Taotoken 平台的 API Key。登录 Taotoken 控制台&#xff0c;在「模型广场」中找到目标模型&#xff08;如 claude-sonnet-4-6&am…

作者头像 李华
网站建设 2026/5/1 2:48:55

长期使用 Taotoken 后对其官方价折扣与活动价带来的成本节约体会

长期使用 Taotoken 后对其官方价折扣与活动价带来的成本节约体会 1. 成本管理的基本诉求 在持续使用大模型 API 的开发过程中&#xff0c;成本控制始终是团队和个人开发者关注的重点。我们最初选择 Taotoken 平台&#xff0c;主要看中其聚合多家模型供应商的能力&#xff0c;…

作者头像 李华