iMessage (legacy : imsg)¶
Le canal imsg est une intĂ©gration CLI externe legacy et peut ĂȘtre supprimĂ© dans une version future.
Statut : intégration CLI externe legacy. La Gateway (passerelle) lance imsg rpc (JSON-RPC sur stdio).
Configuration (chemin rapide)¶
`brew install steipete/tap/imsg`
</Step>
<Step title="Configure OpenClaw">
{
channels: {
imessage: {
enabled: true,
cliPath: "/usr/local/bin/imsg",
dbPath: "/Users/<you>/Library/Messages/chat.db",
},
},
}
</Step>
<Step title="Start gateway">
openclaw gateway
</Step>
<Step title="Approve first DM pairing (default dmPolicy)">
`openclaw pairing approve imessage <CODE>`
```
Pairing requests expire after 1 hour.
</Step>
</Steps>
```
channels.imessage.cliPath peut pointer vers toute commande qui proxifie stdin/stdout (par exemple, un script wrapper qui se connecte en SSH à un autre Mac et exécute imsg rpc).
#!/usr/bin/env bash
exec ssh -T gateway-host imsg "$@"
```
Recommended config when attachments are enabled:
```
{
channels: {
imessage: {
cliPath: "~/imsg-ssh", // SSH wrapper to remote Mac
remoteHost: "user@gateway-host", // for SCP file transfer
includeAttachments: true,
},
},
}
```
Si `remoteHost` nâest pas dĂ©fini, OpenClaw tente de lâauto-dĂ©tecter en analysant la commande SSH dans votre script wrapper.
```
Requirements and permissions (macOS)¶
- Assurez-vous que Messages est connecté sur ce Mac.
- AccĂšs complet au disque pour OpenClaw +
imsg(accÚs à la base de données Messages). - Automation permission is required to send messages through Messages.app.
imsg (par exemple, Terminal/iTerm, une session LaunchAgent ou un processus lancé par SSH).
imsg chats --limit 1
# ou
imsg envoyer <handle> "test"
Access control and routing¶
channels.imessage.dmPolicy controls direct messages:
```
`channels.imessage.groupPolicy` : `open | allowlist | disabled` (par défaut : allowlist).
```
channels.imessage.groupAllowFrom : liste dâautorisation des expĂ©diteurs de groupe.
```
{
channels: {
imessage: {
enabled: true,
accounts: {
bot: {
name: "Bot",
enabled: true,
cliPath: "/path/to/imsg-bot",
dbPath: "/Users/<bot-macos-user>/Library/Messages/chat.db",
},
},
},
},
}
```
session.dmScope=main, iMessage DMs collapse into the agent main session.
- Group sessions are isolated (agent:<agentId>Groupes :<chat_id>).
- Replies route back to iMessage using originating channel/target metadata.
```
Si un fil Ă plusieurs participants arrive avec `is_group=false`, vous pouvez quand mĂȘme lâisoler en `chat_id` Ă lâaide de `channels.imessage.groups` (voir « Fils de type groupe » ci-dessous).
```
Deployment patterns¶
```
Faites pointer `channels.imessage.accounts.bot.cliPath` vers un wrapper SSH qui exĂ©cute `imsg` en tant quâutilisateur bot.
```
```
Si la Gateway (passerelle) sâexĂ©cute sur un hĂŽte/VM Linux mais quâiMessage doit sâexĂ©cuter sur un Mac, Tailscale est le pont le plus simple : la passerelle communique avec le Mac via le tailnet, exĂ©cute `imsg` via SSH et rĂ©cupĂšre les piĂšces jointes via SCP.
```
{
channels: {
imessage: {
enabled: true,
cliPath: "~/.openclaw/scripts/imsg-ssh",
remoteHost: "bot@mac-mini.tailnet-1234.ts.net",
includeAttachments: true,
dbPath: "/Users/bot/Library/Messages/chat.db",
},
},
}
#!/usr/bin/env bash
exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
```
Use SSH keys so both SSH and SCP are non-interactive.
```
channels.imessage.cliPath, channels.imessage.dbPath) au lieu de la map accounts.
```
Each account can override fields such as `cliPath`, `dbPath`, `allowFrom`, `groupPolicy`, `mediaMaxMb`, and history settings.
```
Media, chunking, and delivery targets¶
channels.imessage.mediaMaxMb (par défaut 16).
channels.imessage.textChunkLimit (par défaut 4000).
```
handles directs : `imessage:+1555` / `sms:+1555` / `user@example.com`
```
imsg chats --limit 20
Ăcritures de configuration¶
Par défaut, iMessage est autorisé à écrire des mises à jour de configuration déclenchées par /config set|unset (nécessite commands.config: true).
Désactiver avec :
{
channels: { imessage: { configWrites: false } },
}
Troubleshooting¶
imsg rpc --help
openclaw channels status --probe
```
If probe reports RPC unsupported, update `imsg`.
```
```
`channels.imessage.dmPolicy` : `pairing | allowlist | open | disabled` (par défaut : appairage).
```
```
`channels.imessage.groupPolicy = open | allowlist | disabled`.
```
```
#!/usr/bin/env bash
set -euo pipefail
# Run an interactive SSH once first to accept host keys:
# ssh <bot-macos-user>@localhost true
exec /usr/bin/ssh -o BatchMode=yes -o ConnectTimeout=5 -T <bot-macos-user>@localhost \
"/usr/local/bin/imsg" "$@"
```
`channels.imessage.cliPath` : chemin vers `imsg`.
```
Démarrez la passerelle et approuvez toutes les invites macOS (Automatisation + AccÚs complet au disque).
```
Configuration reference pointers¶
- Référence de configuration (iMessage)
- Configuration complĂšte : Configuration
- Pairing
- BlueBubbles