跳到主要内容

BlueBubbles (iMessage)

通过 BlueBubbles 将 Hermes 与 Apple iMessage 连接 —— 一个免费、开源的 macOS 服务器,可将 iMessage 桥接到任何设备。

先决条件

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

设置步骤

1. 安装 BlueBubbles Server

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

2. 获取服务器 URL 和密码

在 BlueBubbles Server → 设置 → API 中记录以下信息:

  • 服务器 URL(例如 http://192.168.1.10:1234
  • 服务器密码

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. 授权用户

选择以下任一方式:

私聊配对(推荐):
当有人向您的 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 服务器,注册一个 Webhook,并开始监听 iMessage 消息。

工作原理

iMessage → Messages.app → BlueBubbles Server → Webhook → Hermes
Hermes → BlueBubbles REST API → Messages.app → iMessage
  • 入站消息:当新消息到达时,BlueBubbles 会向本地监听器发送 Webhook 事件。无需轮询 —— 实时送达。
  • 出站消息:Hermes 通过 BlueBubbles REST API 发送消息。
  • 媒体支持:图像、语音消息、视频和文档在两个方向均受支持。入站附件会被下载并本地缓存,供代理处理。

环境变量

变量是否必需默认值说明
BLUEBUBBLES_SERVER_URLBlueBubbles 服务器 URL
BLUEBUBBLES_PASSWORD服务器密码
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允许所有用户
BLUEBUBBLES_SEND_READ_RECEIPTStrue自动将消息标记为已读

功能特性

文本消息

发送和接收 iMessage。Markdown 会自动被剥离,以确保纯文本清晰传递。

富媒体支持

  • 图像:照片在 iMessage 会话中原生显示
  • 语音消息:音频文件作为 iMessage 语音消息发送
  • 视频:视频附件
  • 文档:文件作为 iMessage 附件发送

按赞反应(Tapback)

支持爱、赞、不喜欢、笑、强调和疑问等反应。需要安装 BlueBubbles 私有 API 辅助工具

输入状态指示

当代理正在处理消息时,iMessage 会显示“正在输入...”。需要私有 API 支持。

已读回执

消息处理完成后自动标记为已读。需要私有 API 支持。

聊天地址引用

您可以使用邮箱或电话号码来引用聊天 —— Hermes 会自动将它们解析为 BlueBubbles 的聊天 GUID,无需使用原始 GUID 格式。

私有 API

部分功能需要安装 BlueBubbles 私有 API 辅助工具

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

未安装私有 API 时,基础文本消息和媒体功能仍可正常使用。

故障排除

“无法连接到服务器”

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

消息未到达

  • 检查 BlueBubbles Server → 设置 → API → Webhooks 中是否已注册 Webhook
  • 确认 Webhook URL 从 Mac 可访问
  • 检查 hermes logs gateway 是否存在 Webhook 错误(或使用 hermes logs -f 实时跟踪)

“私有 API 辅助工具未连接”

  • 安装私有 API 辅助工具:docs.bluebubbles.app
  • 基础消息功能无需该工具即可使用 —— 仅反应、输入状态和已读回执需要它