Ir al contenido

iMessage

Estado: integración heredada de CLI externa. Gateway inicia imsg rpc y se comunica a través de JSON-RPC en stdio (sin demonio/puerto separado).

BlueBubbles (recomendado)

Ruta de iMessage preferida para nuevas configuraciones.

Emparejamiento

Los MD de iMessage usan por defecto el modo de emparejamiento.

Referencia de configuración

Referencia completa de campos de iMessage.

  1. Instalar y verificar imsg

    Ventana de terminal
    brew install steipete/tap/imsg
    imsg rpc --help
  2. Configurar OpenClaw

    {
    channels: {
    imessage: {
    enabled: true,
    cliPath: "/usr/local/bin/imsg",
    dbPath: "/Users/

    /Library/Messages/chat.db”, }, }, }

  3. Iniciar gateway

    Ventana de terminal
    openclaw gateway
  4. Aprobar el primer emparejamiento DM (dmPolicy predeterminado)

    Ventana de terminal
    openclaw pairing list imessage
    openclaw pairing approve imessage
    Las solicitudes de emparejamiento expiran después de 1 hora.
  • Messages debe tener iniciada la sesión en el Mac donde se ejecuta imsg.
  • Se requiere acceso de disco completo para el contexto del proceso que ejecuta OpenClaw/imsg (acceso a la base de datos de Messages).
  • Se requiere permiso de automatización para enviar mensajes a través de Messages.app.

channels.imessage.dmPolicy controla los mensajes directos:

  • pairing (predeterminado)
  • allowlist
  • open (requiere que allowFrom incluya "*")
  • disabled

Campo de lista de permitidos: channels.imessage.allowFrom.

Las entradas de la lista de permitidos pueden ser identificadores o destinos de chat (chat_id:*, chat_guid:*, chat_identifier:*).

Los chats heredados de iMessage también se pueden vincular a sesiones ACP.

Flujo rápido de operador:

  • Ejecute /acp spawn codex --bind here dentro del MD o chat de grupo permitido.
  • Los mensajes futuros en esa misma conversación de iMessage se enrutan a la sesión ACP generada.
  • /new y /reset restablecen la misma sesión ACP vinculada en su lugar.
  • /acp close cierra la sesión ACP y elimina el vínculo.

Los enlaces persistentes configurados son compatibles a través de entradas bindings[] de nivel superior con type: "acp" y match.channel: "imessage".

match.peer.id puede usar:

` (recomendado para enlaces de grupos estables)

  • `chat_guid:

`

  • `chat_identifier:

`

Ejemplo:

{
agents: {
list: [
{
id: "codex",
runtime: {
type: "acp",
acp: { agent: "codex", backend: "acpx", mode: "persistent" },
},
},
],
},
bindings: [
{
type: "acp",
agentId: "codex",
match: {
channel: "imessage",
accountId: "default",
peer: { kind: "group", id: "chat_id:123" },
},
acp: { label: "codex-group" },
},
],
}

Consulte Agentes ACP para conocer el comportamiento de enlace ACP compartido.

Usuario de macOS dedicado para el bot (identidad de iMessage separada)

Utilice un Apple ID y un usuario de macOS dedicados para que el tráfico del bot esté aislado de su perfil personal de Mensajes.

Flujo típico:

  1. Cree/inicie sesión en un usuario de macOS dedicado.
  2. Inicie sesión en Mensajes con el Apple ID del bot en ese usuario.
  3. Instale imsg en ese usuario.
  4. Cree un contenedor SSH para que OpenClaw pueda ejecutar imsg en el contexto de ese usuario.
  5. Apunte `channels.imessage.accounts.

