Ana içeriğe atla

iMessage (eski: imsg)

Yeni iMessage dağıtımları için BlueBubbles kullanın.imsg entegrasyonu eskidir ve gelecekteki bir sürümde kaldırılabilir.
Durum: eski harici CLI entegrasyonu. Gateway, imsg rpc başlatır ve stdio üzerinde JSON-RPC ile iletişim kurar (ayrı daemon/port yoktur).

BlueBubbles (önerilen)

Yeni kurulumlar için tercih edilen iMessage yolu.

Eşleştirme

iMessage DM’leri varsayılan olarak eşleştirme modunu kullanır.

Yapılandırma başvurusu

iMessage için tüm alan başvurusu.

Hızlı kurulum

1

imsg yükleyin ve doğrulayın

brew install steipete/tap/imsg
imsg rpc --help
2

OpenClaw yapılandırın

{
  channels: {
    imessage: {
      enabled: true,
      cliPath: "/usr/local/bin/imsg",
      dbPath: "/Users/<you>/Library/Messages/chat.db",
    },
  },
}
3

Gateway başlatın

openclaw gateway
4

İlk DM eşleştirmesini onaylayın (varsayılan dmPolicy)

openclaw pairing list imessage
openclaw pairing approve imessage <CODE>
Eşleştirme isteklerinin süresi 1 saat sonra dolar.

Gereksinimler ve izinler (macOS)

  • Messages, imsg çalıştıran Mac’te oturum açmış olmalıdır.
  • OpenClaw/imsg çalıştıran işlem bağlamı için Tam Disk Erişimi gereklidir (Messages DB erişimi).
  • Messages.app üzerinden mesaj göndermek için Otomasyon izni gereklidir.
İzinler işlem bağlamı başına verilir. Gateway başsız çalışıyorsa (LaunchAgent/SSH), istemleri tetiklemek için aynı bağlamda bir defalık etkileşimli komut çalıştırın:
imsg chats --limit 1
# veya
imsg send <handle> "test"

Erişim denetimi ve yönlendirme

channels.imessage.dmPolicy, doğrudan mesajları denetler:
  • pairing (varsayılan)
  • allowlist
  • open (allowFrom içinde "*" bulunmasını gerektirir)
  • disabled
Allowlist alanı: channels.imessage.allowFrom.Allowlist girdileri handle’lar veya sohbet hedefleri olabilir (chat_id:*, chat_guid:*, chat_identifier:*).

ACP konuşma bağlamaları

Eski iMessage sohbetleri ACP oturumlarına da bağlanabilir. Hızlı operatör akışı:
  • DM veya izin verilen grup sohbeti içinde /acp spawn codex --bind here çalıştırın.
  • Aynı iMessage konuşmasındaki sonraki mesajlar oluşturulan ACP oturumuna yönlendirilir.
  • /new ve /reset, aynı bağlı ACP oturumunu yerinde sıfırlar.
  • /acp close, ACP oturumunu kapatır ve bağlamayı kaldırır.
Yapılandırılmış kalıcı bağlamalar, üst düzey bindings[] girdileri üzerinden type: "acp" ve match.channel: "imessage" ile desteklenir. match.peer.id şu biçimleri kullanabilir:
  • +15555550123 veya user@example.com gibi normalize edilmiş DM handle’ı
  • chat_id:<id> (kararlı grup bağlamaları için önerilir)
  • chat_guid:<guid>
  • chat_identifier:<identifier>
Örnek:
{
  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" },
    },
  ],
}
Paylaşılan ACP bağlama davranışı için ACP Agent’ları sayfasına bakın.

Dağıtım kalıpları

Bot trafiğinin kişisel Messages profilinizden yalıtılması için ayrılmış bir Apple ID ve macOS kullanıcısı kullanın.Tipik akış:
  1. Ayrılmış bir macOS kullanıcısı oluşturun/oturum açın.
  2. Bu kullanıcıda bot Apple ID’siyle Messages oturumu açın.
  3. Bu kullanıcıda imsg yükleyin.
  4. OpenClaw’ın bu kullanıcı bağlamında imsg çalıştırabilmesi için SSH sarmalayıcısı oluşturun.
  5. channels.imessage.accounts.<id>.cliPath ve .dbPath değerlerini bu kullanıcı profiline yönlendirin.
