Birlikte gelenDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
imessage Plugin’i artık steipete/imsg’yi JSON-RPC üzerinden çalıştırarak BlueBubbles ile aynı özel API yüzeyine (react, edit, unsend, reply, sendWithEffect, grup yönetimi, ekler) erişiyor. Zaten imsg kurulu bir Mac çalıştırıyorsanız BlueBubbles sunucusunu bırakabilir ve Plugin’in doğrudan Messages.app ile konuşmasını sağlayabilirsiniz.
BlueBubbles desteği kaldırıldı. OpenClaw iMessage desteğini yalnızca imsg üzerinden sağlar. Bu kılavuz, eski channels.bluebubbles yapılandırmalarını channels.imessage yapılandırmalarına taşımak içindir; desteklenen başka bir taşıma yolu yoktur.
Bu taşıma ne zaman mantıklıdır?
- Messages.app oturumunun açık olduğu aynı Mac üzerinde (veya SSH üzerinden erişilebilen bir Mac üzerinde) zaten
imsgçalıştırıyorsunuz. - Daha az hareketli parça istiyorsunuz — ayrı BlueBubbles sunucusu yok, kimlik doğrulaması yapılacak REST uç noktası yok, webhook tesisatı yok. Sunucu + istemci uygulaması + yardımcı yerine tek bir CLI ikilisi.
- Özel API yoklamasının
available: truebildirdiği desteklenen bir macOS /imsgderlemesindesiniz.
imsg ne yapar?
imsg, Messages için yerel bir macOS CLI aracıdır. OpenClaw, imsg rpc komutunu alt süreç olarak başlatır ve stdin/stdout üzerinden JSON-RPC ile konuşur. Açığa çıkarılacak HTTP sunucusu, webhook URL’si, arka plan daemon’ı, launch agent’ı veya port yoktur.
- Okumalar, salt okunur bir SQLite tanıtıcısı kullanılarak
~/Library/Messages/chat.dbdosyasından gelir. - Canlı gelen iletiler, yoklama geri dönüşüyle birlikte
chat.dbdosya sistemi olaylarını izleyenimsg watch/watch.subscribeüzerinden gelir. - Gönderimler, normal metin ve dosya gönderimleri için Messages.app otomasyonunu kullanır.
- Gelişmiş eylemler,
imsgyardımcısını Messages.app içine enjekte etmek içinimsg launchkullanır. Okundu bilgilerini, yazıyor göstergelerini, zengin gönderimleri, düzenlemeyi, göndermeyi geri almayı, konuya yanıtı, tapback’leri ve grup yönetimini açan budur. - Linux derlemeleri kopyalanmış bir
chat.dbdosyasını inceleyebilir, ancak gönderim yapamaz, canlı Mac veritabanını izleyemez veya Messages.app’i çalıştıramaz. OpenClaw iMessage içinimsgyi oturum açılmış Mac üzerinde veya o Mac’e giden bir SSH sarmalayıcısı üzerinden çalıştırın.
Başlamadan önce
-
Messages.app çalıştıran Mac’e
imsgyükleyin:imsg chatskomutuunable to open database file, boş çıktı veyaauthorization deniedile başarısız olursaimsgyi başlatan terminale, düzenleyiciye, Node sürecine, Gateway hizmetine veya SSH üst sürecine Full Disk Access verin, ardından bu üst süreci yeniden açın. -
OpenClaw yapılandırmasını değiştirmeden önce okuma, izleme, gönderme ve RPC yüzeylerini doğrulayın:
42değeriniimsg chatsçıktısından gerçek bir sohbet kimliğiyle değiştirin. Gönderim, Messages.app için Automation izni gerektirir. OpenClaw SSH üzerinden çalışacaksa bu komutları OpenClaw’ın kullanacağı aynı SSH sarmalayıcısı veya kullanıcı bağlamı üzerinden çalıştırın. -
Gelişmiş eylemlere ihtiyacınız olduğunda özel API köprüsünü etkinleştirin:
imsg launch, SIP’nin devre dışı bırakılmasını gerektirir. Temel gönderim, geçmiş ve izlemeimsg launcholmadan çalışır; gelişmiş eylemler çalışmaz. -
Köprüyü OpenClaw üzerinden doğrulayın:
imessage.privateApi.available: truegörmelisiniz.falsebildirirse önce bunu düzeltin — bkz. Yetenek algılama. -
Yapılandırmanızın anlık görüntüsünü alın:
Yapılandırma çevirisi
iMessage ve BlueBubbles birçok kanal düzeyi yapılandırmayı paylaşır. Değişen anahtarlar çoğunlukla taşıma katmanına ilişkindir (REST sunucusu yerine yerel CLI). Davranış anahtarları (dmPolicy, groupPolicy, allowFrom vb.) aynı anlamı korur.
| BlueBubbles | paketle gelen iMessage | Notlar |
|---|---|---|
channels.bluebubbles.enabled | channels.imessage.enabled | Aynı semantik. |
channels.bluebubbles.serverUrl | (kaldırıldı) | REST sunucusu yok; Plugin, stdio üzerinden imsg rpc başlatır. |
channels.bluebubbles.password | (kaldırıldı) | Webhook kimlik doğrulaması gerekmez. |
| (örtük) | channels.imessage.cliPath | imsg yolu (varsayılan imsg); SSH için bir sarmalayıcı betik kullanın. |
| (örtük) | channels.imessage.dbPath | İsteğe bağlı Messages.app chat.db geçersiz kılması; atlandığında otomatik algılanır. |
| (örtük) | channels.imessage.remoteHost | host veya user@host; yalnızca cliPath bir SSH sarmalayıcısıysa ve SCP ek getirmelerini istiyorsanız gerekir. |
channels.bluebubbles.dmPolicy | channels.imessage.dmPolicy | Aynı değerler (pairing / allowlist / open / disabled). |
channels.bluebubbles.allowFrom | channels.imessage.allowFrom | Eşleştirme onayları token’a göre değil, handle’a göre taşınır. |
channels.bluebubbles.groupPolicy | channels.imessage.groupPolicy | Aynı değerler (allowlist / open / disabled). |
channels.bluebubbles.groupAllowFrom | channels.imessage.groupAllowFrom | Aynı. |
channels.bluebubbles.groups | channels.imessage.groups | Bunu, varsa groups: { "*": { ... } } joker girdisi dahil olmak üzere birebir kopyalayın. Grup bazlı requireMention, tools, toolsBySender taşınır. groupPolicy: "allowlist" ile boş veya eksik bir groups bloğu her grup mesajını sessizce düşürür; aşağıdaki “Grup kayıt defteri tuzağı” bölümüne bakın. |
channels.bluebubbles.sendReadReceipts | channels.imessage.sendReadReceipts | Varsayılan true. Paketle gelen Plugin ile bu yalnızca private API yoklaması çalışır durumdayken tetiklenir. |
channels.bluebubbles.includeAttachments | channels.imessage.includeAttachments | Aynı biçim, aynı şekilde varsayılan olarak kapalı. BlueBubbles’ta ekler akıyorduysa bunu iMessage bloğunda açıkça yeniden ayarlamanız gerekir; örtük olarak taşınmaz ve siz bunu yapana kadar gelen fotoğraflar/medya Inbound message günlük satırı olmadan sessizce düşürülür. |
channels.bluebubbles.attachmentRoots | channels.imessage.attachmentRoots | Yerel kökler; aynı joker kuralları. |
| (Yok) | channels.imessage.remoteAttachmentRoots | Yalnızca SCP getirmeleri için remoteHost ayarlandığında kullanılır. |
channels.bluebubbles.mediaMaxMb | channels.imessage.mediaMaxMb | iMessage’ta varsayılan 16 MB’dir (BlueBubbles varsayılanı 8 MB idi). Daha düşük sınırı korumak istiyorsanız açıkça ayarlayın. |
channels.bluebubbles.textChunkLimit | channels.imessage.textChunkLimit | İkisinde de varsayılan 4000. |
channels.bluebubbles.coalesceSameSenderDms | channels.imessage.coalesceSameSenderDms | Aynı isteğe bağlı etkinleştirme. Yalnızca DM; grup sohbetleri iki kanalda da mesaj başına anında dispatch davranışını korur. Açık bir messages.inbound.byChannel.imessage olmadan etkinleştirildiğinde varsayılan gelen debounce süresini 2500 ms’ye genişletir. iMessage belgeleri § Bölünmüş gönderimli DM’leri birleştirme bölümüne bakın. |
channels.bluebubbles.enrichGroupParticipantsFromContacts | (Yok) | iMessage gönderen görünen adlarını zaten chat.db dosyasından okur. |
channels.bluebubbles.actions.* | channels.imessage.actions.* | Eylem başına anahtarlar: reactions, edit, unsend, reply, sendWithEffect, renameGroup, setGroupIcon, addParticipant, removeParticipant, leaveGroup, sendAttachment. |
channels.bluebubbles.accounts.*), bire bir channels.imessage.accounts.* değerlerine çevrilir.
Grup kayıt defteri tuzağı
Paketle gelen iMessage Plugin’i, arka arkaya iki ayrı grup izin listesi kapısı çalıştırır. Bir grup mesajının ajana ulaşması için ikisinin de geçilmesi gerekir:- Gönderen / sohbet hedefi izin listesi (
channels.imessage.groupAllowFrom) —isAllowedIMessageSendertarafından denetlenir. Gelen mesajları gönderen handle’ı,chat_guid,chat_identifierveyachat_idile eşleştirir. BlueBubbles ile aynı biçimdedir. - Grup kayıt defteri (
channels.imessage.groups) —inbound-processing.ts:199içindenresolveChannelGroupPolicytarafından denetlenir.groupPolicy: "allowlist"ile bu kapı şunlardan birini gerektirir:- bir
groups: { "*": { ... } }joker girdisi (allowAll = trueayarlar), veya groupsaltında açık birchat_idbazlı girdi.
- bir
warn düzeyinde sinyal yayar:
groupPolicy: "allowlist"ayarlanmış ancakchannels.imessage.groupsboş olduğunda hesap başına bir kerelik başlangıçwarnsinyali ("*"jokeri yok,chat_idbazlı girdi yok); herhangi bir mesaj gelmeden önce tetiklenir.- Belirli bir grup çalışma zamanında ilk kez düşürüldüğünde
chat_idbaşına bir kerelikwarnsinyali; chat_id’yi ve izin vermek içingroupsbölümüne eklenecek tam anahtarı belirtir.
groupAllowFrom ve groupPolicy değerlerini kopyalar ama groups bloğunu atlar, çünkü BlueBubbles’ın groups: { "*": { "requireMention": true } } ayarı ilgisiz bir mention ayarı gibi görünür. Aslında kayıt defteri kapısı için yük taşıyıcıdır.
groupPolicy: "allowlist" sonrasında grup mesajlarının akmaya devam etmesi için minimum yapılandırma:
* altında requireMention: true, hiçbir bahsetme deseni yapılandırılmadığında zararsızdır: çalışma zamanı canDetectMention = false olarak ayarlar ve inbound-processing.ts:512 konumunda bahsetme düşürmeyi kısa devreye alır. Bahsetme desenleri yapılandırıldığında (agents.list[].groupChat.mentionPatterns), beklendiği gibi çalışır.
Gateway günlüklerinde imessage: dropping group message from chat_id=<id> ya da başlangıç satırı olarak imessage: groupPolicy="allowlist" but channels.imessage.groups is empty görünüyorsa, 2. kapı düşürüyor demektir — groups bloğunu ekleyin.
Adım adım
-
Mevcut BlueBubbles bloğunun yanına bir iMessage bloğu ekleyin. Eski bloğu yalnızca yeni yol doğrulanana kadar kopyalama kaynağı olarak tutun:
-
Deneme çalıştırması yoklaması — Gateway’i başlatın ve iMessage’ın sağlıklı raporladığını doğrulayın:
imessage.enabledhâlâfalseolduğu için henüz hiçbir gelen iMessage trafiği yönlendirilmez — ancak--probeköprüyü çalıştırır, böylece geçişten önce izin/kurulum sorunlarını yakalarsınız. -
Geçiş yapın. BlueBubbles yapılandırmasını kaldırın ve tek bir yapılandırma düzenlemesiyle iMessage’ı etkinleştirin:
Gateway’i yeniden başlatın. Gelen iMessage trafiği artık paketlenmiş Plugin üzerinden akar.
- DM’leri doğrulayın. Aracıya doğrudan mesaj gönderin; yanıtın ulaştığını doğrulayın.
-
Grupları ayrı doğrulayın. DM’ler ve gruplar farklı kod yollarını kullanır — DM başarısı grupların yönlendirildiğini kanıtlamaz. Aracıya eşleştirilmiş bir grup sohbetinde mesaj gönderin ve yanıtın ulaştığını doğrulayın. Grup sessiz kalırsa (aracı yanıtı yok, hata yok), Gateway günlüğünde
imessage: dropping group message from chat_id=<id>ya da başlangıçtaimessage: groupPolicy="allowlist" but channels.imessage.groups is emptysatırını kontrol edin — ikisi de varsayılan günlük düzeyinde tetiklenir. Bunlardan biri görünürse,groupsbloğunuz eksik ya da boştur — yukarıdaki “Grup kaydı tuzağı” bölümüne bakın. -
Eylem yüzeyini doğrulayın — eşleştirilmiş bir DM’den aracıdan tepki vermesini, düzenlemesini, göndermeyi geri almasını, yanıtlamasını, fotoğraf göndermesini ve (bir grupta) grubu yeniden adlandırmasını / katılımcı eklemesini ya da kaldırmasını isteyin. Her eylem Messages.app içinde yerel olarak gerçekleşmelidir. Herhangi biri “iMessage
<action>requires the imsg private API bridge” hatasını verirse,imsg launchkomutunu yeniden çalıştırın vechannels status --probesonucunu yenileyin. -
iMessage DM’leri, grupları ve eylemleri doğrulandıktan sonra BlueBubbles sunucusunu ve yapılandırmasını kaldırın. OpenClaw
channels.bluebubbleskullanmayacaktır.
Bir bakışta eylem eşdeğerliği
| Eylem | eski BlueBubbles | paketlenmiş iMessage |
|---|---|---|
| Metin gönder / SMS yedeği | ✅ | ✅ |
| Medya gönder (fotoğraf, video, dosya, ses) | ✅ | ✅ |
İş parçacıklı yanıt (reply_to_guid) | ✅ | ✅ (#51892 kapatır) |
Tapback (react) | ✅ | ✅ |
| Düzenle / göndermeyi geri al (macOS 13+ alıcılar) | ✅ | ✅ |
| Ekran efektiyle gönder | ✅ | ✅ (#9394 bir kısmını kapatır) |
| Zengin metin kalın / italik / altı çizili / üstü çizili | ✅ | ✅ (attributedBody ile typed-run biçimlendirmesi) |
| Grubu yeniden adlandır / grup simgesi ayarla | ✅ | ✅ |
| Katılımcı ekle / kaldır, gruptan ayrıl | ✅ | ✅ |
| Okundu bilgileri ve yazıyor göstergesi | ✅ | ✅ (özel API yoklamasına bağlı) |
| Aynı gönderenli DM birleştirme | ✅ | ✅ (yalnızca DM; channels.imessage.coalesceSameSenderDms ile isteğe bağlı) |
| Gateway kapalıyken alınan gelen mesajları yakalama | ✅ (Webhook yeniden oynatma + geçmiş getirme) | ✅ (channels.imessage.catchup.enabled ile isteğe bağlı; #78649 kapatır) |
channels.imessage.catchup.enabled true ise Gateway, imsg watch tarafından kullanılan aynı JSON-RPC istemcisine karşı bir chats.list + sohbet başına messages.history geçişi çalıştırır, kaçırılan her gelen satırı canlı dağıtım yolundan (izin listeleri, grup politikası, debouncer, echo cache) yeniden oynatır ve sonraki başlangıçların kaldığı yerden devam etmesi için hesap başına bir imleci kalıcı hale getirir. Ayarlama için Gateway kesintisinden sonra yakalama bölümüne bakın.
Eşleştirme, oturumlar ve ACP bağlamaları
- Eşleştirme onayları handle üzerinden taşınır. Bilinen gönderenleri yeniden onaylamanız gerekmez —
channels.imessage.allowFrom, BlueBubbles’ın kullandığı aynı+15555550123/user@example.comdizelerini tanır. - Oturumlar aracı + sohbet başına kapsamlanmış kalır. DM’ler varsayılan
session.dmScope=mainaltında aracının ana oturumunda birleşir; grup oturumlarıchat_idbaşına izole kalır. Oturum anahtarları farklıdır (agent:<id>:imessage:group:<chat_id>ile BlueBubbles eşdeğeri) — BlueBubbles oturum anahtarları altındaki eski konuşma geçmişi iMessage oturumlarına taşınmaz. match.channel: "bluebubbles"referansı veren ACP bağlamaları"imessage"olarak güncellenmelidir.match.peer.idbiçimleri (chat_id:,chat_guid:,chat_identifier:, yalın handle) aynıdır.
Geri dönüş kanalı yok
Geri dönmek için desteklenen bir BlueBubbles çalışma zamanı yoktur. iMessage doğrulaması başarısız olursa,channels.imessage.enabled: false ayarlayın, Gateway’i yeniden başlatın, imsg engelini düzeltin ve geçişi yeniden deneyin.
Yanıt önbelleği ~/.openclaw/state/imessage/reply-cache.jsonl konumunda bulunur (mod 0600, üst dizin 0700). Temiz bir başlangıç istiyorsanız silmek güvenlidir.
İlgili
- iMessage —
imsg launchkurulumu ve yetenek algılama dahil tam iMessage kanal başvurusu. /channels/bluebubbles— bu geçiş kılavuzuna yönlendiren eski URL.- Eşleştirme — DM kimlik doğrulaması ve eşleştirme akışı.
- Kanal Yönlendirme — Gateway’in giden yanıtlar için kanalı nasıl seçtiği.