Files

84 lines
3.1 KiB
Python
Raw Permalink Normal View History

# =============================================================================
# 企微IT智能服务台 — 超时提醒服务
# =============================================================================
# 说明:提供发送超时提醒企微消息的功能
# 在坐席回复后员工长时间未回复时,发送企微提醒消息
# =============================================================================
import logging
from app.config import settings
from app.services.wecom_service import WecomService
logger = logging.getLogger(__name__)
# 跳转链接 - 员工端H5咨询页面
REMINDER_URL = "https://itsupport.servyou.com.cn/h5/"
async def send_reminder_message(employee_id: str) -> bool:
"""发送超时提醒企微消息(模板卡片样式)。
当坐席回复后员工超过3分钟未回复时,发送企微模板卡片消息提醒员工查看。
使用 text_notice 类型模板卡片,支持点击跳转按钮。
Args:
employee_id: 员工的企微 UserID
Returns:
bool: 发送是否成功
Raises:
Exception: 发送失败时抛出异常
"""
try:
redis_client = settings.create_redis_client()
wecom_service = WecomService(redis_client)
try:
# 使用模板卡片消息(text_notice 类型)- 参考企微最佳实践设计
result = await wecom_service.send_template_card_message(
user_id=employee_id,
# 来源区域
source_desc="IT智能服务台",
# 主标题区域
main_title="您的IT咨询即将关闭",
main_title_desc="请尽快回复坐席,否则咨询将自动结束",
# 副标题
sub_title_text="点击下方按钮直接跳转到咨询页面",
# 高亮区域
emphasis_title="2分钟",
emphasis_desc="剩余处理时间",
# 关键信息列表
horizontal_content_list=[
{"keyname": "咨询内容", "value": "IT问题咨询"},
{"keyname": "坐席状态", "value": "已回复"},
],
# 跳转按钮
jump_list=[
{
"type": 1, # 跳转URL
"title": "立即回复",
"url": REMINDER_URL,
}
],
# 卡片点击区域
card_action_url=REMINDER_URL,
)
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