消息平台
Signal
状态:外部 CLI 集成。网关通过 HTTP JSON-RPC + SSE 与 signal-cli 通信。
先决条件
在开始之前,请确保你具备以下条件:
- 服务器上已 安装 OpenClaw(以下 Linux 流程在 Ubuntu 24 上测试通过)
- 网关运行的主机上已安装
signal-cli - 一个可以接收验证短信的手机号码(用于短信注册方式)
- 注册时需要浏览器访问 Signal 验证码网站 (
signalcaptchas.org)
快速设置(新手友好)
按照以下步骤快速启动你的 Signal 机器人:
- 为机器人准备一个独立的 Signal 号码(强烈推荐)
- 安装
signal-cli(如果使用 JVM 版本,需要先安装 Java) - 选择一种设置方式:
- 方式 A(二维码链接): 运行
signal-cli link -n "OpenClaw",然后用 Signal App 扫描二维码 - 方式 B(短信注册): 通过验证码 + 短信验证注册专用号码
- 方式 A(二维码链接): 运行
- 配置 OpenClaw 并重启网关
- 发送第一条私信,然后批准配对(
openclaw pairing approve signal)
最小配置示例:
{
channels: {
signal: {
enabled: true,
account: "+15551234567",
cliPath: "signal-cli",
dmPolicy: "pairing",
allowFrom: ["+15557654321"],
},
},
}
核心字段说明:
| 字段 | 说明 |
|---|---|
account | 机器人的电话号码,E.164 格式(如 +15551234567) |
cliPath | signal-cli 的路径;如果在 PATH 环境变量中,直接填 signal-cli 即可 |
dmPolicy | 私信访问策略(推荐使用 pairing) |
allowFrom | 允许发送私信的电话号码或 uuid: 值列表 |
什么是 Signal 频道?
本节帮你理解 Signal 频道的工作原理:
- 通过
signal-cli实现 Signal 消息收发(非嵌入式 libsignal 方案) - 确定性路由:回复消息始终返回给同一个 Signal 用户或群组
- 私信会话共享智能体(agent)的主会话;群组会话相互隔离(格式为
agent::signal:group:)
配置写入权限
默认情况下,Signal 频道允许通过 /config set|unset 命令触发配置更新(需要 commands.config: true)。如果需要禁用此功能:
{
channels: { signal: { configWrites: false } },
}
号码模型(重要概念)
理解这一点很重要,能帮你避免常见问题:
- 网关连接的是一个 Signal 设备(即
signal-cli所在的账户) - 如果你在个人 Signal 账户上运行机器人,它会自动忽略你自己发送的消息(防止消息循环)
- 想要实现"我给机器人发消息,它回复我"的场景,请使用独立的机器人号码
设置方式 A:链接现有 Signal 账户(二维码扫描)
适合已有 Signal 账户、想快速添加机器人设备的用户。
- 安装
signal-cli(JVM 版本或原生版本均可) - 链接机器人账户:
- 运行
signal-cli link -n "OpenClaw",然后用 Signal App 扫描生成的二维码
- 运行
- 配置 Signal 并启动网关
配置示例:
{
channels: {
signal: {
enabled: true,
account: "+15551234567",
cliPath: "signal-cli",
dmPolicy: "pairing",
allowFrom: ["+15557654321"],
},
},
}
多账户支持: 使用 channels.signal.accounts 为每个账户单独配置,可指定 name 字段。共享模式详见 gateway/configuration。