ForcePilot/backend/package/yuxi/channel/extensions/flock/constants.py
Kris 0bad70ec19 feat(flock): 新增Flock团队协作IM渠道插件
实现了完整的Flock渠道接入能力,包含消息收发、Webhook事件监听、账号配置、安全校验、媒体文件处理等功能,支持私聊和群组聊天,适配ForcePilot插件规范。
2026-05-21 10:47:01 +08:00

107 lines
2.2 KiB
Python

BASE_URL = "https://api.flock.com/v1/"
API_TIMEOUT = 30
ENDPOINT_SEND_MESSAGE = "chat.sendMessage"
ENDPOINT_FETCH_MESSAGES = "chat.fetchMessages"
ENDPOINT_GET_UPLOAD_URL = "chat.getUploadUrl"
ENDPOINT_USER_GET_INFO = "users.getInfo"
ENDPOINT_USER_PUBLIC_PROFILE = "users.getPublicProfile"
ENDPOINT_CHANNEL_LIST = "channels.list"
ENDPOINT_CHANNEL_GET_INFO = "channels.getInfo"
ENDPOINT_CHANNEL_GET_MEMBERS = "channels.getMembers"
BOT_TOKEN_PATTERN = r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
PREFIX_USER = "u:"
PREFIX_GROUP = "g:"
PREFIX_TEAM = "t:"
PREFIX_BOT = "b:"
FLOCK_USER_ID_PATTERN = r"^u:[a-zA-Z0-9]+$"
FLOCK_GROUP_ID_PATTERN = r"^g:[a-zA-Z0-9]+$"
MAX_TEXT_LENGTH = 7000
MAX_FLOCKML_LENGTH = 15000
MAX_ATTACHMENT_COUNT = 10
MAX_FILE_SIZE_MB = 100
MAX_POLL_INTERVAL = 30
POLL_TIMEOUT = 30
RATE_LIMIT_PER_MINUTE = 100
RATE_LIMIT_RETRY_AFTER_DEFAULT = 30
MAX_RETRIES = 3
RETRY_BASE_DELAY = 1.0
RETRY_MAX_DELAY = 30.0
RETRYABLE_ERRORS = frozenset(
{
"RateLimitExceeded",
"ServiceUnavailable",
"InternalError",
}
)
NON_RETRYABLE_ERRORS = frozenset(
{
"InvalidToken",
"TokenExpired",
"UserNotFound",
"ChannelNotFound",
"NotAuthorized",
"InvalidRequest",
"InvalidFlockML",
"MessageTooLong",
"AttachmentTooLarge",
}
)
EVENT_MESSAGE_RECEIVE = "chat.receiveMessage"
EVENT_SLASH_COMMAND = "client.slashCommand"
EVENT_CHAT_ACTION = "client.chatAction"
EVENT_APP_INSTALL = "app.install"
EVENT_APP_UNINSTALL = "app.uninstall"
WEBHOOK_PATH_EVENT_LISTENER = "/api/channel/flock/events"
WEBHOOK_PATH_OUTGOING = "/api/channel/flock/outgoing"
X_FLOCK_EVENT_TOKEN = "X-Flock-Event-Token"
ALLOWED_FLOCKML_TAGS = frozenset(
{
"b",
"i",
"u",
"s",
"strike",
"em",
"strong",
"code",
"pre",
"a",
"br",
"hr",
"ul",
"ol",
"li",
"table",
"tr",
"td",
"th",
"img",
"user",
"channel",
"blockquote",
}
)
PROBE_TIMEOUT = 10
PAIRING_CODE_LENGTH = 6
PAIRING_CODE_TTL_SECONDS = 600
PAIRING_RATE_LIMIT_PER_PEER = 5
PAIRING_MAX_ATTEMPTS = 5
DEDUPE_MAX_SIZE = 1000
DEDUPE_TTL_SECONDS = 300