跳到主要内容

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_URLBlueBubbles Server URL
BLUEBUBBLES_PASSWORDServer 密码
BLUEBUBBLES_WEBHOOK_HOST127.0.0.1Webhook 监听器绑定地址
BLUEBUBBLES_WEBHOOK_PORT8645Webhook 监听器端口
BLUEBUBBLES_WEBHOOK_PATH/bluebubbles-webhookWebhook URL 路径
BLUEBUBBLES_HOME_CHANNEL定时任务投递目标的手机号/邮箱
BLUEBUBBLES_ALLOWED_USERS逗号分隔的授权用户列表
BLUEBUBBLES_ALLOW_ALL_USERSfalse允许所有用户

自动将消息标记为已读由 ~/.hermes/config.yamlplatforms.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 时,基本消息功能仍然可用 —— 仅反应、输入状态和已读回执需要它