iMessage (eski: imsg)
Önerilen: Yeni iMessage kurulumları için BlueBubbles kullanın.
imsg kanalı, eski bir harici CLI entegrasyonudur ve gelecekteki bir sürümde kaldırılabilir.
Durum: eski harici CLI entegrasyonu. Gateway, imsg rpc’ü (stdio üzerinde JSON-RPC) başlatır.
Hızlı kurulum (başlangıç)
- Bu Mac’te Messages’ın oturum açmış olduğundan emin olun.
imsg’ü yükleyin:brew install steipete/tap/imsg
- OpenClaw’ı
channels.imessage.cliPathvechannels.imessage.dbPathile yapılandırın. - Gateway’i başlatın ve macOS istemlerini (Otomasyon + Tam Disk Erişimi) onaylayın.
Nedir
- macOS’te
imsgtarafından desteklenen iMessage kanalı. - Deterministik yönlendirme: yanıtlar her zaman iMessage’a geri döner.
- DM’ler ajanın ana oturumunu paylaşır; gruplar yalıtılmıştır (
agent:<agentId>:imessage:group:<chat_id>). is_group=falseile gelen çok katılımcılı bir iş parçacığı varsa,channels.imessage.groupskullanarakchat_idile yine de yalıtabilirsiniz (aşağıdaki “Grup benzeri iş parçacıkları”na bakın).
Yapılandırma yazımları
Varsayılan olarak iMessage,/config set|unset tarafından tetiklenen yapılandırma güncellemelerini yazmaya izinlidir ( commands.config: true gerektirir).
Şununla devre dışı bırakın:
Gereksinimler
- Messages’ta oturum açılmış macOS.
- OpenClaw +
imsgiçin Tam Disk Erişimi (Messages DB erişimi). - Gönderim sırasında Otomasyon izni.
channels.imessage.cliPath, stdin/stdout’u proxy’leyen herhangi bir komuta işaret edebilir (örneğin, başka bir Mac’e SSH yapan veimsg rpc’yi çalıştıran bir sarmalayıcı betik).
macOS Gizlilik ve Güvenlik TCC sorun giderme
Gönderme/alma başarısız olursa (örneğin,imsg rpc sıfır olmayan bir kodla çıkar, zaman aşımına uğrar veya gateway takılı kalmış gibi görünür), yaygın bir neden hiç onaylanmamış bir macOS izin istemidir.
macOS, TCC izinlerini uygulama/süreç bağlamına göre verir. İstemleri, imsg’yi çalıştıran bağlamda onaylayın (örneğin, Terminal/iTerm, bir LaunchAgent oturumu veya SSH ile başlatılan bir süreç).
Kontrol listesi:
- Tam Disk Erişimi: OpenClaw’ı çalıştıran süreç (ve
imsg’yi çalıştıran herhangi bir kabuk/SSH sarmalayıcısı) için erişime izin verin. Bu, Messages veritabanını (chat.db) okumak için gereklidir. - Otomasyon → Messages: Giden gönderimler için OpenClaw’ı çalıştıran sürecin (ve/veya terminalinizin) Messages.app’i denetlemesine izin verin.
imsgCLI sağlığı:imsg’ün kurulu olduğunu ve RPC’yi (imsg rpc --help) desteklediğini doğrulayın.
Kurulum (hızlı yol)
- Bu Mac’te Messages’ın oturum açmış olduğundan emin olun.
- iMessage’ı yapılandırın ve gateway’i başlatın.
Özel bot macOS kullanıcısı (yalıtılmış kimlik için)
Botun ayrı bir iMessage kimliğinden göndermesini (ve kişisel Messages’ınızı temiz tutmayı) istiyorsanız, özel bir Apple ID + özel bir macOS kullanıcısı kullanın.- Özel bir Apple ID oluşturun (örnek:
[email protected]).- Apple doğrulama / 2FA için bir telefon numarası isteyebilir.
- Bir macOS kullanıcısı oluşturun (örnek:
openclawhome) ve oturum açın. - Bu macOS kullanıcısında Messages’ı açın ve bot Apple ID’siyle iMessage’a giriş yapın.
- Uzak Oturum Açma’yı etkinleştirin (Sistem Ayarları → Genel → Paylaşım → Uzak Oturum Açma).
imsg’yi yükleyin:brew install steipete/tap/imsg
ssh <bot-macos-user>@localhost true’un parola olmadan çalışması için SSH’yi ayarlayın.channels.imessage.accounts.bot.cliPath’ı, bot kullanıcısı olarakimsg’i çalıştıran bir SSH sarmalayıcısına yönlendirin.
imsg rpc takılı kalmış gibi görünüyorsa veya çıkıyorsa, o kullanıcıya giriş yapın (Ekran Paylaşımı yardımcı olur), tek seferlik bir imsg chats --limit 1 / imsg send ... çalıştırın, istemleri onaylayın ve ardından yeniden deneyin. macOS Gizlilik ve Güvenlik TCC sorun giderme bölümüne bakın.
Örnek sarmalayıcı (chmod +x). <bot-macos-user>’yı gerçek macOS kullanıcı adınızla değiştirin:
accounts haritası yerine düz seçenekleri (channels.imessage.cliPath, channels.imessage.dbPath) kullanın.
Uzak/SSH varyantı (isteğe bağlı)
iMessage’ı başka bir Mac’te istiyorsanız,channels.imessage.cliPath’yi uzak macOS ana makinesinde SSH üzerinden imsg’i çalıştıran bir sarmalayıcıya ayarlayın. OpenClaw yalnızca stdio’ya ihtiyaç duyar.
Örnek sarmalayıcı:
cliPath SSH üzerinden uzak bir ana makineye işaret ettiğinde, Messages veritabanındaki ek yolları uzak makinedeki dosyalara referans verir. OpenClaw, channels.imessage.remoteHost ayarlanarak bunları SCP üzerinden otomatik olarak alabilir:
remoteHost ayarlanmazsa, OpenClaw sarmalayıcı betiğinizdeki SSH komutunu ayrıştırarak otomatik algılamaya çalışır. Güvenilirlik için açık yapılandırma önerilir.
Tailscale üzerinden uzak Mac (örnek)
Gateway bir Linux ana makinesinde/VM’de çalışıyor ancak iMessage’ın bir Mac’te çalışması gerekiyorsa, Tailscale en basit köprüdür: Gateway, tailnet üzerinden Mac ile konuşur, SSH üzerindenimsg’i çalıştırır ve ekleri SCP ile geri alır.
Mimari:
Somut yapılandırma örneği (Tailscale ana makine adı):
~/.openclaw/scripts/imsg-ssh):
- Mac’in Messages’ta oturum açmış olduğundan ve Uzak Oturum Açma’nın etkin olduğundan emin olun.
ssh [email protected]’nin istemler olmadan çalışması için SSH anahtarlarını kullanın.remoteHost, eklerin SCP ile alınabilmesi için SSH hedefiyle eşleşmelidir.
name ile channels.imessage.accounts kullanın. Ortak desen için gateway/configuration bölümüne bakın. ~/.openclaw/openclaw.json’yi commit etmeyin (genellikle belirteçler içerir).
Erişim denetimi (DM’ler + gruplar)
DM’ler:- Varsayılan:
channels.imessage.dmPolicy = "pairing". - Bilinmeyen gönderenler bir eşleştirme kodu alır; onaylanana kadar mesajlar yok sayılır (kodlar 1 saat sonra süresi dolar).
- Onaylama:
openclaw pairing list imessageopenclaw pairing approve imessage <CODE>
- Eşleştirme, iMessage DM’leri için varsayılan belirteç değişimidir. Ayrıntılar: Pairing
channels.imessage.groupPolicy = open | allowlist | disabled.allowlistayarlandığında, gruplarda kimin tetikleyebileceğinichannels.imessage.groupAllowFromdenetler.- Bahsetme kapısı, iMessage’da yerel bahsetme meta verisi olmadığı için
agents.list[].groupChat.mentionPatterns(veyamessages.groupChat.mentionPatterns) kullanır. - Çoklu ajan geçersiz kılma:
agents.list[].groupChat.mentionPatternsüzerinde ajan başına desenler ayarlayın.
Nasıl çalışır (davranış)
imsg, mesaj olaylarını akış halinde iletir; gateway bunları paylaşılan kanal zarfına normalize eder.- Yanıtlar her zaman aynı sohbet kimliğine veya handle’a yönlendirilir.
Grup benzeri iş parçacıkları (is_group=false)
Bazı iMessage iş parçacıkları birden fazla katılımcıya sahip olabilir ancak Messages’ın sohbet tanımlayıcıyı nasıl sakladığına bağlı olarak yine de is_group=false ile gelebilir.
channels.imessage.groups altında açıkça bir chat_id yapılandırırsanız, OpenClaw bu iş parçacığını aşağıdakiler için “grup” olarak ele alır:
- oturum yalıtımı (ayrı
agent:<agentId>:imessage:group:<chat_id>oturum anahtarı) - grup izin listesi / bahsetme kapısı davranışı
Medya + sınırlar
channels.imessage.includeAttachmentsile isteğe bağlı ek alımı.channels.imessage.mediaMaxMbile medya üst sınırı.
Sınırlar
- Giden metin,
channels.imessage.textChunkLimit’e kadar parçalara bölünür (varsayılan 4000). - İsteğe bağlı satır sonu parçalama: uzunluk parçalamadan önce boş satırlarda (paragraf sınırları) bölmek için
channels.imessage.chunkMode="newline"’i ayarlayın. - Medya yüklemeleri
channels.imessage.mediaMaxMbile sınırlandırılır (varsayılan 16).
Adresleme / teslim hedefleri
Kararlı yönlendirme içinchat_id’ü tercih edin:
chat_id:123(tercih edilen)chat_guid:...chat_identifier:...- doğrudan handle’lar:
imessage:+1555/sms:+1555/[email protected]
Yapılandırma başvurusu (iMessage)
Tam yapılandırma: Yapılandırma Sağlayıcı seçenekleri:channels.imessage.enabled: kanal başlatmayı etkinleştir/devre dışı bırak.channels.imessage.cliPath:imsgyolu.channels.imessage.dbPath: Messages DB yolu.channels.imessage.remoteHost:cliPathuzak bir Mac’i işaret ettiğinde SCP ek aktarımı için SSH ana makinesi (ör.user@gateway-host). Ayarlanmazsa SSH sarmalayıcıdan otomatik algılanır.channels.imessage.service:imessage | sms | auto.channels.imessage.region: SMS bölgesi.channels.imessage.dmPolicy:pairing | allowlist | open | disabled(varsayılan: eşleştirme).channels.imessage.allowFrom: DM izin listesi (handle’lar, e-postalar, E.164 numaraları veyachat_id:*).open,"*"gerektirir. iMessage’da kullanıcı adları yoktur; handle’ları veya sohbet hedeflerini kullanın.channels.imessage.groupPolicy:open | allowlist | disabled(varsayılan: izin listesi).channels.imessage.groupAllowFrom: grup gönderen izin listesi.channels.imessage.historyLimit/channels.imessage.accounts.*.historyLimit: bağlam olarak dahil edilecek en fazla grup mesajı (0 devre dışı bırakır).channels.imessage.dmHistoryLimit: kullanıcı dönüşleri cinsinden DM geçmişi sınırı. Kullanıcı başına geçersiz kılmalar:channels.imessage.dms["<handle>"].historyLimit.channels.imessage.groups: grup başına varsayılanlar + izin listesi (küresel varsayılanlar için"*"kullanın).channels.imessage.includeAttachments: ekleri bağlama al.channels.imessage.mediaMaxMb: gelen/giden medya üst sınırı (MB).channels.imessage.textChunkLimit: giden parça boyutu (karakter).channels.imessage.chunkMode: uzunluk parçalamadan önce boş satırlarda (paragraf sınırları) bölmek içinlength(varsayılan) veyanewline.
agents.list[].groupChat.mentionPatterns(veyamessages.groupChat.mentionPatterns).messages.responsePrefix.