Outbound Session Mirroring の改善:メッセージ履歴を正しく同期する方法
メッセージを送信したはずなのに、チャットの履歴がバラバラになってしまった経験はありませんか?あるいは、ボットからの返信がユーザーの画面で正しいスレッドに表示されないといった問題です。マルチチャネルのメッセージングアプリを扱っていると、こうしたセッション管理の不整合はよく起こる悩みです。
これまでのシステムでは、送信したメッセージが「送信元」のセッションに記録されてしまい、本来の宛先であるチャットセッションに正しく反映されないことがありました。今回のアップデートでは、このルーティングロジックを刷新し、送信メッセージが常に正しい宛先のセッションにミラーリングされるように改善しました。
この機能を動作させるために必要な要素は以下の通りです。
- Core および plugin のチャネルルーティング設定
- Gateway の送信設定
- 対応する各拡張機能(Slack, Discord, Telegram, Matrix, MS Teams, Mattermost, BlueBubbles, Nextcloud Talk, Zalo, Nostr, Tlon)
クイックスタート
Section titled “クイックスタート”アウトバウンドメッセージを正しいセッションに紐付けるための新しい流れを説明します。5分ほどで概要を把握できます。
1. セッションルーティングの解決
Section titled “1. セッションルーティングの解決”新しいヘルパー関数 resolveOutboundSessionRoute を使用します。これは buildAgentSessionKey を使い、dmScope や identityLinks に基づいてターゲットとなる sessionKey を作成します。
2. セッションエントリの自動作成
Section titled “2. セッションエントリの自動作成”セッションが存在しない場合でも、ensureOutboundSessionEntry が recordSessionMetaFromInbound を介して最小限の MsgContext を書き込みます。これにより、最初のメッセージ送信時に自動的にセッションが作成されます。
3. Gateway での自動派生
Section titled “3. Gateway での自動派生”Gateway から送信する場合、sessionKey を省略できるようになりました。省略した場合、システムがターゲットとデフォルトの agent から sessionKey を自動的に導き出し、そこにミラーリングを行います。
4. 各プラットフォームの正規化
Section titled “4. 各プラットフォームの正規化”各チャネルの特性に合わせて sessionKey が調整されます。
- Slack:
resolveThreadSessionKeysを使用し、スレッド ID をサフィックスとして付与します。 - Discord: インバウンドと一致させるため、
useSuffix=falseでスレッド ID を処理します。 - Telegram: トピック ID を
chatId:topic:<id>の形式にマッピングします。 - Mattermost: DM のセッションキー作成時に
@を除去します。
トラブルシューティング
Section titled “トラブルシューティング”設定中に発生する可能性のある問題と解決策です。
-
Voice-call plugin で履歴が同期されない 現在、Voice-call plugin は
voice:<phone>というカスタム形式のsessionKeyを使用しています。アウトバウンドのマッピングが標準化されていないため、message-toolでボットから発信を行う場合は、個別のマッピング追加を検討してください。 -
外部プラグインでミラーリングが失敗する 同梱されているプラグイン以外の外部プラグインを使用している場合、
FromやToのフォーマットが標準と異なると正しくルーティングされないことがあります。フォーマットがインバウンドの形式と一致しているか確認してください。
完了のステップ
Section titled “完了のステップ”設定が完了したら、実際にメッセージを送信して、ターゲットのチャネルセッションに正しくメッセージが記録されるかテストしてください。
より詳細な設定や個別のケースについては、AI Setup Assistant で質問してみてください。
次のステップ
Section titled “次のステップ”関連する実装の詳細は以下のファイルを参照してください。
src/infra/outbound/outbound-session.tssrc/infra/outbound/outbound-send-service.tssrc/infra/outbound/message-action-runner.tssrc/gateway/server-methods/send.tssrc/agents/tools/message-tool.ts
OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。