实现了 Teams 机器人所需的全功能组件,包括: - 基础命令解析与帮助卡片生成 - 租户验证与访问控制 - 自定义 UA 与媒体工具 - 消息分块、批注处理与会话管理 - 防抖、缓存与配置路由能力 - 投票、配对、审计与运行时状态管理 - TTS 语音合成与卡片构建工具 - 群组管理与权限控制逻辑
43 lines
1.1 KiB
Python
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
|