II. 频道系统 - 5. Signal
📍 课程位置
阶段:II. 频道系统
课序:第 5 课
前置知识:II-4. Slack
后续课程:II-6. iMessage
🎯 本课核心问题(你不懂我就这样教你)
Signal 接入的典型困惑:
Signal 不是开放平台,我怎么接 Bot?
signal-cli 是什么?为什么要用它?
注册/绑定流程为什么这么"麻烦"?
怎么保证安全,不让任何人都能随便给我发命令?
一句话回答:
OpenClaw 的 Signal 通道一般依赖 signal-cli 作为"桥",它代表一个 Signal 账号收发消息。
🧠 心智模型:Signal = "用命令行客户端模拟一个账号"
类比:
Telegram/Slack/Discord:官方给你 Bot 平台(token)
Signal:没有官方 bot 平台
所以我们用 signal-cli 让一台机器"登录一个 Signal 账号",再由 OpenClaw 驱动它收发
这就像:
你没有 API,只能找一个"代聊手机"登录账号,然后让程序控制它。
✅ 验收标准
signal-cli 已安装并可运行
signal-cli 已注册并绑定到某个号码
OpenClaw Signal 通道能收消息
能回消息
配好 dmPolicy(pairing/allowlist)确保安全
🔧 第一步:准备 signal-cli
你需要先确保环境里有 signal-cli(具体安装方式以官方/平台文档为准)。
验证:
signal-cli --version
🔧 第二步:注册/绑定 Signal 账号(核心步骤)
Signal 的"机器人账号"本质上就是一个普通号码。
典型流程:
使用 signal-cli 注册(会发验证码)
输入验证码完成验证
绑定成功后,signal-cli 能代表这个号码收发消息
注意:注册过程会涉及短信/语音验证,可能需要你人工协助一次。
🔧 第三步:在 OpenClaw 配置启用 Signal
在 ~/.openclaw/openclaw.json:
{
channels: {
signal: {
enabled: true,
// 这里通常需要告诉 OpenClaw signal-cli 在哪、用哪个号码
// 字段名以官方文档为准(不同版本可能略有差异)
number: "+86xxxxxxxxxxx",
// 安全策略(最重要)
dmPolicy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["sig:+86yyyyyyyyyyy"],
}
}
}
建议:如果你只给自己用,直接 allowlist 最稳。
🧩 安全建议:Signal 一定要做"最小入口"
因为 Signal 不是 bot 平台,而是"真实账号",所以更要谨慎:
dmPolicy 推荐 pairing 或 allowlist
不要 open
群聊场景更要谨慎(能不用群就别用群)
⚠️ 常见坑与排查
| 现象 | 常见原因 | 排查 |
|---|---|---|
| 收不到消息 | signal-cli 未登录/未绑定 | 先用 signal-cli 自测 |
| 发不出去 | 账号被封/网络问题 | 检查 signal-cli 日志 |
| 注册失败 | 验证码/频控 | 换短信/语音;稍后重试 |
| 乱入风险 | dmPolicy=open | 改 pairing/allowlist |
📝 学习心得
Signal 这章的关键不是"字段多",而是:
它不是标准 bot 平台
你是在"运营一个账号"
因此我给的建议是:
先让 signal-cli 自测收发 OK
再接入 OpenClaw
安全优先:allowlist/pairing
✅ 本课总结(记住 5 句话)
Signal 通道通常依赖 signal-cli 来"模拟一个登录账号"。
先让 signal-cli 自测跑通,再接 OpenClaw。
Signal 的账号就是普通号码,注册/验证需要人工一次。
安全优先:dmPolicy 用 pairing/allowlist,不要 open。
排障先看 signal-cli 是否能独立收发,再看 OpenClaw 配置。
🔗 相关资源
官方文档:https://docs.openclaw.ai/channels/signal
配置参考:https://docs.openclaw.ai/gateway/configuration-reference
下一课:II-6. iMessage