ForcePilot/backend/package/yuxi/channels/adapters/msteams/user_agent.py
Kris bd60c15df0 feat(msteams): 新增完整的 Microsoft Teams 适配器模块
实现了 Teams 机器人所需的全功能组件,包括:
- 基础命令解析与帮助卡片生成
- 租户验证与访问控制
- 自定义 UA 与媒体工具
- 消息分块、批注处理与会话管理
- 防抖、缓存与配置路由能力
- 投票、配对、审计与运行时状态管理
- TTS 语音合成与卡片构建工具
- 群组管理与权限控制逻辑
2026-05-12 00:46:44 +08:00

43 lines
1.1 KiB
Python

"""Microsoft Teams User-Agent 构建模块。
为 Graph API 和 Bot Framework 请求构建标准 User-Agent 头,
便于追踪和问题排查。
"""
from __future__ import annotations
import platform
_USER_AGENT_PRODUCT = "ForcePilot-MSTeams"
_USER_AGENT_VERSION = "1.0.0"
_DEFAULT_USER_AGENT = (
f"{_USER_AGENT_PRODUCT}/{_USER_AGENT_VERSION}"
f" ({platform.system()} {platform.release()}; Python {platform.python_version()})"
)
_HEADER_NAME = "User-Agent"
def build_user_agent(
product: str = _USER_AGENT_PRODUCT,
version: str = _USER_AGENT_VERSION,
extra: str | None = None,
) -> str:
parts = [f"{product}/{version}"]
parts.append(f"({platform.system()} {platform.release()}; Python {platform.python_version()})")
if extra:
parts.append(extra)
return " ".join(parts)
def ensure_user_agent(headers: dict[str, str] | None = None, extra: str | None = None) -> dict[str, str]:
result = dict(headers or {})
result.setdefault(_HEADER_NAME, build_user_agent(extra=extra))
return result
def get_default_user_agent() -> str:
return _DEFAULT_USER_AGENT