OpenClaw Nextcloud Talk 渠道
将 OpenClaw 连接到 Nextcloud Talk,这是一个内置于 Nextcloud 生态系统中、注重隐私保护的企业通信平台。该集成采用基于 Webhook 的机器人架构 -- Nextcloud Talk 通过 Webhook 将消息事件发送到你的 Gateway,机器人再通过 Talk REST API 进行回复。这使你的 AI 助手能够在自托管的 Nextcloud 环境中参与私聊、群组对话,并对消息进行表情回应。
Nextcloud Talk 支持的功能
文本消息
支持
媒体与文件
支持
消息反应
支持
消息线程
不支持
语音消息
不支持
群聊
支持
Nextcloud Talk 前置条件
- 一台 Nextcloud 服务器(v27.1+),具有管理员权限并已安装 Talk 应用
- 一个共享密钥(40-128 个字符),用于 Webhook 签名验证
- Gateway 的 Webhook 端点可从 Nextcloud 服务器访问(公网 URL 或内网地址)
- 已安装并运行 OpenClaw Gateway
- 已通过 'openclaw plugins install @openclaw/nextcloud-talk' 安装 Nextcloud Talk 插件
Nextcloud Talk 快速设置
安装 Nextcloud Talk 插件
运行 'openclaw plugins install @openclaw/nextcloud-talk' 为你的 Gateway 添加 Nextcloud Talk 支持。
在 Nextcloud 服务器上注册机器人
通过 SSH 登录到你的 Nextcloud 服务器,运行 OCC 命令:./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature reaction。将 <shared-secret> 替换为一个 40 个字符以上的强密钥,将 <webhook-url> 替换为 Gateway 的公网可访问 Webhook 端点(例如 https://gateway.example.com:8788/webhook)。
启用机器人并配置
在 Nextcloud Talk 中,进入房间设置并启用 OpenClaw 机器人。然后将渠道配置添加到 ~/.openclaw/openclaw.json 文件中,填写你的 baseUrl 和 botSecret。使用 'openclaw start' 启动 Gateway,并在房间中发送一条消息以验证连接。
Nextcloud Talk 配置示例
{
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "https://nextcloud.example.com",
"botSecret": "your-shared-secret-min-40-chars",
"dmPolicy": "pairing"
}
}
}Nextcloud Talk 深入了解
架构概览
通过 OCC 注册机器人
./occ talk:bot:install "OpenClaw" "a]72@Bz&V!LKMO*xhQib7p^E%yzGMG(8a7Bp*x6o" "https://gateway.example.com:8788/webhook" --feature reaction私聊策略
{
"channels": {
"nextcloud-talk": {
"dmPolicy": "pairing",
"allowFrom": ["user-id-1", "user-id-2"]
}
}
}房间配置
{
"channels": {
"nextcloud-talk": {
"groupPolicy": "allowlist",
"rooms": {
"abc123token": {
"requireMention": true
},
"def456token": {
"requireMention": false
}
}
}
}
}用于房间类型检测的 API 凭据
{
"channels": {
"nextcloud-talk": {
"apiUser": "bot-service-account",
"apiPassword": "service-account-password",
"apiPasswordFile": "/run/secrets/nc-api-password"
}
}
}Webhook 配置
{
"channels": {
"nextcloud-talk": {
"webhookPort": 8788,
"webhookHost": "0.0.0.0",
"webhookPath": "/webhook",
"webhookPublicUrl": "https://gateway.example.com:8788/webhook"
}
}
}消息处理与流式传输
{
"channels": {
"nextcloud-talk": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"blockStreaming": true,
"blockStreamingCoalesce": true,
"mediaMaxMb": 10
}
}
}对话历史
{
"channels": {
"nextcloud-talk": {
"historyLimit": 20,
"dmHistoryLimit": 50
}
}
}表情回应支持
安全性与 Webhook 签名
Nextcloud Talk 配置参考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 启用或禁用 Nextcloud Talk 渠道 |
| baseUrl | string | "" | Nextcloud 服务器的完整 URL(例如 https://nextcloud.example.com) |
| botSecret | string | "" | 用于 Webhook 签名验证的共享密钥(必须与 OCC 安装时的密钥一致) |
| botSecretFile | string | "" | 包含共享密钥的文件路径(替代内联 botSecret) |
| apiUser | string | "" | 用于 API 调用的 Nextcloud 用户名(用于房间类型检测) |
| apiPassword | string | "" | API 用户账号的密码 |
| apiPasswordFile | string | "" | 包含 API 密码的文件路径(替代内联 apiPassword) |
| dmPolicy | string | "pairing" | 私聊访问策略:'pairing'(验证码)、'open'(任意用户)或 'disabled'(禁用私聊) |
| allowFrom | string[] | [] | 允许与机器人私聊的 Nextcloud 用户 ID(使用 ["*"] 开放访问) |
| groupPolicy | string | "allowlist" | 房间访问策略:'allowlist'(仅管理员启用的房间) |
| webhookPort | number | 8788 | 内置 Webhook HTTP 服务器的端口 |
| webhookHost | string | "0.0.0.0" | Webhook 服务器绑定的网络接口 |
| webhookPath | string | "/webhook" | Webhook 端点的 URL 路径 |
| webhookPublicUrl | string | "" | Webhook 端点的完整公网 URL(反向代理环境下必须配置) |
| historyLimit | number | 20 | 群组对话中作为上下文包含的最大历史消息数 |
| dmHistoryLimit | number | 50 | 私聊对话中作为上下文包含的最大历史消息数 |
| textChunkLimit | number | 4000 | 每个消息分块的最大字符数 |
| chunkMode | string | "length" | 文本分割模式:'length'(按字符限制)或 'newline'(按段落边界) |
| blockStreaming | boolean | false | 等待 AI 完整回复后再发送(不使用流式传输) |
| blockStreamingCoalesce | boolean | false | 将流式传输的分块合并为一条最终消息 |
| mediaMaxMb | number | 10 | 媒体 URL 引用的最大文件大小(MB) |
启用或禁用 Nextcloud Talk 渠道
Nextcloud 服务器的完整 URL(例如 https://nextcloud.example.com)
用于 Webhook 签名验证的共享密钥(必须与 OCC 安装时的密钥一致)
包含共享密钥的文件路径(替代内联 botSecret)
用于 API 调用的 Nextcloud 用户名(用于房间类型检测)
API 用户账号的密码
包含 API 密码的文件路径(替代内联 apiPassword)
私聊访问策略:'pairing'(验证码)、'open'(任意用户)或 'disabled'(禁用私聊)
允许与机器人私聊的 Nextcloud 用户 ID(使用 ["*"] 开放访问)
房间访问策略:'allowlist'(仅管理员启用的房间)
内置 Webhook HTTP 服务器的端口
Webhook 服务器绑定的网络接口
Webhook 端点的 URL 路径
Webhook 端点的完整公网 URL(反向代理环境下必须配置)
群组对话中作为上下文包含的最大历史消息数
私聊对话中作为上下文包含的最大历史消息数
每个消息分块的最大字符数
文本分割模式:'length'(按字符限制)或 'newline'(按段落边界)
等待 AI 完整回复后再发送(不使用流式传输)
将流式传输的分块合并为一条最终消息
媒体 URL 引用的最大文件大小(MB)
Nextcloud Talk 常见问题
Nextcloud Talk 故障排查
Webhook URL 不可访问、机器人未在房间中启用,或共享密钥不匹配。
openclaw.json 中的共享密钥与机器人安装时使用的密钥不匹配。
管理员未在目标房间中启用机器人,或 requireMention 为 true 但机器人未被 @提及。
未配置 API 凭据(apiUser、apiPassword)。
配置的 Webhook 端口已被占用或主机绑定无效。