60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# =============================================================================
|
|
# 企微IT智能服务台 — 超时提醒服务
|
|
# =============================================================================
|
|
# 说明:提供发送超时提醒企微消息的功能
|
|
# 在坐席回复后员工长时间未回复时,发送企微提醒消息
|
|
# =============================================================================
|
|
|
|
import logging
|
|
from app.config import settings
|
|
from app.services.wecom_service import WecomService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# 超时提醒消息内容
|
|
REMINDER_MESSAGE = (
|
|
"IT服务提醒:您有新的消息未查看,"
|
|
"咨询将在10分钟后标记为待关闭,请尽快点击处理 👉 "
|
|
"https://itsupport.servyou.com.cn/itdesk/"
|
|
)
|
|
|
|
|
|
async def send_reminder_message(employee_id: str) -> bool:
|
|
"""发送超时提醒企微消息。
|
|
|
|
当坐席回复后员工超过3分钟未回复时,发送企微消息提醒员工查看。
|
|
|
|
Args:
|
|
employee_id: 员工的企微 UserID
|
|
|
|
Returns:
|
|
bool: 发送是否成功
|
|
|
|
Raises:
|
|
Exception: 发送失败时抛出异常
|
|
"""
|
|
try:
|
|
redis_client = settings.create_redis_client()
|
|
wecom_service = WecomService(redis_client)
|
|
|
|
try:
|
|
result = await wecom_service.send_text_message(
|
|
employee_id, REMINDER_MESSAGE
|
|
)
|
|
if result.get("errcode") == 0:
|
|
logger.info(f"超时提醒发送成功: employee_id={employee_id}")
|
|
return True
|
|
else:
|
|
logger.warning(
|
|
f"超时提醒发送失败: employee_id={employee_id}, "
|
|
f"errcode={result.get('errcode')}, errmsg={result.get('errmsg')}"
|
|
)
|
|
return False
|
|
finally:
|
|
await wecom_service.close()
|
|
await redis_client.close()
|
|
|
|
except Exception as e:
|
|
logger.error(f"发送超时提醒异常: employee_id={employee_id}, error={e}")
|
|
raise
|