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", "")
|
session_key = watcher.get("session_key", "")
|
||||||
platform_name = watcher.get("platform", "")
|
platform_name = watcher.get("platform", "")
|
||||||
chat_id = watcher.get("chat_id", "")
|
chat_id = watcher.get("chat_id", "")
|
||||||
|
thread_id = watcher.get("thread_id", "")
|
||||||
notify_mode = self._load_background_notifications_mode()
|
notify_mode = self._load_background_notifications_mode()
|
||||||
|
|
||||||
logger.debug("Process watcher started: %s (every %ss, notify=%s)",
|
logger.debug("Process watcher started: %s (every %ss, notify=%s)",
|
||||||
@@ -3730,7 +3731,8 @@ class GatewayRunner:
|
|||||||
break
|
break
|
||||||
if adapter and chat_id:
|
if adapter and chat_id:
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
logger.error("Watcher delivery error: %s", e)
|
logger.error("Watcher delivery error: %s", e)
|
||||||
break
|
break
|
||||||
@@ -3749,7 +3751,8 @@ class GatewayRunner:
|
|||||||
break
|
break
|
||||||
if adapter and chat_id:
|
if adapter and chat_id:
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
logger.error("Watcher delivery error: %s", e)
|
logger.error("Watcher delivery error: %s", e)
|
||||||
|
|
||||||
|
|||||||
@@ -1066,6 +1066,7 @@ def terminal_tool(
|
|||||||
"session_key": session_key,
|
"session_key": session_key,
|
||||||
"platform": os.getenv("HERMES_SESSION_PLATFORM", ""),
|
"platform": os.getenv("HERMES_SESSION_PLATFORM", ""),
|
||||||
"chat_id": os.getenv("HERMES_SESSION_CHAT_ID", ""),
|
"chat_id": os.getenv("HERMES_SESSION_CHAT_ID", ""),
|
||||||
|
"thread_id": os.getenv("HERMES_SESSION_THREAD_ID", ""),
|
||||||
})
|
})
|
||||||
|
|
||||||
return json.dumps(result_data, ensure_ascii=False)
|
return json.dumps(result_data, ensure_ascii=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user