最近我把 OpenClaw 串接到 LINE,並把 bot 加入群組,原本以為只要加入成功,就能直接在群組中互動。結果實際測試後卻發現:
- 私訊 bot 沒問題
- bot 也確實已加入群組
- 但在群組裡呼叫它,卻完全沒有反應
這篇文章整理我這次的排查過程,希望能幫助遇到相同問題的人少走一些彎路。
問題現象
這次遇到的情況很明確:
- 私訊 bot 時可以正常回覆
- bot 已被加入 LINE 群組
- 但在群組裡傳送訊息,例如:
蝦蝦 在嗎
蝦蝦 回 1
bot 都沒有反應。
第一步:先確認是不是整體壞掉
我先直接私訊 bot 測試,確認:
- LINE channel 沒壞
- OpenClaw gateway 有正常運作
- bot 本身不是離線
- webhook 至少對私訊事件是正常的
結果是:私訊正常
這代表問題不是整體服務故障,而是更可能集中在群組路徑。
第二步:檢查 OpenClaw 狀態
接著查看 OpenClaw 與 gateway 狀態:
openclaw status --deep
openclaw gateway status
檢查後確認:
- OpenClaw 正常
- gateway 正常
- LINE provider 有啟動
所以可以先排除整個系統掛掉的可能。
第三步:檢查 openclaw.json
接著查看設定檔,找到 LINE 相關設定:
"channels": {
"line": {
"enabled": true,
"dmPolicy": "pairing",
"groupPolicy": "allowlist"
}
}
這裡的重點是:
- 私訊使用 pairing
- 群組使用 allowlist
也就是說,群組不是自動允許,而是需要符合 allowlist 規則。
第四步:檢查 allowlist
進一步檢查後發現,目前 allow 清單裡只有使用者本人的 LINE ID,沒有群組 ID。
這代表:
即使 bot 已經加入群組,只要該群組 ID 沒有進 allowlist,群組訊息就可能被擋住。
第五步:嘗試查群組 ID
我接著用 OpenClaw 指令查詢群組:
openclaw directory groups list --channel line --account default --json
結果回傳是空的:
[]
這表示當下沒有成功取得群組 ID,也因此無法直接把該群組加入 allowlist。
第六步:回頭檢查 LINE 設定
接著回頭確認 LINE Developers / Official Account 的幾個重點:
- Use webhook 是否開啟
- Webhook URL 是否正確
- Verify 是否成功
- 是否允許 bot 加入群組 / 多人聊天室
- 是否使用正確的 Messaging API channel
確認後,這些設定都沒有問題。
第七步:先把 groupPolicy 改成 open
因為當下無法取得 group ID,所以先做一個最小調整,把:
groupPolicy = allowlist
改成:
groupPolicy = open
這一步的目的,是先排除 allowlist 的限制,驗證群組是否能正常工作。
第八步:設定改完後要重啟 gateway
修改設定後,日誌裡出現提示:
Updated channels.line.groupPolicy. Restart the gateway to apply.
這表示設定雖然已經寫入檔案,但還沒有真正生效。
所以如果只改設定、不重啟 gateway,接下來的測試可能還是在測舊設定。
第九步:重啟 gateway
最後執行:
openclaw gateway restart
重啟後再確認:
- gateway 正常 running
- LINE provider 已重新啟動
- 新設定已套用
到這裡,群組設定的變更才算真正生效。
這次排查學到的事
1. 私訊正常,不代表群組一定正常
私訊與群組是不同路徑,私訊可用只能證明 bot 沒整體故障。
2. allowlist 很容易成為盲點
bot 看起來在群組裡,不代表該群組真的被允許觸發回應。
3. 改完設定不代表已生效
有些設定需要重啟 gateway 才會真正套用。
4. 排查要一層一層拆
這次最有效的順序是:
- 先測私訊
- 再看 OpenClaw 狀態
- 再檢查 groupPolicy
- 再看 allowlist
- 最後重啟 gateway
建議的排查順序
如果你也遇到 LINE 群組裡 bot 不回應的問題,可以照這個順序檢查:
1. 私訊 bot,確認私訊是否正常
2. 執行 openclaw status --deep
3. 執行 openclaw gateway status
4. 檢查 openclaw.json 裡的 groupPolicy
5. 確認 allowlist 是否包含群組 ID
6. 執行 openclaw directory groups list --channel line --account default --json
7. 修改設定後記得重啟 gateway
結語
這次問題表面上看起來像是 LINE 群組訊息沒進來,但實際排查後發現,真正的關鍵在於:
- groupPolicy 使用 allowlist
- allowlist 裡沒有群組 ID
- 設定修改後還需要重啟 gateway 才會生效
如果你也在用 OpenClaw 串接 LINE,建議不要只檢查 webhook,
groupPolicy、allowlist 和 gateway restart 這幾個地方也一定要一起看。
沒有留言:
張貼留言