ForcePilot/backend/package/yuxi/external_systems/integrations/slack/metadata.py

57 lines
2.1 KiB
Python
Raw Normal View History

"""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_tokenxapp-...,需 connections:write scope"
"3. Bot Token 推荐 scopechat:write / channels:read / users:read / files:write"
"4. 读取用户 email 需额外申请 users:read.email scope。"
),
)