必须配置slack app权限与dify环境变量并启用socket mode:添加chat:write等必要作用域,填入xoxb-开头的bot token和xapp-开头的app-level token,再发布dify应用获取app_id与api_key,最后通过ngrok暴露https端点完成验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中集成Slack机器人,让团队成员在日常聊天中直接调用AI能力处理审批、查文档、写周报等任务,必须绕过平台间协议差异,通过适配层将Slack的事件驱动模型与Dify的API响应机制对齐。整个过程不依赖前端代码编写,但需严格匹配Slack App权限配置与Dify应用发布状态。
创建并配置Slack App
登录 Slack API 控制台 → 点击「Create New App」→ 选择「From scratch」→ 填写App名称(如“Dify-Team-Assistant”)和开发工作区 → 点击「Create App」。
进入App设置页 → 左侧菜单点击「OAuth & Permissions」→ 在「Scopes」区域,至少添加以下Bot Token权限:【chat:write】、【channels:read】、【groups:read】、【im:read】、【mpim:read】。缺少chat:write将导致机器人无法回复消息,这是最常被忽略的关键权限。
滚动到页面底部 → 点击「Install to Workspace」→ 授权安装 → 复制生成的Bot User OAuth Token(以xoxb-开头),该Token后续必须填入Dify部署环境变量中,不可泄露或替换。
启用Slack Socket Mode连接
回到Slack App设置页 → 左侧菜单点击「Socket Mode」→ 开关设为ON → 记录下显示的App-Level Token(以xapp-开头)。这个Token用于建立长连接,不是Bot Token,二者用途完全不同,混用会导致连接失败且无明确报错。
在Dify项目根目录下编辑.env文件 → 添加两行:
ADAPTER=slack
SLACK_BOT_TOKEN=xoxb-xxxxxx
SLACK_APP_TOKEN=xapp-xxxxxx
保存后重启Dify服务。若使用Docker部署,需确保docker-compose.yml中已挂载更新后的.env文件,否则环境变量不会生效。
配置Dify应用并发布
登录Dify控制台 → 进入「工作室」→ 创建一个新应用,类型选「聊天型」→ 在「提示词设置」中明确声明角色,例如:“你是XX公司内部AI助手,仅基于上传的知识库作答,不编造信息,不回答政治、宗教、医疗等敏感话题。”
点击「知识库」→ 上传PDF/Word/Markdown格式的《员工手册》《IT支持FAQ》《报销流程指南》等内部文档 → 等待切片与向量化完成(右上角进度条消失即就绪)。
点击「发布」→ 选择「API发布」模式 → 复制生成的APP_ID和API_KEY → 这两个值将用于Slack适配器回调时的身份校验,丢失后需重新发布获取。
验证与调试消息流
方法一:在Slack中添加机器人到测试频道 → 输入/invite @Dify-Team-Assistant → 发送任意消息(如“如何提交请假申请?”)→ 观察Dify后台「监控」→ 「日志」中是否出现slack_adapter: received message记录。
方法二:手动触发Webhook调试 → 使用curl发送模拟请求:
curl -X POST http://localhost:5001/slack/events \
-H "Content-Type: application/json" \
-d '{"type":"event_callback","event":{"type":"message","text":"你好","channel":"C012AB3CD","user":"U987XYZ"}}'
若返回200 OK且Dify日志中出现processed by workflow,说明适配层与业务逻辑层连通成功。
注意:Slack要求所有事件回调地址必须是HTTPS且有有效证书,本地开发时需用ngrok或Cloudflare Tunnel暴露/slack/events端点,否则Slack服务器会拒绝投递事件。










