> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack 应用

> 将代理托管为 Slack 应用。

Slack 应用用于通过 Slack 提供代理或团队，使用 FastAPI 服务器处理 Slack 事件并发送消息。

## 设置步骤

<Snippet file="setup-slack-app.mdx" />

### 示例用法

创建一个代理，用 `SlackAPI` 包装它，然后提供它：

```python theme={null}
from agno.agent import Agent
from agno.app.slack.app import SlackAPI
from agno.models.openai import OpenAIChat

basic_agent = Agent(
    name="Basic Agent",
    model=OpenAIChat(id="gpt-4o"), # 请确保已设置 OPENAI_API_KEY
    add_history_to_messages=True,
    num_history_responses=3,
    add_datetime_to_instructions=True,
)

slack_api_app = SlackAPI(
    agent=basic_agent,
)
app = slack_api_app.get_app()

if __name__ == "__main__":
    slack_api_app.serve("basic:app", port=8000, reload=True)
```

## 核心组件

* `SlackAPI`: 用于通过 FastAPI 集成 Agno 代理/团队到 Slack。
* `SlackAPI.serve`: 使用 Uvicorn 为 FastAPI 应用提供服务，并进行 Slack 配置。

## `SlackAPI` 类

Agno Slack 应用的主入口点。

### 初始化参数

| 参数            | 类型                         | 默认值    | 描述                                   |
| ------------- | -------------------------- | ------ | ------------------------------------ |
| `agent`       | `Optional[Agent]`          | `None` | Agno `Agent` 实例。                     |
| `team`        | `Optional[Team]`           | `None` | Agno `Team` 实例。                      |
| `settings`    | `Optional[APIAppSettings]` | `None` | API 配置。如果为 `None` 则使用默认值。            |
| `api_app`     | `Optional[FastAPI]`        | `None` | 已存在的 FastAPI 应用。如果为 `None` 则会创建一个新的。 |
| `router`      | `Optional[APIRouter]`      | `None` | 已存在的 APIRouter。如果为 `None` 则会创建一个新的。  |
| `app_id`      | `Optional[str]`            | `None` | 应用标识符（如果未设置则自动生成）。                   |
| `name`        | `Optional[str]`            | `None` | 应用的名称。                               |
| `description` | `Optional[str]`            | `None` | 应用的描述。                               |

*请提供 `agent` 或 `team`，但不要同时提供两者。*

## 端点

Slack 集成的核心端点：

### `POST /slack/events`

* **描述**: 处理所有 Slack 事件，包括消息和应用提及。
* **安全**: 为每个请求验证 Slack 签名。
* **事件类型**:
  * URL 验证挑战
  * 消息事件
  * 应用提及事件
* **功能**:
  * 线程对话
  * 后台任务处理
  * 长响应的消息分割
  * 支持直接消息和频道交互

## 测试集成

1. 使用 `python <my-app>.py` 在本地启动您的应用程序（确保 ngrok 正在运行）。
2. 使用 `/invite @YourAppName` 将机器人邀请到频道。
3. 尝试在频道中提及机器人：`@YourAppName 你好`。
4. 通过与机器人开启私信来测试直接消息。

## 故障排除

* 验证所有环境变量是否设置正确。
* 确保机器人具有正确的权限并已成功邀请到频道。
* 检查 ngrok 连接和 URL 配置。
* 验证事件订阅是否配置正确。
* 监控应用程序日志以获取详细的错误消息。

## 支持

如需更多帮助或报告问题，请参阅文档或在仓库中提交 issue。