İlk çalıştırma, bu bot kullanıcı oturumunda GUI onayları gerektirebilir (Otomasyon + Tam Disk Erişimi).
Yaygın topoloji:
  • gateway Linux/VM üzerinde çalışır
  • iMessage + imsg, tailnet’inizdeki bir Mac üzerinde çalışır
  • cliPath sarmalayıcısı imsg çalıştırmak için SSH kullanır
  • remoteHost, SCP ek getirmelerini etkinleştirir
Örnek:
{
  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 "$@"
Hem SSH hem SCP’nin etkileşimsiz olması için SSH anahtarları kullanın. known_hosts doldurulsun diye önce ana makine anahtarının güvenilir olduğundan emin olun (örneğin ssh bot@mac-mini.tailnet-1234.ts.net).
iMessage, channels.imessage.accounts altında hesap başına yapılandırmayı destekler.Her hesap cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, geçmiş ayarları ve ek kökü allowlist’leri gibi alanları geçersiz kılabilir.

Medya, parçalama ve teslimat hedefleri

  • gelen ek alımı isteğe bağlıdır: channels.imessage.includeAttachments
  • remoteHost ayarlandığında uzak ek yolları SCP ile alınabilir
  • ek yolları izin verilen köklerle eşleşmelidir:
    • channels.imessage.attachmentRoots (yerel)
    • channels.imessage.remoteAttachmentRoots (uzak SCP modu)
    • varsayılan kök deseni: /Users/*/Library/Messages/Attachments
  • SCP, katı ana makine anahtarı denetimi kullanır (StrictHostKeyChecking=yes)
  • giden medya boyutu channels.imessage.mediaMaxMb kullanır (varsayılan 16 MB)
  • metin parça sınırı: channels.imessage.textChunkLimit (varsayılan 4000)
  • parça modu: channels.imessage.chunkMode
    • length (varsayılan)
    • newline (önce paragraf bölme)
Tercih edilen açık hedefler:
  • chat_id:123 (kararlı yönlendirme için önerilir)
  • chat_guid:...
  • chat_identifier:...
Handle hedefleri de desteklenir:
  • imessage:+1555...
  • sms:+1555...
  • user@example.com
imsg chats --limit 20

Yapılandırma yazımları

iMessage, varsayılan olarak kanal tarafından başlatılan yapılandırma yazımlarına izin verir (commands.config: true olduğunda /config set|unset için). Devre dışı bırakmak için:
{
  channels: {
    imessage: {
      configWrites: false,
    },
  },
}

Sorun giderme

İkili dosyayı ve RPC desteğini doğrulayın:
imsg rpc --help
openclaw channels status --probe
Probe, RPC desteklenmiyor bildiriyorsa imsg güncelleyin.
Şunları kontrol edin:
  • channels.imessage.dmPolicy
  • channels.imessage.allowFrom
  • eşleştirme onayları (openclaw pairing list imessage)
Şunları kontrol edin:
  • channels.imessage.groupPolicy
  • channels.imessage.groupAllowFrom
  • channels.imessage.groups allowlist davranışı
  • anma deseni yapılandırması (agents.list[].groupChat.mentionPatterns)
Şunları kontrol edin:
  • channels.imessage.remoteHost
  • channels.imessage.remoteAttachmentRoots
  • gateway ana makinesinden SSH/SCP anahtar kimlik doğrulaması
  • gateway ana makinesindeki ~/.ssh/known_hosts içinde ana makine anahtarının mevcut olması
  • Messages çalıştıran Mac’te uzak yol okunabilirliği
Aynı kullanıcı/oturum bağlamında etkileşimli GUI terminalinde yeniden çalıştırın ve istemleri onaylayın:
imsg chats --limit 1
imsg send <handle> "test"
OpenClaw/imsg çalıştıran işlem bağlamı için Tam Disk Erişimi + Otomasyon izinlerinin verildiğini doğrulayın.

Yapılandırma başvurusu işaretçileri

İlgili