跳到主要内容

BlueBubbles(iMessage)

通过 BlueBubbles 将 Hermes 连接到 Apple iMessage —— BlueBubbles 是一款免费开源的 macOS 服务端,可将 iMessage 桥接到任意设备。

前置条件​

  • 一台始终开机的 Mac,运行 BlueBubbles Server
  • 该 Mac 上已在 Messages.app 中登录 Apple ID
  • BlueBubbles Server v1.0.0+(Webhook 功能需要此版本)
  • Hermes 与 BlueBubbles Server 之间网络互通

配置​

1. 安装 BlueBubbles Server​

从 bluebubbles.app 下载并安装。完成设置向导 —— 使用 Apple ID 登录并配置连接方式(本地网络、Ngrok、Cloudflare 或动态 DNS)。

2. 获取服务器 URL 和密码​

在 BlueBubbles Server → Settings → API 中记录:

  • Server URL(例如 http://192.168.1.10:1234)
  • Server Password

3. 配置 Hermes​

运行配置向导:

hermes gateway setup

选择 BlueBubbles (iMessage),输入服务器 URL 和密码。

或直接在 ~/.hermes/.env 中设置环境变量:

BLUEBUBBLES_SERVER_URL=http://192.168.1.10:1234
BLUEBUBBLES_PASSWORD=your-server-password

4. 授权用户​

选择以下任一方式:

DM 配对(推荐): 当有人向您的 iMessage 发消息时,Hermes 会自动发送配对码。使用以下命令批准:

hermes pairing approve bluebubbles <CODE>

使用 hermes pairing list 查看待处理的配对码和已授权用户。

预授权特定用户(在 ~/.hermes/.env 中):

BLUEBUBBLES_ALLOWED_USERS=user@icloud.com,+15551234567

开放访问(在 ~/.hermes/.env 中):

BLUEBUBBLES_ALLOW_ALL_USERS=true

5. 启动网关​

hermes gateway run

Hermes 将连接到 BlueBubbles Server,注册 Webhook,并开始监听 iMessage 消息。

工作原理​

iMessage → Messages.app → BlueBubbles Server → Webhook → Hermes
Hermes → BlueBubbles REST API → Messages.app → iMessage
  • 入站: 有新消息到来时,BlueBubbles 通过 Webhook 事件推送到本地监听器,无需轮询,即时送达。
  • 出站: Hermes 通过 BlueBubbles REST API 发送消息。
  • 媒体: 双向支持图片、语音消息、视频和文档。入站附件会被下载并缓存到本地供 Agent 处理。

环境变量​

变量必填默认值说明
BLUEBUBBLES_SERVER_URL是—BlueBubbles Server URL
BLUEBUBBLES_PASSWORD是—Server 密码
BLUEBUBBLES_WEBHOOK_HOST否127.0.0.1Webhook 监听器绑定地址
BLUEBUBBLES_WEBHOOK_PORT否8645Webhook 监听器端口
BLUEBUBBLES_WEBHOOK_PATH否/bluebubbles-webhookWebhook URL 路径
BLUEBUBBLES_HOME_CHANNEL否—定时任务投递目标的手机号/邮箱
BLUEBUBBLES_ALLOWED_USERS否—逗号分隔的授权用户列表
BLUEBUBBLES_ALLOW_ALL_USERS否false允许所有用户

自动将消息标记为已读由 ~/.hermes/config.yaml 中 platforms.bluebubbles.extra 下的 send_read_receipts 键控制(默认值:true)。无对应环境变量。

功能特性​

文字消息​

发送和接收 iMessage。Markdown 格式会被自动剥离,以保证纯文本的清晰呈现。

富媒体​

  • 图片: 照片以原生形式显示在 iMessage 对话中
  • 语音消息: 音频文件以 iMessage 语音消息形式发送
  • 视频: 视频附件
  • 文档: 文件以 iMessage 附件形式发送

Tapback 反应​

支持喜欢、点赞、踩、大笑、强调和问号等反应表情。需要 BlueBubbles Private API helper。

输入状态指示​

Agent 处理时在 iMessage 对话中显示"正在输入..."。需要 Private API。

已读回执​

消息处理完成后自动标记为已读。需要 Private API。

聊天地址​

您可以通过邮箱或手机号来指定聊天对象 —— Hermes 会自动解析为 BlueBubbles 的聊天 GUID,无需手动使用原始 GUID 格式。

Private API​

以下功能需要 BlueBubbles Private API helper:

  • Tapback 反应
  • 输入状态指示
  • 已读回执
  • 通过地址创建新聊天

没有 Private API,基本文字消息和媒体功能仍然可用。

故障排查​

"Cannot reach server"(无法连接服务器)​

  • 验证服务器 URL 是否正确且 Mac 已开机
  • 检查 BlueBubbles Server 是否正在运行
  • 确认网络连通性(防火墙、端口转发)

消息未到达​

  • 检查 BlueBubbles Server → Settings → API → Webhooks 中是否已注册 Webhook
  • 验证 Webhook URL 是否可从 Mac 访问
  • 查看 hermes logs gateway 中的 Webhook 错误(或使用 hermes logs -f 实时跟踪)

"Private API helper not connected"(Private API 未连接)​

  • 安装 Private API helper:docs.bluebubbles.app
  • 没有 Private API 时,基本消息功能仍然可用 —— 仅反应、输入状态和已读回执需要它