功能:企微回调支持图片消息,路由到 Agent 图片分析
收到图片先回复"正在分析",异步调 VLM 分析后主动回复结果。
This commit is contained in:
@@ -70,11 +70,19 @@ async def wechat_agent_message(
|
|||||||
asyncio.create_task(_process_agent_message(user_id, content))
|
asyncio.create_task(_process_agent_message(user_id, content))
|
||||||
return PlainTextResponse(content="success")
|
return PlainTextResponse(content="success")
|
||||||
|
|
||||||
|
# ---- 图片消息 → Agent 图片分析 ----
|
||||||
|
if msg_type == "image":
|
||||||
|
user_id = msg.get("FromUserName", "")
|
||||||
|
media_id = msg.get("MediaId", "")
|
||||||
|
logger.info(f"收到企微图片: user={user_id}, media_id={media_id}")
|
||||||
|
asyncio.create_task(_process_agent_image(user_id, media_id))
|
||||||
|
return PlainTextResponse(content="success")
|
||||||
|
|
||||||
return PlainTextResponse(content="success")
|
return PlainTextResponse(content="success")
|
||||||
|
|
||||||
|
|
||||||
async def _process_agent_message(user_id: str, content: str):
|
async def _process_agent_message(user_id: str, content: str):
|
||||||
"""异步处理消息并主动回复"""
|
"""异步处理文字消息并主动回复"""
|
||||||
try:
|
try:
|
||||||
from app.services.agent_dispatcher import get_agent_dispatcher
|
from app.services.agent_dispatcher import get_agent_dispatcher
|
||||||
from app.services.wechat_service import get_wechat_service
|
from app.services.wechat_service import get_wechat_service
|
||||||
@@ -88,6 +96,30 @@ async def _process_agent_message(user_id: str, content: str):
|
|||||||
logger.error(f"Agent消息处理失败: user={user_id}, error={e}", exc_info=True)
|
logger.error(f"Agent消息处理失败: user={user_id}, error={e}", exc_info=True)
|
||||||
|
|
||||||
|
|
||||||
|
async def _process_agent_image(user_id: str, media_id: str):
|
||||||
|
"""异步处理图片消息:先回复"正在分析",再调 VLM 分析"""
|
||||||
|
try:
|
||||||
|
from app.services.agent_dispatcher import get_agent_dispatcher
|
||||||
|
from app.services.wechat_service import get_wechat_service
|
||||||
|
|
||||||
|
wechat = get_wechat_service()
|
||||||
|
# 先回复提示,避免用户等太久
|
||||||
|
await wechat.send_text_message(user_id, "正在分析图片,请稍候...")
|
||||||
|
|
||||||
|
dispatcher = get_agent_dispatcher()
|
||||||
|
reply = await dispatcher.handle_image(user_id, media_id)
|
||||||
|
|
||||||
|
await wechat.send_text_message(user_id, reply)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Agent图片处理失败: user={user_id}, error={e}", exc_info=True)
|
||||||
|
try:
|
||||||
|
from app.services.wechat_service import get_wechat_service
|
||||||
|
wechat = get_wechat_service()
|
||||||
|
await wechat.send_text_message(user_id, "图片处理失败,请稍后重试。")
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
async def _process_card_button_click(msg: dict):
|
async def _process_card_button_click(msg: dict):
|
||||||
"""
|
"""
|
||||||
处理模板卡片按钮点击事件(两步状态机)
|
处理模板卡片按钮点击事件(两步状态机)
|
||||||
|
|||||||
Reference in New Issue
Block a user