实现钉钉企业机器人全渠道能力,包含会话解析、消息收发、富消息卡片、命令适配、身份解析、状态回传、健康探测等功能,提供完整的Stream/HTTP双模式事件接入支持,遵循单真相源设计原则,以manifest.json作为配置唯一依据。
79 lines
3.1 KiB
Python
79 lines
3.1 KiB
Python
"""钉钉渠道插件共享常量。
|
||
|
||
集中定义在多个模块间共享的配置默认值、依赖标识与渠道标识,避免重复
|
||
定义导致的不一致风险(P2-3 常量去重)。
|
||
|
||
仅汇集真正跨模块共享的常量;仅单一模块使用的常量仍保留在各自模块内。
|
||
所有常量值需与 ``manifest.json`` 中 ``config_schema`` 的 ``default`` 字段
|
||
及 ``resource_quota`` 保持一致(F-03 manifest 单真相源),本模块的常量
|
||
作为 ConfigPort 未命中时的本地回退默认值。
|
||
|
||
依赖方向:仅标准库,不 import 任何框架层或同插件模块,避免循环依赖。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 渠道与依赖标识
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# 渠道标识,用于 ConfigPort CHANNEL 作用域 target(与 manifest.json
|
||
# channel_type / provides 对齐)
|
||
CHANNEL_TARGET = "dingtalk"
|
||
|
||
# 钉钉 API 依赖标识,统一用于 ``DependencyError.dep`` 字段
|
||
DINGTALK_API_DEP = "dingtalk_api"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# HTTP 客户端配置(lifecycle 与 dingtalk_client 共享)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# HTTP 客户端默认超时(秒),对齐 manifest.json config_schema
|
||
# request_timeout_ms.default=30000
|
||
HTTP_TIMEOUT_SECONDS = 30.0
|
||
|
||
# HTTP 连接池最大连接数,对齐 manifest.json
|
||
# resource_quota.max_connections=50
|
||
HTTP_MAX_CONNECTIONS = 50
|
||
|
||
# HTTP 连接池 keepalive 连接数上限
|
||
HTTP_MAX_KEEPALIVE_CONNECTIONS = 10
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Stream 模式默认端点(与 manifest.json stream_endpoint_path.default 对齐)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# 钉钉 Stream 接入端点(由 /v1.0/gateway/connections/open 返回 WS connectionId)
|
||
DEFAULT_STREAM_ENDPOINT_PATH = "/v1.0/gateway/connections/open"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# token 缓存与刷新策略
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# token 缓存 key 前缀(完整 key: dingtalk:token:{client_id})
|
||
TOKEN_CACHE_KEY_PREFIX = "dingtalk:token:"
|
||
|
||
# token 提前刷新量(秒),对齐设计方案 §5.4(提前 300s 刷新)
|
||
TOKEN_REFRESH_LEAD_TIME_SEC = 300
|
||
|
||
# HTTP 模式签名时效窗口(秒),对齐设计方案 §3.3(60 分钟)
|
||
HTTP_SIGN_TIMESTAMP_TOLERANCE_SEC = 3600
|
||
|
||
# 钉钉互动卡片占位模板 ID(v1 使用占位值,生产环境应从 account config 读取
|
||
# 或由 RichMessage.metadata["cardTemplateId"] 显式传入)
|
||
DEFAULT_CARD_TEMPLATE_ID = "DEFAULT_CARD_TEMPLATE"
|
||
|
||
|
||
__all__ = [
|
||
"CHANNEL_TARGET",
|
||
"DINGTALK_API_DEP",
|
||
"HTTP_TIMEOUT_SECONDS",
|
||
"HTTP_MAX_CONNECTIONS",
|
||
"HTTP_MAX_KEEPALIVE_CONNECTIONS",
|
||
"DEFAULT_STREAM_ENDPOINT_PATH",
|
||
"TOKEN_CACHE_KEY_PREFIX",
|
||
"TOKEN_REFRESH_LEAD_TIME_SEC",
|
||
"HTTP_SIGN_TIMESTAMP_TOLERANCE_SEC",
|
||
"DEFAULT_CARD_TEMPLATE_ID",
|
||
]
|