@openclaw/nextcloud-talk),可透過 Talk 網路鉤子 Bot 將 OpenClaw 連接到自託管的 Nextcloud 執行個體。支援私訊、房間、反應和 Markdown 訊息;媒體會以 URL 形式送出。
安裝
快速設定(初學者)
- 安裝外掛(如上)。
-
在你的 Nextcloud 伺服器上建立 Bot:
保留
--feature response:沒有它,對外回覆會因 401 而失敗。使用./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1修復現有 Bot。 - 在目標房間設定中啟用 Bot。
-
設定 OpenClaw:
- 設定:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - 或環境變數:
NEXTCLOUD_TALK_BOT_SECRET(僅預設帳號)
--url/--token是明確欄位的別名;nc-talk和nc可作為頻道別名):等效的明確欄位:檔案支援的密鑰: - 設定:
- 重新啟動閘道(或完成設定)。
注意事項
- Bot 無法主動發起私訊。使用者必須先傳訊息給 Bot。
- 網路鉤子 URL 必須能從 Nextcloud 伺服器連到;當閘道位於 Proxy 後方時,請設定
webhookPublicUrl。網路鉤子請求會使用 Bot 密鑰以 HMAC-SHA256 簽署;無效簽章會被拒絕並受到速率限制。 - Bot API 不支援媒體上傳;對外媒體會附加為
Attachment: <url>行。 - 網路鉤子酬載不會區分私訊與房間;設定
apiUser+apiPassword以啟用房間類型查詢(快取約 5 分鐘)。沒有它們時,每個對話都會被視為房間。 - 對外請求會經過 SSRF 防護。若 Nextcloud 主機位於受信任的私人/內部網路,請使用
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true選擇加入。 - 設定
apiUser/apiPassword和webhookPublicUrl後,openclaw channels status會探測 Bot,並在缺少response功能時發出警告。
存取控制(私訊)
- 預設:
channels.nextcloud-talk.dmPolicy = "pairing"。未知傳送者會收到配對碼。 - 透過以下方式核准:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- 公開私訊:
channels.nextcloud-talk.dmPolicy="open"加上channels.nextcloud-talk.allowFrom=["*"]。 allowFrom只會比對 Nextcloud 使用者 ID(小寫);會忽略顯示名稱。
房間(群組)
- 預設:
channels.nextcloud-talk.groupPolicy = "allowlist"(以提及為門檻)。 - 使用
channels.nextcloud-talk.rooms將房間加入允許清單,鍵為房間權杖;"*"會設定萬用字元預設值:
- 每個房間的鍵:
requireMention(預設 true)、enabled(false 會停用該房間)、allowFrom(每個房間的傳送者允許清單)、tools(允許/拒絕工具覆寫)、skills(限制載入的 Skills)、systemPrompt。 - 若要不允許任何房間,請保持允許清單為空,或設定
channels.nextcloud-talk.groupPolicy="disabled"。
功能
| 功能 | 狀態 |
|---|---|
| 私訊 | 支援 |
| 房間 | 支援 |
| 執行緒 | 不支援 |
| 媒體 | 僅 URL |
| 反應 | 支援 |
| 原生命令 | 不支援 |
設定參考(Nextcloud Talk)
完整設定:設定 提供者選項:channels.nextcloud-talk.enabled:啟用/停用頻道啟動。channels.nextcloud-talk.baseUrl:Nextcloud 執行個體 URL。channels.nextcloud-talk.botSecret:Bot 共享密鑰(字串或密鑰參照)。channels.nextcloud-talk.botSecretFile:一般檔案密鑰路徑。符號連結會被拒絕。channels.nextcloud-talk.apiUser:用於房間查詢(私訊偵測)和狀態探測的 API 使用者。channels.nextcloud-talk.apiPassword:用於房間查詢的 API/應用程式密碼。channels.nextcloud-talk.apiPasswordFile:API 密碼檔案路徑。channels.nextcloud-talk.webhookPort:網路鉤子監聽器連接埠(預設:8788)。channels.nextcloud-talk.webhookHost:網路鉤子主機(預設:0.0.0.0)。channels.nextcloud-talk.webhookPath:網路鉤子路徑(預設:/nextcloud-talk-webhook)。channels.nextcloud-talk.webhookPublicUrl:外部可連線的網路鉤子 URL。channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(預設:pairing)。open需要allowFrom=["*"]。channels.nextcloud-talk.allowFrom:私訊允許清單(使用者 ID)。channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(預設:allowlist)。channels.nextcloud-talk.groupAllowFrom:房間傳送者允許清單(使用者 ID);未設定時會回退到allowFrom。channels.nextcloud-talk.rooms:每個房間的設定和允許清單(見上方)。- 靜態傳送者存取群組可透過
accessGroup:<name>從allowFrom和groupAllowFrom參照。 channels.nextcloud-talk.historyLimit:群組歷史限制(0 表示停用)。channels.nextcloud-talk.dmHistoryLimit:私訊歷史限制(0 表示停用)。channels.nextcloud-talk.dms:以使用者 ID 為鍵的每個私訊覆寫(historyLimit)。channels.nextcloud-talk.textChunkLimit:對外文字分塊大小,單位為字元(預設:4000)。channels.nextcloud-talk.chunkMode:length(預設)或newline,在依長度分塊前先按空白行(段落邊界)分割。channels.nextcloud-talk.blockStreaming:停用此頻道的區塊串流。channels.nextcloud-talk.blockStreamingCoalesce:區塊串流合併調校。channels.nextcloud-talk.responsePrefix:對外回覆前綴。channels.nextcloud-talk.markdown.tables:Markdown 表格轉譯模式(off | bullets | code | block)。channels.nextcloud-talk.mediaMaxMb:傳入媒體上限(MB)。channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork:允許私人/內部 Nextcloud 主機通過 SSRF 防護。channels.nextcloud-talk.accounts.<id>:每個帳號的覆寫(相同鍵);defaultAccount選擇預設值。環境變數NEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORD只套用於預設帳號。