OpenClaw

Canal iMessage (Legacy) OpenClaw

Messagerie
Avancé

Connectez OpenClaw à Apple iMessage à l'aide de l'outil CLI imsg sur macOS. Cette intégration héritée utilise une interface JSON-RPC over stdio pour lire et envoyer des iMessages via la base de données native Messages de macOS. Remarque : ce canal est obsolète — pour les nouvelles installations, nous recommandons fortement d'utiliser BlueBubbles, qui offre une intégration REST API plus robuste avec un support de fonctionnalités plus large.

Info rapide
DifficultéAvancé
CatégorieMessagerie
Fonctionnalités prises en charge2 / 6

iMessage (Legacy) Fonctionnalités prises en charge

Messages texte

Pris en charge

Médias et fichiers

Pris en charge

Réactions

Non pris en charge

Fils de discussion

Non pris en charge

Messages vocaux

Non pris en charge

Discussion de groupe

Non pris en charge

iMessage (Legacy) Prérequis

  • Un Mac sous macOS avec Messages connecté à un Apple ID
  • L'autorisation d'accès complet au disque accordée à OpenClaw et au binaire imsg
  • L'autorisation d'automatisation pour l'envoi de messages (accordée via les invites TCC de macOS)
  • Le CLI imsg installé via Homebrew : brew install steipete/tap/imsg
  • OpenClaw Gateway installé et en cours d'exécution

iMessage (Legacy) Configuration rapide

1

Installer le CLI imsg

Exécutez 'brew install steipete/tap/imsg' pour installer l'outil CLI iMessage. Après l'installation, exécutez 'imsg' une fois dans un terminal GUI pour déclencher les invites de permissions macOS (accès complet au disque et automatisation).

2

Accorder les permissions macOS

Ouvrez Réglages système > Confidentialité et sécurité. Accordez l'accès complet au disque au binaire imsg et au processus OpenClaw. L'autorisation d'automatisation pour Messages sera demandée automatiquement lors de la première tentative d'envoi par imsg.

3

Configurer et démarrer

Ajoutez la configuration du canal iMessage dans ~/.openclaw/openclaw.json avec les paramètres cliPath et dbPath. Démarrez le Gateway avec 'openclaw start' et envoyez un iMessage de test pour vérifier la connexion.

iMessage (Legacy) Exemple de configuration

config.json
{
  "channels": {
    "imessage": {
      "enabled": true,
      "cliPath": "/opt/homebrew/bin/imsg",
      "dbPath": "/Users/<username>/Library/Messages/chat.db"
    }
  }
}

iMessage (Legacy) Documentation Détaillée

Avis de dépréciation

Le canal iMessage est une intégration héritée qui pourrait être retirée dans les futures versions d'OpenClaw. Il dépend du CLI tiers imsg et des permissions TCC spécifiques à macOS, qui peuvent devenir instables après les mises à jour du système. Pour les nouveaux déploiements, nous recommandons fortement de migrer vers le canal BlueBubbles, qui offre : • Architecture basée sur REST API (sans dépendance CLI) • Support des réactions emoji • Support des conversations de groupe • Gestion de serveur multiplateforme via interface web • Livraison de messages plus fiable basée sur les webhooks Les configurations iMessage existantes continueront de fonctionner, mais aucune nouvelle fonctionnalité ne sera ajoutée à cette intégration.
Ce canal est obsolète. Veuillez utiliser BlueBubbles pour les nouvelles intégrations iMessage.

Aperçu de l'architecture

L'intégration iMessage fonctionne en lançant le CLI imsg comme processus enfant via JSON-RPC over stdio : 1. Le Gateway lance 'imsg rpc' comme sous-processus, communiquant via stdin/stdout. 2. Le CLI imsg lit les nouveaux messages depuis la base de données Messages de macOS (chat.db) en utilisant SQLite. 3. Lorsqu'un nouveau message arrive, imsg notifie le Gateway via JSON-RPC. 4. Le Gateway traite le message avec votre agent IA et envoie la réponse via imsg, qui utilise l'automatisation macOS pour envoyer l'iMessage. Cette architecture nécessite que le Gateway s'exécute sur le même Mac où Messages est connecté. Les réponses sont acheminées de manière déterministe vers iMessage, et chaque conversation (DM ou groupe) maintient une isolation de session indépendante.

Politiques de messages directs

Les politiques de DM contrôlent comment le bot gère les conversations iMessage individuelles. **pairing (par défaut)** — Les expéditeurs inconnus reçoivent un code d'appairage qui doit être confirmé avant que le bot ne réponde. Cela empêche les accès non autorisés. **allowlist** — Seuls les numéros de téléphone ou Apple ID listés dans allowFrom peuvent interagir avec le bot. **open** — Tout expéditeur iMessage reçoit une réponse. Nécessite allowFrom: ["*"]. **disabled** — Le bot ignore tous les messages directs.
openclaw.json
{
  "channels": {
    "imessage": {
      "dmPolicy": "pairing",
      "allowFrom": ["+1234567890", "user@icloud.com"]
    }
  }
}

Configuration des conversations de groupe

Les politiques de conversation de groupe contrôlent le comportement du bot dans les conversations de groupe iMessage. **open** — Le bot répond à tous les messages dans tout groupe où il est ajouté. **allowlist** — Le bot ne répond que dans les groupes explicitement listés dans la configuration. **disabled (par défaut)** — Le bot ne répond pas dans les conversations de groupe. Lorsque les conversations de groupe sont activées, un déclenchement par mention peut être configuré pour que le bot ne réponde que lorsque son nom est mentionné, réduisant le bruit dans les groupes actifs.
openclaw.json
{
  "channels": {
    "imessage": {
      "groupPolicy": "allowlist",
      "mentionPattern": "@bot"
    }
  }
}

