跳到主要内容

Signal

Hermes 通过运行在 HTTP 模式下的 signal-cli daemon 接入 Signal。适配器通过 SSE 实时接收消息,并通过 JSON-RPC 发送回复。

前提条件

  • signal-cli
  • Java 17+
  • 一个已安装 Signal 的手机号

第 1 步:关联 Signal 账号

signal-cli link -n "HermesAgent"

然后在手机的 Settings → Linked Devices 中扫码关联。

第 2 步:启动 signal-cli Daemon

signal-cli --account +1234567890 daemon --http 127.0.0.1:8080

验证:

curl http://127.0.0.1:8080/api/v1/check

第 3 步:配置 Hermes

交互式设置

hermes gateway setup

手动配置

SIGNAL_HTTP_URL=http://127.0.0.1:8080
SIGNAL_ACCOUNT=+1234567890
SIGNAL_ALLOWED_USERS=+1234567890,+0987654321
SIGNAL_GROUP_ALLOWED_USERS=groupId1,groupId2
SIGNAL_HOME_CHANNEL=+1234567890

访问控制

私聊

  1. 设置了 SIGNAL_ALLOWED_USERS 时,仅这些用户可聊天
  2. 未设置时,未知用户会收到配对码
  3. 设置 SIGNAL_ALLOW_ALL_USERS=true 时允许所有人

群组

ConfigurationBehavior
Not set (default)忽略所有群消息
Set with group IDs仅监听列出的群组
Set to *监听所有群组

功能

  • 支持双向图片、音频和文档附件
  • 处理消息时会发送 typing indicator
  • 日志中的手机号会自动脱敏
  • 支持 “Note to Self” 场景
  • SSE 连接掉线后会自动重连

故障排除

ProblemSolution
无法连接 signal-cli确认 daemon 已启动
收不到消息检查 SIGNAL_ALLOWED_USERS 格式是否为 E.164
signal-cli 不在 PATH 中安装 signal-cli 并加入 PATH
群消息被忽略配置 SIGNAL_GROUP_ALLOWED_USERS
重复消息确认只运行了一个 signal-cli 实例

安全

  • 务必配置访问控制
  • 日志中手机号会自动脱敏
  • 群支持建议默认关闭,除非确实需要
  • ~/.local/share/signal-cli/ 中保存的是会话凭据,应像密码一样保护