# ============================================================================= # 企微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