跳到內容

Outbound Session Mirroring 重構:解決訊息紀錄錯位問題

寫 Bot 最煩的就是訊息紀錄對不起來。你明明把訊息傳出去了,但在後台看對話紀錄時,那則訊息卻出現在錯誤的 Session,甚至根本沒出現,因為系統還沒幫那個聯絡人建立 Session。這種開發痛點在處理多平台(如 Slack、Discord 或 Telegram)的 Thread 與 Topic 時特別明顯。

這次我們針對 Outbound Session Mirroring 進行了重構(Issue #1520),確保發出的訊息能精準鏡像到目標頻道的 Session,而不再只是塞進當前的 Agent Session。

  • 專案核心代碼與插件頻道(Plugin channel)
  • Gateway API 存取權限
  • 支援的 Extension(如 Slack, Discord, Telegram, Mattermost, Matrix, MS Teams, Zalo 等)

這次更新的核心在於自動化處理 Outbound 路由,你不需要手動計算複雜的 Session Key。

  1. 自動推導 Session Key: 現在 runMessageAction 會自動調用 resolveOutboundSessionRoute。它會根據 dmScope 和 identityLinks 幫你構建正確的 sessionKey。

  2. Gateway 免傳 Session Key: 如果你透過 Gateway 使用 send API,現在可以省略 sessionKey。系統會根據目標(target)和預設 Agent 自動推導並確保 Session 條目存在。

  3. 規範化處理: 所有寫入的 Session Key 都會自動轉為小寫(lowercase),避免大小寫不一致導致的紀錄分裂。

  4. 平台特定修正:

    • Mattermost: 自動移除 target 中的 @ 符號以對齊 DM 路由。
    • BlueBubbles: 自動移除群組 target 的 chat_* 前綴。
    • Telegram: Topic ID 會自動映射至 chatId:topic:<id> 格式。
    • Slack: 自動處理 Thread 鏡像,並對 Channel ID 進行不區分大小寫的匹配。
  • Voice-call 插件紀錄失效: 目前 Voice-call 插件使用自定義的 voice:<phone> Session Key,這部分尚未納入標準化重構。如果你需要 message-tool 支援語音通話發送,需要額外添加映射邏輯。
  • 外部插件格式不相容: 如果你的外部插件使用了非標準的 From/To 格式(超出目前內建的 Extension 範圍),訊息鏡像可能無法正確對齊 Inbound 格式。

如果你在設定過程中遇到問題,可以直接詢問 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。