Configuration Mac distant via SSH

Pour les déploiements headless ou distants, le CLI imsg peut s'exécuter sur un autre Mac via SSH. Le Gateway lance le processus imsg via une connexion SSH, et les pièces jointes sont transférées par SCP. Cela est utile lorsque le Mac exécutant Messages est dans un emplacement différent (par ex., un serveur Mac Mini), tandis que le Gateway s'exécute ailleurs. Prérequis : • Authentification SSH par clé (sans invites interactives) • Le Mac distant doit avoir imsg installé et les permissions accordées • SCP doit être disponible pour le transfert de pièces jointes
openclaw.json
{
  "channels": {
    "imessage": {
      "remoteHost": "mac-server.local",
      "cliPath": "/usr/local/bin/imsg"
    }
  }
}
Utilisez l'authentification par clé SSH pour éviter les invites de mot de passe interactives.
Des outils comme Tailscale peuvent simplifier l'accès distant au serveur Mac.

Permissions macOS (TCC)

L'intégration iMessage nécessite des permissions de confidentialité macOS spécifiques (gérées par le framework TCC) : **Accès complet au disque** — Requis pour lire la base de données Messages (chat.db). Le binaire imsg et le processus OpenClaw ont tous deux besoin de cette permission. **Automatisation** — Requise pour envoyer des messages via l'app Messages. Cette permission est généralement accordée via une invite système lorsqu'imsg tente d'envoyer pour la première fois. Si vous exécutez en mode headless (par ex., via SSH ou launchd), les invites de permission peuvent ne pas apparaître. Dans ce cas, exécutez 'imsg' une fois dans une session terminal GUI interactive pour déclencher les invites, puis reprenez l'opération headless.
Les invites de permissions macOS n'apparaissent que dans les sessions GUI. Exécutez imsg de manière interactive au moins une fois avant le déploiement headless.

iMessage (Legacy) Référence de Configuration

enabled
Type: booleanDefault: true

Activer ou désactiver le canal iMessage

cliPath
Type: stringDefault: "/usr/local/bin/imsg"

Chemin vers le binaire CLI imsg. Homebrew installe dans /opt/homebrew/bin/imsg sur les Mac Apple Silicon ou /usr/local/bin/imsg sur les Mac Intel

dbPath
Type: stringDefault: "~/Library/Messages/chat.db"

Chemin vers la base de données SQLite Messages de macOS

dmPolicy
Type: stringDefault: "pairing"

Politique d'accès DM : 'pairing', 'allowlist', 'open' ou 'disabled'

groupPolicy
Type: stringDefault: "disabled"

Politique de conversation de groupe : 'open', 'allowlist' ou 'disabled'

allowFrom
Type: string[]Default: []

Numéros de téléphone ou Apple ID autorisés à contacter le bot

includeAttachments
Type: booleanDefault: false

Traiter les pièces jointes média des messages entrants

mediaMaxMb
Type: numberDefault: 10

Taille maximale des fichiers média en Mo

textChunkLimit
Type: numberDefault: 4000

Nombre maximum de caractères par message sortant

chunkMode
Type: stringDefault: "length"

Mode de découpage du texte : 'length' (limite de caractères) ou 'newline' (limites de paragraphe)

historyLimit
Type: numberDefault: 20

Nombre maximum de messages précédents inclus comme contexte de conversation

configWrites
Type: booleanDefault: true

Autoriser les commandes /config set|unset via iMessage

remoteHost
Type: stringDefault: ""

Nom d'hôte SSH pour exécuter imsg sur un Mac distant

iMessage (Legacy) Questions Fréquentes

iMessage (Legacy) Dépannage

Le bot ne reçoit ni n'envoie de messages

Permissions macOS manquantes (accès complet au disque ou automatisation) pour le binaire imsg ou le processus OpenClaw.

Ouvrez Réglages système > Confidentialité et sécurité. Vérifiez que l'accès complet au disque est accordé à imsg et OpenClaw. Exécutez 'imsg' dans un terminal GUI pour déclencher les invites manquantes. Redémarrez le Gateway après avoir accordé les permissions.
Les invites de permission n'apparaissent pas

Le processus s'exécute dans un environnement headless (SSH, launchd) où macOS ne peut pas afficher les invites TCC.

Connectez-vous au Mac via une session GUI (partage d'écran ou accès physique). Exécutez 'imsg' dans Terminal.app pour déclencher les invites. Une fois les permissions accordées, vous pouvez reprendre l'opération headless.
Erreur : chat.db non trouvé ou accès refusé

La configuration dbPath est incorrecte ou l'accès complet au disque n'a pas été accordé.

Vérifiez que dbPath pointe vers la bonne base de données Messages (généralement ~/Library/Messages/chat.db). Assurez-vous que l'accès complet au disque est activé pour le processus OpenClaw dans les Réglages système.
Échec de la connexion SSH distante

L'authentification par clé SSH n'est pas configurée ou l'hôte distant est inaccessible.

Assurez-vous que l'authentification par clé SSH est configurée entre l'hôte Gateway et le Mac distant. Testez la connexion manuellement avec 'ssh <remoteHost> imsg --version'. Vérifiez le pare-feu et la connectivité réseau.