本页内容
本页内容
网关
配置——个人消息通道
channels.* 个人消息通道密钥:WhatsApp、Telegram、Signal、iMessage 和 LINE。
WhatsApp 通过网关的 Web 渠道(Baileys Web)运行。只要存在已链接的会话,就会自动启动。
- 具有
type: "acp"的顶级bindings[]条目为 WhatsApp DM 和组配置持久 ACP 绑定。使用 E.164 直拨号码或match.peer.id中的 WhatsApp 群组 JID。字段语义在 ACP Agents 中共享。
多账户 WhatsApp
- 出站命令默认使用
default账号(如果存在);否则使用排序后的第一个已配置账号 id。 - 可选的
channels.whatsapp.defaultAccount会在其与已配置账号 id 匹配时覆盖该回退默认账号选择。 - 旧的单账号 Baileys auth dir 会由
openclaw doctor迁移到whatsapp/default。 - 每账号覆盖:
channels.whatsapp.accounts.<id>.sendReadReceipts、channels.whatsapp.accounts.<id>.dmPolicy、channels.whatsapp.accounts.<id>.allowFrom。
Telegram
- 机器人令牌:
channels.telegram.botToken或channels.telegram.tokenFile(仅限普通文件;拒绝符号链接),默认账号可回退使用TELEGRAM_BOT_TOKEN。 channels.telegram.joinIntro默认为true。当机器人加入允许的组或超级组时,它会使用组标题、描述和可用的固定消息发布一条介绍。 Telegram 机器人 API 无法读取加入组前的历史记录。将此选项设置为false以禁用介绍,或使用channels.telegram.accounts.<accountId>.joinIntro进行特定于账户的覆盖。每个房间进行一次介绍;参见群加入介绍。私人聊天中绝不会进行介绍。apiRoot仅是 Telegram Bot API 根。使用https://api.telegram.org或您自己的 hosted/proxy 根,而不是https://api.telegram.org/bot<TOKEN>;openclaw doctor --fix删除了意外的尾随/bot<TOKEN>后缀。- 对于
--local模式下的自托管 Bot API 服务器,trustedLocalFileRoots列出 OpenClaw 允许读取的主机路径。请将服务器数据卷挂载到 OpenClaw 主机,并配置其数据根目录或按令牌的目录;/var/lib/telegram-bot-api下的容器路径会映射到这些根目录中。其他绝对路径仍会被拒绝。 - 可选
channels.telegram.defaultAccount在与配置的帐户 ID 匹配时覆盖默认帐户选择。 - 在多帐户设置(2+帐户ID)中,设置显式默认值(
channels.telegram.defaultAccount或channels.telegram.accounts.default)以避免回退路由;当此缺失或无效时,openclaw doctor会发出警告。 configWrites: false阻止 Telegram- 启动的配置写入(超组 ID 迁移、/config set|unset)。actions.reactions控制消息反应和emoji-list,后者列出了当前聊天中允许的标准和自定义反应。- 具有
type: "acp"的顶级bindings[]条目为论坛主题配置持久的 ACP 绑定(在match.peer.id中使用标准chatId:topic:topicId格式)。字段语义在 ACP Agents 中共享。 - Telegram 流式预览使用
sendMessage+editMessageText(适用于私聊和群聊)。 network.dnsResultOrder默认值为"ipv4first",以避免常见的 IPv6 获取失败。- 重试策略:参见 重试策略。
Signal
反应通知模式: off、own(默认)、all、allowlist(来自reactionAllowlist)。
channels.signal.account:将频道启动固定到特定的 Signal 账号身份。channels.signal.configWrites:允许或拒绝 Signal- 发起的配置写入。- 可选的
channels.signal.defaultAccount会在其与已配置账号 id 匹配时覆盖默认账号选择。
iMessage
OpenClaw 会启动 imsg rpc(通过 stdio 的 JSON-RPC)。不需要守护进程或端口。这是新 OpenClaw iMessage 设置的首选路径,前提是主机可以授予 Messages 数据库和 Automation 权限。
已移除 BlueBubbles 支持。channels.bluebubbles 不是当前 OpenClaw 上受支持的运行时配置面。请将旧配置迁移到 channels.imessage;简要说明请参阅 BlueBubbles removal and the imsg iMessage path,完整对照表请参阅 Coming from BlueBubbles。
如果网关未在登录的 Messages Mac 上运行,请保留 channels.imessage.enabled=true 并将 channels.imessage.cliPath 设置为在该 Mac 上运行 imsg "$@" 的网关本地 SSH 包装器的绝对路径。将 remoteHost 设置为 Messages Mac,而不是网关主机。 OpenClaw 自动检测简单透明的 SSH 包装器以实现兼容性,但复杂的包装器需要显式 remoteHost。默认本地 imsg 路径为 macOS-only。
在依赖 SSH 包装器进行生产发送之前,请通过该确切的包装器验证出站 imsg send。某些 macOS TCC 状态将消息自动化分配给 /usr/libexec/sshd-keygen-wrapper,这可以使读取和检查工作,而发送失败,并显示 AppleEvents -1743;请参阅 iMessage 上的 SSH 包装器故障排除部分。
- 可选的
channels.imessage.defaultAccount会在其匹配已配置的账户 id 时覆盖默认账户选择。 - 需要对消息 DB 进行完全磁盘访问。
- 优先使用
chat_id:<id>目标。使用imsg chats --limit 20列出聊天。 - 对于 SSH 设置,
cliPath是 Gateway 主机上的绝对路径。remoteHost(host或user@host)是 Messages Mac,dbPath会在该 Mac 上解释。请使用远程数据库的绝对路径,而不要根据 Gateway 用户的主目录展开路径。 - 已配置或自动检测到的
remoteHost会通过现有的严格 SSH/SCP 传输启用入站附件获取和出站文件暂存。出站文件使用仅所有者可访问的远程临时路径,并在成功、失败或超时后尽力清理;清理失败时会发出警告,并可能留下仅所有者可访问的残留文件。 attachmentRoots和remoteAttachmentRoots会限制入站附件路径(默认值:/Users/*/Library/Messages/Attachments)。- SCP 使用严格的主机密钥检查,因此请检查
~/.ssh/known_hosts中是否已存在 Messages Mac 主机密钥。 channels.imessage.configWrites:允许或拒绝 iMessage- 发起的配置写入。channels.imessage.sendTransport:用于普通出站回复的首选imsgRPC 发送传输方式。auto(默认值)会在 IMCore bridge 运行时对现有聊天使用它,然后回退到 AppleScript;bridge要求使用私有 API 发送;applescript强制使用公开的 Messages 自动化路径。channels.imessage.actions.*:启用私有 API 操作,这些操作还受imsg status/openclaw channels status --probe控制。channels.imessage.includeAttachments默认关闭;在希望代理轮次接收入站媒体之前,请将其设置为true。- bridge/gateway 重新启动后的入站恢复是自动的(GUID 重复数据删除加上陈旧积压年龄围栏)。现有的
channels.imessage.catchup.enabled: true配置仍然被视为已弃用的兼容性配置文件;catchup默认禁用。 channels.imessage.groups:群组注册表和每个群组的设置。使用groupPolicy: "allowlist"时,请配置明确的chat_id键或"*"通配符条目,以便群组消息通过注册表检查。- 具有
type: "acp"的顶级bindings[]条目可以将 iMessage 会话绑定到持久 ACP 会话。在match.peer.id中使用规范化句柄或显式聊天目标(chat_id:*、chat_guid:*、chat_identifier:*)。共享字段语义:ACP Agents。
iMessage SSH 包装示例
使用远程 imsg v0.13.4 时,投票必须使用 pollOptionId;其 poll.vote RPC 方法不会解析索引或文本选择器。远程环境也无法回复非零部分索引的附件。这些限制不会改变本地 imsg 的行为。
LINE
LINE 由插件支持并在 channels.line 下配置。