$cd ../troubleshooting/
ゲートウェイ再起動後のTelegramグループセッションリセット
// OpenClawゲートウェイを再起動した後、Telegramグループにバインドされたエージェントはsessions.jsonから復元する代わりに新しいセッションを作成します。
symptoms.log
🔍 症状
✗ゲートウェイ再起動後、ボットが以前の会話の記憶を失う
✗エージェントがグループと初めて会うかのように自己紹介する
✗sessions.jsonが存在し、正しいセッションエントリがある
✗Telegramグループチャットが影響を受ける — プライベートDMは正しく復元されることがある
check_sessions.sh
✅ 修正1 — sessions.jsonが永続化されているか確認
セッション永続化を確認
# sessions.jsonが存在し、Telegramグループセッションがあるか確認 cat ~/.openclaw/sessions.json | jq 'keys' # telegram:group:-1001234567890のようなエントリを探す # 空または欠けている場合、セッションは一度も永続化されていない
agent_config.yaml
✅ 修正2 — グループエージェントに明示的なsessionKeyを設定
sessions.jsonのキーと一致する明示的なsessionKeyを設定
agents:
- name: my-group-bot
channel: telegram
sessionKey: "telegram:group:-1001234567890" # 明示的なキー
memory:
persist: truegateway.yaml
✅ 修正3 — ゲートウェイブート時のセッション復元を有効化
ゲートウェイ起動時にsessions.jsonからセッションを強制復元
gateway:
sessions:
restoreOnBoot: true
restoreChannels:
- telegramℹ 既知のバグ
これはIssue #35283で追跡されている確認済みのバグです。セッションキーマッピングが存在するがグループチャットを指している場合、ゲートウェイブートがsessions.jsonからTelegramグループセッションを再ハイドレートしないことが根本原因です。修正が進行中です。
❓ FAQ
Q1. sessions.jsonはどこに保存されていますか?
デフォルトはホストの~/.openclaw/sessions.json、またはDocker内の/app/data/sessions.jsonです。再起動後も永続化されるか確認してください。Dockerの場合はデータディレクトリにボリュームマウントを追加します:'./data:/app/data'。このマウントがないと、コンテナ再起動のたびにセッションファイルが削除されます。
Q2. 手動でセッションを復元できますか?
はい。sessions.jsonのバックアップがあれば、'docker compose down'でゲートウェイを停止し、~/.openclaw/sessions.jsonにファイルを置き換え、'docker compose up -d'で再起動します。ゲートウェイは起動時にsessions.jsonを読み取ります。再起動後、TelegramグループにテストメッセージをさしてのセッションAが復元されたか確認してください。
Q3. WhatsAppやDiscordのセッションにも影響しますか?
WhatsAppセッションは独立した認証状態ディレクトリ(Baileys authフォルダ)を使用し、sessions.jsonの問題の影響を受けません。Discordセッションはトークンベースで、ボットトークンはステートレスで再起動後にセッションファイルなしで自動的に再接続されます。このバグはsessions.jsonのTelegramグループセッションキーマッピングに固有です。
Q4. TelegramグループのチャットIDはどうやって調べますか?
チャットIDはsessionKeyの番号です(例:'telegram:group:-1001234567890')。調べる方法:(1) グループに@userinfobotを追加 — グループIDを報告します。(2) OpenClawのデバッグログを確認 — グループからメッセージが届くたびにchat_idが記録されます。(3) Telegram Bot APIを使用:グループからメッセージを送った後、'https://api.telegram.org/bot<token>/getUpdates'にGETリクエストを送ります。
Q5. 修正後数日でまたリセットされます。何が起きているのですか?
これは通常、sessions.jsonが更新ではなく上書きされていることを意味します。デプロイパイプラインに'docker compose down -v'(ボリュームを削除する)やデプロイ時にデータディレクトリを上書きするものがないか確認してください。'--force-recreate'を使用しているかも確認してください(コンテナのファイルシステムを破壊します)。バインドマウントの代わりに名前付きDockerボリューム('sessions_data:/app/data')を使用してください — 名前付きボリュームは'--force-recreate'後も残ります。
Q6. セッションがリセットされたときに通知を受け取る方法はありますか?
はい。監視設定でwebhookまたはTelegram通知を設定できます。OpenClawはセッションリセットを検出した際に特定のTelegramチャットに自己通知を送ることができます。または、ゲートウェイ設定で'notify_on_session_reset: true'を設定してください — セッションが復元ではなくゼロから作成されるたびに、ボット自身のチャット(または指定された管理者チャット)にメッセージが送られます。