实现完整的Freshdesk和Freshchat集成支持,包含会话守卫、错误定义、消息去重、配置管理、webhook处理、出站消息发送、状态监控、安全校验、配对功能和流式回复支持
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
import logging
|
|
|
|
from yuxi.channel.extensions.freshdesk.types import FreshdeskAccount, FreshdeskMode
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class FreshdeskStatus:
|
|
async def probe(self, account: FreshdeskAccount | None = None, client=None) -> bool:
|
|
if account is None or client is None:
|
|
return False
|
|
try:
|
|
if account.mode in (FreshdeskMode.FRESHCHAT, FreshdeskMode.BOTH):
|
|
me = await client.fc_get_me()
|
|
if not me.get("id"):
|
|
return False
|
|
if account.mode in (FreshdeskMode.FRESHDESK, FreshdeskMode.BOTH):
|
|
me = await client.fd_get_me()
|
|
if not me.get("id"):
|
|
return False
|
|
return True
|
|
except Exception:
|
|
logger.exception("Freshdesk status probe failed")
|
|
return False
|
|
|
|
def build_summary(self, snapshot: object) -> dict:
|
|
return {
|
|
"freshchat_account": getattr(snapshot, "freshchat_account_name", ""),
|
|
"freshdesk_agent": getattr(snapshot, "freshdesk_agent_name", ""),
|
|
}
|