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 发送消息。
- 媒体支持:图像、语音消息、视频和文档在两个方向均受支持。入站附件会被下载并本地缓存,供 Agent 处理。
环境变量
| 变量 | 是否必需 | 默认值 | 说明 |
|---|---|---|---|
BLUEBUBBLES_SERVER_URL | 是 | — | BlueBubbles 服务器 URL |
BLUEBUBBLES_PASSWORD | 是 | — | 服务器密码 |
BLUEBUBBLES_WEBHOOK_HOST | 否 | 127.0.0.1 | Webhook 监听绑定地址 |
BLUEBUBBLES_WEBHOOK_PORT | 否 | 8645 | Webhook 监听端口 |
BLUEBUBBLES_WEBHOOK_PATH | 否 | /bluebubbles-webhook | Webhook URL 路径 |
BLUEBUBBLES_HOME_CHANNEL | 否 | — | 用于定时任务投递的电话号码/邮箱 |
BLUEBUBBLES_ALLOWED_USERS | 否 | — | 逗号分隔的授权用户列表 |
BLUEBUBBLES_ALLOW_ALL_USERS | 否 | false | 允许所有用户 |
BLUEBUBBLES_SEND_READ_RECEIPTS | 否 | true | 自动将消息标记为已读 |
功能特性
文本消息
发送和接收 iMessage。Markdown 会自动被剥离,以确保纯文本清晰传递。
富媒体支持
- 图像:照片在 iMessage 会话中原生显示
- 语音消息:音频文件作为 iMessage 语音消息发送
- 视频:视频附件
- 文档:文件作为 iMessage 附件发送
按赞反应(Tapback)
支持爱、赞、不喜欢、笑、强调和疑问等反应。需要安装 BlueBubbles 私有 API 辅助工具。
输入状态指示
当 Agent 正在处理消息时,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
- 基础消息功能无需该工具即可使用 —— 仅反应、输入状态和已读回执需要它