fix: route background process watcher notifications to Telegram forum topics (#1481)
Salvaged from PR #1146 by spanishflu-est1918. Background process progress/completion messages were sent with only chat_id, landing in the general topic instead of the originating forum topic. Thread the thread_id from HERMES_SESSION_THREAD_ID through the watcher payload and pass it as metadata to adapter.send() so Telegram routes notifications to the correct topic. The env var export (HERMES_SESSION_THREAD_ID in _set_session_env / _clear_session_env) already existed on main — this commit adds the missing watcher plumbing. Co-authored-by: spanishflu-est1918 <spanishflu-est1918@users.noreply.github.com>
This commit is contained in:
@@ -3683,6 +3683,7 @@ class GatewayRunner:
|
||||
session_key = watcher.get("session_key", "")
|
||||
platform_name = watcher.get("platform", "")
|
||||
chat_id = watcher.get("chat_id", "")
|
||||
thread_id = watcher.get("thread_id", "")
|
||||
notify_mode = self._load_background_notifications_mode()
|
||||
|
||||
logger.debug("Process watcher started: %s (every %ss, notify=%s)",
|
||||
@@ -3730,7 +3731,8 @@ class GatewayRunner:
|
||||
break
|
||||
if adapter and chat_id:
|
||||
try:
|
||||
await adapter.send(chat_id, message_text)
|
||||
send_meta = {"thread_id": thread_id} if thread_id else None
|
||||
await adapter.send(chat_id, message_text, metadata=send_meta)
|
||||
except Exception as e:
|
||||
logger.error("Watcher delivery error: %s", e)
|
||||
break
|
||||
@@ -3749,7 +3751,8 @@ class GatewayRunner:
|
||||
break
|
||||
if adapter and chat_id:
|
||||
try:
|
||||
await adapter.send(chat_id, message_text)
|
||||
send_meta = {"thread_id": thread_id} if thread_id else None
|
||||
await adapter.send(chat_id, message_text, metadata=send_meta)
|
||||
except Exception as e:
|
||||
logger.error("Watcher delivery error: %s", e)
|
||||
|
||||
|
||||
@@ -1066,6 +1066,7 @@ def terminal_tool(
|
||||
"session_key": session_key,
|
||||
"platform": os.getenv("HERMES_SESSION_PLATFORM", ""),
|
||||
"chat_id": os.getenv("HERMES_SESSION_CHAT_ID", ""),
|
||||
"thread_id": os.getenv("HERMES_SESSION_THREAD_ID", ""),
|
||||
})
|
||||
|
||||
return json.dumps(result_data, ensure_ascii=False)
|
||||
|
||||
Reference in New Issue
Block a user