feat(agent-office): telegram render_<id> callback dispatches to InstaAgent
This commit is contained in:
@@ -37,6 +37,9 @@ async def _handle_callback(callback_query: dict) -> Optional[dict]:
|
|||||||
if callback_id.startswith("realestate_bookmark_"):
|
if callback_id.startswith("realestate_bookmark_"):
|
||||||
return await _handle_realestate_bookmark(callback_query, callback_id)
|
return await _handle_realestate_bookmark(callback_query, callback_id)
|
||||||
|
|
||||||
|
if callback_id.startswith("render_"):
|
||||||
|
return await _handle_insta_render(callback_query, callback_id)
|
||||||
|
|
||||||
cb = get_telegram_callback(callback_id)
|
cb = get_telegram_callback(callback_id)
|
||||||
if not cb:
|
if not cb:
|
||||||
return None
|
return None
|
||||||
@@ -97,6 +100,38 @@ async def _handle_realestate_bookmark(callback_query: dict, callback_id: str) ->
|
|||||||
return {"ok": False, "error": str(e)}
|
return {"ok": False, "error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
|
async def _handle_insta_render(callback_query: dict, callback_id: str) -> dict:
|
||||||
|
"""render_{keyword_id} 콜백 → InstaAgent.on_callback('render', ...).
|
||||||
|
|
||||||
|
텔레그램 인라인 버튼이 보낸 callback_data가 `render_<keyword_id>` 형식.
|
||||||
|
InstaAgent._push_keyword_candidates가 callback_data를 그대로 박아 보내며,
|
||||||
|
별도 DB lookup 없이 keyword_id를 파싱해 dispatch한다."""
|
||||||
|
from .messaging import send_raw
|
||||||
|
from ..agents import AGENT_REGISTRY
|
||||||
|
|
||||||
|
await api_call(
|
||||||
|
"answerCallbackQuery",
|
||||||
|
{"callback_query_id": callback_query["id"], "text": "카드 생성 시작"},
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
keyword_id = int(callback_id.removeprefix("render_"))
|
||||||
|
except ValueError:
|
||||||
|
await send_raw("⚠️ 잘못된 render 콜백 데이터")
|
||||||
|
return {"ok": False, "error": "invalid_callback_data"}
|
||||||
|
|
||||||
|
agent = AGENT_REGISTRY.get("insta")
|
||||||
|
if not agent:
|
||||||
|
await send_raw("⚠️ insta agent 미등록")
|
||||||
|
return {"ok": False, "error": "agent_missing"}
|
||||||
|
|
||||||
|
try:
|
||||||
|
return await agent.on_callback("render", {"keyword_id": keyword_id})
|
||||||
|
except Exception as e:
|
||||||
|
await send_raw(f"⚠️ 카드 생성 실패: {e}")
|
||||||
|
return {"ok": False, "error": str(e)}
|
||||||
|
|
||||||
|
|
||||||
async def _handle_message(message: dict, agent_dispatcher) -> Optional[dict]:
|
async def _handle_message(message: dict, agent_dispatcher) -> Optional[dict]:
|
||||||
"""슬래시 명령 메시지 처리."""
|
"""슬래시 명령 메시지 처리."""
|
||||||
from .router import parse_command, resolve_agent_command, HELP_TEXT
|
from .router import parse_command, resolve_agent_command, HELP_TEXT
|
||||||
|
|||||||
Reference in New Issue
Block a user