"""Slack 厂商集成元数据。 定义 ``IntegrationMetadata(key="slack", ...)``,由 ``__init__.py`` 自注册到 ``IntegrationRegistry``。元数据为内存态,不持久化到数据库。 ``connection_extra_schema`` 声明 ``base_url``(必填)与 ``team_id``(可选)两个 连接配置额外字段: - ``base_url``:Slack Web API 基础 URL,默认 ``https://slack.com/api``。 - ``team_id``:工作区 ID,多 workspace 安装时用于路由 Token。 """ from __future__ import annotations from yuxi.external_systems.integrations.schemas import IntegrationMetadata from yuxi.external_systems.integrations.slack.constants import BASE_URL SLACK_METADATA = IntegrationMetadata( key="slack", display_name="Slack", description="Slack 协作平台集成,支持消息发送、频道管理、文件上传与事件订阅", adapter_type="http", source_types=["slack"], supported_auth_types=[ "oauth2_authorization_code", "slack_bot_token", "slack_app_token", ], tags=["collaboration", "im", "notification"], icon="slack", docs_url="https://api.slack.com/web", connection_extra_schema={ "type": "object", "properties": { "base_url": { "type": "string", "default": BASE_URL, "description": "Slack Web API 基础 URL", }, "team_id": { "type": "string", "description": "工作区 ID(多 workspace 安装时用于路由 Token)", }, }, "required": ["base_url"], }, example_config={ "base_url": BASE_URL, "team_id": "T00000000", }, dependency_note=( "1. 至少配置一种认证方式(oauth2_authorization_code / slack_bot_token / slack_app_token);" "2. Socket Mode 需额外配置 slack_app_token(xapp-...,需 connections:write scope);" "3. Bot Token 推荐 scope:chat:write / channels:read / users:read / files:write;" "4. 读取用户 email 需额外申请 users:read.email scope。" ), )