Skip to main content

本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。

在本指南中,你将构建一个由 AI 驱动的 Slack Bot,让它直接在 Slack 中回答用户问题。如果你之前没有开发过插件,先阅读 插件开发快速入门指南。

项目背景#

Slack Bot 插件让团队直接在 Slack 中与 LLM 对话,把 AI 带到对话发生的地方。

Slack 是一个开放的实时通信平台,拥有强大的 API,其中包括一套基于 webhook 的事件系统,开发起来非常简单。本指南利用该系统来创建 Slack Bot 插件,如下图所示:

Slack Bot 示意图

Note

本指南中会反复出现两个相似的术语:

  • Slack Bot:Slack 平台上的聊天机器人,是一个可与之实时交互的虚拟用户。
  • Slack Bot 插件:Dify 市场中的一个插件,用于连接 Dify 应用与 Slack。本指南介绍如何构建它。

工作原理#

  1. 用户向 Slack Bot 发送消息

    当 Slack 中的用户向 Bot 发送消息时,Slack Bot 会立即向 Dify 平台发出 webhook 请求。

  2. Slack 将消息转发给 Slack Bot 插件

    Dify 平台触发 Slack Bot 插件,由它把消息转交给 Dify 应用,就像电子邮件系统把邮件投递到收件人地址一样。你通过 Slack 的 API 设置 Slack webhook 地址并填入插件中,从而建立这一连接。插件处理 Slack 请求并转发给 Dify 应用,由 LLM 分析输入并生成响应。

  3. 插件将响应返回给 Slack

    插件收到 Dify 应用的回复后,会沿同一路径把 LLM 的答案发送回 Slack Bot,让用户在聊天的地方就能得到回复。

前提条件#

要创建 Slack App,前往 Slack API 平台,从头创建一个应用,并选择部署它的工作区。

创建 Slack App

  1. 启用 Webhooks:

启用 Webhooks

  1. 在 Slack 工作区中安装应用:

在 Slack 工作区中安装应用

  1. 获取 OAuth 令牌,以供插件开发使用:

获取 OAuth 令牌以供后续插件开发使用

1. 开发插件#

开始编码前,请确保你已阅读 快速入门:开发扩展插件,或已经构建过 Dify 插件。

1.1 初始化项目#

运行以下命令来设置插件开发环境:

按照提示提供基本的项目信息。选择 extension 模板,并同时授予 Apps 和 Endpoints 权限。

有关在插件中反向调用 Dify 服务的更多细节,参见 反向调用:App。

插件权限

1.2 编辑配置表单#

插件需要两项信息:由哪个 Dify 应用处理回复,以及用于验证 Bot 响应身份的 Slack App 令牌。请把这两个字段都添加到插件的表单中。

修改 group 目录中的 YAML 文件(例如 group/slack.yaml)。表单的文件名取决于你创建插件时提供的信息,请相应调整路径。

示例代码:

slack.yaml

有两个配置字段值得细看:

  • type:设为 app-selector,让用户在使用此插件时把消息转发到指定的 Dify 应用。
  • scope:设为 chat,表示该插件只能与 agent、chatbot、chatflow 等应用类型交互。

最后,在 endpoints/slack.yaml 文件中,把请求方法改为 POST,使端点能够处理传入的 Slack 消息。

示例代码:

endpoints/slack.yaml

2. 编辑功能代码#

修改 endpoints/slack.py 文件并添加以下代码:

3. 调试插件#

前往 Dify 平台,获取插件的远程调试地址和密钥。

获取远程调试地址和密钥

回到你的插件项目,复制 .env.example 文件,重命名为 .env,并填入调试信息:

启动插件:

此时你应该能在 Dify 插件管理页面的工作空间中看到插件已安装,其他团队成员也可以访问它。

配置插件端点#

在 Dify 的插件管理页面,找到新安装的测试插件并创建一个新端点。填入名称和你的 Bot Token,然后选择要连接的应用。

测试插件

保存后,会生成一个 POST 请求 URL:

生成的 POST 请求 URL

接下来,完成 Slack App 设置:

  1. 启用事件订阅

    启用事件订阅

    粘贴你上面生成的 POST 请求 URL。

    粘贴你上面生成的 POST 请求 URL

  2. 授予所需权限

    授予所需权限


4. 验证插件#

插件通过 self.session.app.chat.invoke 调用 Dify 应用,传入 app_id、query 等参数,并把响应返回给 Slack Bot。再次运行 python -m main 重启插件,然后检查 Slack 是否显示出 Dify 应用的回复:

Slack 显示 Dify 应用的回复


5. 打包插件(可选)#

确认插件正常工作后,用以下命令打包。该命令会在当前目录生成一个 slack_bot.difypkg 文件,也就是你的最终插件包。有关详细的打包步骤,参见 打包为本地文件并分享。

恭喜!你已经开发、测试并打包了一个插件!


6. 发布插件(可选)#

现在可将它提交到 Dify Marketplace 仓库 公开发布。提交前,确保插件符合 Marketplace 准备与验证要求。审核通过后,软件包会合并到主分支,并通过 Marketplace 流水线发布。


相关资源#

延伸阅读#

要查看完整的 Dify 插件项目示例,访问 GitHub 仓库。你还能找到包含完整源代码和实现细节的其他插件。

要进一步了解插件开发,参见以下内容:

快速入门:

插件接口文档: