ForcePilot/backend/package/yuxi/channels/adapters/zalo_user/constants.py
Kris 6cb56d5e41 refactor(zalo-adapter): 整理Zalo用户适配器代码并优化重连逻辑
1. 调整导入顺序与补全缺失依赖
2. 新增Zalo目标前缀映射与最大重连延迟配置
3. 优化反应消息ID获取逻辑与桥接URL检查
4. 改进WebSocket重连退避策略与错误处理
5. 重构发送消息逻辑,统一附件处理与音频发送流程
6. 调整类初始化代码位置与导入依赖顺序
2026-05-13 16:18:25 +08:00

90 lines
2.0 KiB
Python

from __future__ import annotations
from enum import StrEnum
ZALO_TEXT_LIMIT = 2000
ZALO_MAX_STYLED_MESSAGE_LENGTH = 2000
WS_MAX_MESSAGE_SIZE = 10 * 1024 * 1024
WS_PING_INTERVAL = 30
WS_PING_TIMEOUT = 10
WS_RECONNECT_DELAY = 5
MAX_RECONNECT_DELAY = 120
WATCHDOG_INTERVAL = 30
WATCHDOG_MAX_IDLE = 35
GROUP_CONTEXT_CACHE_TTL = 300
GROUP_CONTEXT_CACHE_MAX_ENTRIES = 500
DEFAULT_BRIDGE_URL = "http://localhost:5556"
DEFAULT_TIMEOUT = 30.0
DEFAULT_CONNECT_TIMEOUT = 10
DEFAULT_LOGIN_POLL_INTERVAL = 2.0
DEFAULT_LOGIN_TIMEOUT = 120.0
DEFAULT_QR_START_TIMEOUT = 30.0
DEFAULT_MAX_SEND_PER_MINUTE = 30
DEFAULT_RETRY_ATTEMPTS = 3
DEFAULT_RETRY_MIN_DELAY_MS = 500
DEFAULT_RETRY_MAX_DELAY_MS = 10000
DEFAULT_CIRCUIT_BREAKER_THRESHOLD = 5
DEFAULT_CIRCUIT_BREAKER_RECOVERY = 60
ZALO_REACTION_EMOJIS = frozenset(
{
"\U0001f44d",
"\u2764\ufe0f",
"\U0001f602",
"\U0001f62e",
"\U0001f622",
"\U0001f621",
}
)
REACTION_ALIAS_MAP: dict[str, str] = {
"like": "\U0001f44d",
"+1": "\U0001f44d",
":+1:": "\U0001f44d",
"love": "\u2764\ufe0f",
"heart": "\u2764\ufe0f",
":heart:": "\u2764\ufe0f",
"laugh": "\U0001f602",
"haha": "\U0001f602",
":laughing:": "\U0001f602",
"wow": "\U0001f62e",
"surprised": "\U0001f62e",
":open_mouth:": "\U0001f62e",
"sad": "\U0001f622",
"cry": "\U0001f622",
":cry:": "\U0001f622",
"angry": "\U0001f621",
"mad": "\U0001f621",
":rage:": "\U0001f621",
}
TARGET_PREFIXES: dict[str, str] = {
"zalouser:": "user",
"zlu:": "user",
"user:": "user",
"dm:": "user",
"u:": "user",
"u-": "user",
"zalo:": "user",
"group:": "group",
"g:": "group",
"g-": "group",
}
class ZaloCredentialStage(StrEnum):
UNINITIALIZED = "uninitialized"
QR_PENDING = "qr_pending"
QR_SCANNED = "qr_scanned"
QR_DECLINED = "qr_declined"
QR_EXPIRED = "qr_expired"
CONNECTED = "connected"
LOGGED_OUT = "logged_out"
ERROR = "error"