.cliPathy.dbPath` a ese perfil de usuario.

La primera ejecución puede requerir aprobaciones de la GUI (Automatización + Acceso total al disco) en esa sesión de usuario del bot.
Mac remoto a través de Tailscale (ejemplo)
Topología común:
- la puerta de enlace se ejecuta en Linux/VM
- iMessage + `imsg` se ejecutan en una Mac en su tailnet
- el contenedor `cliPath` usa SSH para ejecutar `imsg`
- `remoteHost` habilita la obtención de archivos adjuntos SCP
Ejemplo:
{
channels: {
imessage: {
enabled: true,
cliPath: "~/.openclaw/scripts/imsg-ssh",
remoteHost: "[email protected]",
includeAttachments: true,
dbPath: "/Users/bot/Library/Messages/chat.db",
},
},
}
#!/usr/bin/env bash
exec ssh -T [email protected] imsg "$@"
Utilice claves SSH para que tanto SSH como SCP sean no interactivos.
Asegúrese de que la clave del host sea confiable primero (por ejemplo `ssh [email protected]`) para que `known_hosts` se complete.
Patrón multicuenta

iMessage admite configuración por cuenta bajo channels.imessage.accounts.

Cada cuenta puede anular campos como cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, configuración del historial y listas de permitidos de raíz de adjuntos.

Medios, fragmentación y objetivos de entrega

Sección titulada «Medios, fragmentación y objetivos de entrega»
Adjuntos y medios
  • la ingesta de adjuntos entrantes es opcional: channels.imessage.includeAttachments
  • las rutas de adjuntos remotas se pueden obtener a través de SCP cuando remoteHost está configurado
  • las rutas de los adjuntos deben coincidir con las raíces permitidas:
    • channels.imessage.attachmentRoots (local)
    • channels.imessage.remoteAttachmentRoots (modo SCP remoto)
    • patrón de raíz predeterminado: /Users/*/Library/Messages/Attachments
  • SCP usa verificación estricta de clave de host (StrictHostKeyChecking=yes)
  • el tamaño de los medios salientes usa channels.imessage.mediaMaxMb (predeterminado 16 MB)
Fragmentación saliente
  • límite de fragmento de texto: channels.imessage.textChunkLimit (predeterminado 4000) - modo de fragmentación: channels.imessage.chunkMode - length (predeterminado) - newline (división primero por párrafo)
Formatos de direccionamiento
Objetivos explícitos preferidos:
- `chat_id:123` (recomendado para un enrutamiento estable)
- `chat_guid:...`
- `chat_identifier:...`
También se admiten objetivos de identificador (handle):
- `imessage:+1555...`
- `sms:+1555...`
Ventana de terminal
imsg chats --limit 20

iMessage permite escrituras de configuración iniciadas por el canal de forma predeterminada (para /config set|unset cuando commands.config: true).

Desactivar:

{
channels: {
imessage: {
configWrites: false,
},
},
}
imsg no encontrado o RPC no compatible
Valide el binario y la compatibilidad con RPC:
Ventana de terminal
imsg rpc --help
openclaw channels status --probe
Si el sondeo indica que RPC no es compatible, actualice `imsg`.
Se ignoran los MD

Verificar:

  • channels.imessage.dmPolicy
  • channels.imessage.allowFrom
  • aprobaciones de vinculación (openclaw pairing list imessage)
Se ignoran los mensajes de grupo

Verificar:

  • channels.imessage.groupPolicy
  • channels.imessage.groupAllowFrom
  • comportamiento de la lista blanca de channels.imessage.groups
  • configuración del patrón de mención (agents.list[].groupChat.mentionPatterns)
Fallo en los adjuntos remotos

Verificar:

  • channels.imessage.remoteHost
  • channels.imessage.remoteAttachmentRoots
  • autenticación de clave SSH/SCP desde el host de la puerta de enlace
  • la clave de host existe en ~/.ssh/known_hosts en el host de la puerta de enlace
  • legibilidad de la ruta remota en el Mac que ejecuta Mensajes
Se omitieron los avisos de permisos de macOS
Vuelva a ejecutar en una terminal de interfaz gráfica interactiva en el mismo contexto de usuario/sesión y apruebe los avisos:
Ventana de terminal
imsg chats --limit 1
imsg send

“test”

Confirme que se hayan otorgado Acceso total al disco + Automatización para el contexto del proceso que ejecuta OpenClaw/`imsg`.