Mainstream messaging
BlueBubbles'dan geçiş yapma
BlueBubbles desteği kaldırıldı. OpenClaw, iMessage'ı yalnızca paketle birlikte sunulan imessage Plugin aracılığıyla destekler; bu Plugin, steipete/imsg aracını JSON-RPC üzerinden çalıştırır ve BlueBubbles'ın eriştiği aynı özel API yüzeyine (react, edit, unsend, reply, sendWithEffect, yerel anketler, grup yönetimi, ekler) erişir. Tek bir CLI ikili dosyası; BlueBubbles sunucusunun, istemci uygulamasının ve webhook altyapısının yerini alır: REST uç noktası ve webhook kimlik doğrulaması yoktur.
Bu kılavuz, eski channels.bluebubbles yapılandırmalarını channels.imessage biçimine geçirir. Desteklenen başka bir geçiş yolu yoktur. Güncel OpenClaw'da geride kalan bir channels.bluebubbles bloğu etkisizdir; hiçbir çalışma zamanı bunu okumaz.
Geçiş kontrol listesi
Eski BlueBubbles yapılandırmanızı zaten biliyorsanız en kısa güvenli yol:
- Messages.app'i çalıştıran Mac'te doğrudan
imsgdeğerini doğrulayın (imsg chats,imsg history,imsg send,imsg rpc --help). - Davranış anahtarlarını
channels.bluebubbleskonumundanchannels.imessagekonumuna kopyalayın:dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,includeAttachments,attachmentRoots,mediaMaxMb,textChunkLimitveactions. - Artık mevcut olmayan aktarım anahtarlarını kaldırın:
serverUrl,password, webhook URL'leri ve BlueBubbles sunucu kurulumu. - Gateway, Messages Mac'te çalışmıyorsa
channels.imessage.cliPathdeğerini bir SSH sarmalayıcısına ayarlayın ve uzaktan ek getirme işlemleri içinremoteHostdeğerini ayarlayın. channels.imessageözelliğini etkinleştirin, Gateway'i yeniden başlatın, ardındanopenclaw channels status --probe --channel imessagekomutunu çalıştırın.- Bir doğrudan mesajı, izin verilen bir grubu, etkinleştirilmişse ekleri ve aracının kullanmasını beklediğiniz her özel API eylemini test edin.
- iMessage yolu doğrulandıktan sonra BlueBubbles sunucusunu ve eski
channels.bluebubblesyapılandırmasını silin.
imsg ne yapar?
imsg, Messages için yerel bir macOS CLI'sıdır. OpenClaw, imsg rpc aracını bir alt süreç olarak başlatır ve stdin/stdout üzerinden JSON-RPC ile iletişim kurar. Açığa çıkarılacak bir HTTP sunucusu, webhook URL'si, arka plan daemon'u, launch agent'ı veya bağlantı noktası yoktur.
- Okuma işlemleri, salt okunur bir SQLite tanıtıcısı kullanılarak
~/Library/Messages/chat.dbkaynağından gerçekleştirilir. - Canlı gelen mesajlar,
chat.dbdosya sistemi olaylarını yoklama yedeğiyle takip edenimsg watch/watch.subscribekaynağından gelir. - Normal metin ve dosya gönderimleri, Messages.app otomasyonu kullanılarak gerçekleştirilir.
- Gelişmiş eylemler,
imsgyardımcısını Messages.app'e enjekte etmek içinimsg launchkullanır. Okundu bilgileri, yazıyor göstergeleri, zengin gönderimler, düzenleme, gönderimi geri alma, ileti dizili yanıt, tapback'ler, anketler ve grup yönetimi bu şekilde kullanılabilir hâle gelir. - 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çinimsgaracını oturum açılmış Mac'te veya bu Mac'e bağlanan bir SSH sarmalayıcısı üzerinden çalıştırın.
Başlamadan önce
-
Messages.app'i çalıştıran Mac'e
imsgyükleyin:bash brew install steipete/tap/imsgbrew update && brew upgrade imsgimsg --versionimsg chats --limit 3Olağan yerel kurulumda OpenClaw kurulumu, oturum açılmış Messages Mac'teki
imsgiçin kullanıcı onaylı bir Homebrew yüklemesi veya güncellemesi sunabilir. Manuel kurulumlar ve SSH sarmalayıcısı topolojileri operatör tarafından yönetilmeye devam eder: Homebrew güncellemesini,imsgaracını çalıştıracak aynı yerel veya uzak kullanıcı bağlamında yineleyin.imsg chats;unable to open database file, boş çıktı veyaauthorization deniedhatasıyla başarısız olursaimsgaracını başlatan terminale, düzenleyiciye, Node sürecine, Gateway hizmetine veya SSH üst sürecine Tam Disk Erişimi verin ve 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:
bash imsg chats --limit 10 --json | jq -simsg history --chat-id 42 --limit 10 --attachments --json | jq -simsg watch --chat-id 42 --reactions --jsonimsg send --chat-id 42 --text "OpenClaw imsg test"imsg rpc --help42değerini,imsg chatskaynağındaki gerçek bir sohbet kimliğiyle değiştirin. Gönderim için Messages.app'e Otomasyon izni verilmesi gerekir. 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. Okuma işlemleri çalışıyor ancak gönderimler AppleEvents-1743hatasıyla başarısız oluyorsa Otomasyon izninin/usr/libexec/sshd-keygen-wrapperüzerine atanıp atanmadığını kontrol edin; SSH sarmalayıcısı gönderimleri AppleEvents -1743 hatasıyla başarısız oluyor bölümüne bakın. -
Özel API köprüsünü etkinleştirin. Yanıtlar, tapback'ler, efektler, anketler, ek yanıtları ve grup eylemleri buna bağlı olduğundan OpenClaw iMessage için kesinlikle önerilir:
bash imsg launchimsg status --jsonimsg launch, SIP'nin devre dışı bırakılmasını gerektirir (modern macOS'te ayrıca kitaplık doğrulamasının gevşetilmesi gerekir; bkz. imsg özel API'sini etkinleştirme). Temel gönderim, geçmiş ve izleme işlevleriimsg launcholmadan çalışır; OpenClaw iMessage'ın tam eylem yüzeyi çalışmaz. -
channels.imessageözelliğini etkinleştirip Gateway'i başlattıktan sonra köprüyü OpenClaw üzerinden doğrulayın:bash openclaw channels status --probeiMessage hesabı
worksbildirmelidir;--jsonile yoklama yüküprivateApi.available: trueiçerir.falsebildirirse önce bunu düzeltin; Yetenek algılama bölümüne bakın. Yoklama için erişilebilir bir Gateway gerekir (aksi hâlde CLI yalnızca yapılandırma çıktısına geri döner) ve yalnızca yapılandırılmış, etkin hesaplar yoklanır. -
Yapılandırmanızın anlık görüntüsünü alın:
bash cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
Yapılandırma dönüşümü
iMessage ve BlueBubbles, kanal düzeyindeki davranış anahtarlarının çoğunu paylaşır. Değişenler aktarım yöntemi (REST sunucusuna karşı yerel CLI) ve grup kayıt anahtarının biçimidir.
| BlueBubbles | paketle gelen iMessage | Notlar |
|---|---|---|
channels.bluebubbles.enabled |
channels.imessage.enabled |
Aynı semantik (blok mevcut olduğunda varsayılan true). |
channels.bluebubbles.serverUrl |
(kaldırıldı) | REST sunucusu yoktur — 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ı; belirtilmediğinde otomatik olarak algılanır. |
| (örtük) | channels.imessage.remoteHost |
host veya user@host — yalnızca cliPath bir SSH sarmalayıcısıysa ve eklerin SCP ile alınmasını istiyorsanız gereklidir. |
channels.bluebubbles.dmPolicy |
channels.imessage.dmPolicy |
Aynı değerler (pairing / allowlist / open / disabled); varsayılan pairing. |
channels.bluebubbles.allowFrom |
channels.imessage.allowFrom |
Aynı tanıtıcı biçimleri (+15555550123, user@example.com). Eşleştirme deposu onayları aktarılmaz — aşağıya bakın. |
channels.bluebubbles.groupPolicy |
channels.imessage.groupPolicy |
Aynı değerler (allowlist / open / disabled); varsayılan allowlist. |
channels.bluebubbles.groupAllowFrom |
channels.imessage.groupAllowFrom |
Aynı. Ayarlanmadığında iMessage, allowFrom değerine geri döner; açıkça boş bırakılmış bir groupAllowFrom: [], groupPolicy: "allowlist" kapsamında tüm grupları engeller. |
channels.bluebubbles.groups |
channels.imessage.groups |
"*" joker karakter girdisini olduğu gibi kopyalayın; grup başına girdileri sayısal iMessage chat_id değerine göre yeniden anahtarlayın — bkz. "Grup kayıt defteri tuzağı". requireMention, tools, toolsBySender, systemPrompt aynen aktarılır. |
channels.bluebubbles.sendReadReceipts |
channels.imessage.sendReadReceipts |
Varsayılan true. Paketle gelen plugin ile bu yalnızca özel API yoklaması çalışır durumdayken tetiklenir. |
channels.bluebubbles.includeAttachments |
channels.imessage.includeAttachments |
Aynı yapı, aynı şekilde varsayılan olarak kapalı. Ekler BlueBubbles üzerinde aktarılıyorsa bunu açıkça ayarlayın — bunu yapana kadar gelen fotoğraflar/medya sessizce atılır (Inbound message günlük satırı olmadan). |
channels.bluebubbles.attachmentRoots |
channels.imessage.attachmentRoots |
Yerel kökler; aynı joker karakter kuralları. |
| (Geçerli değil) | channels.imessage.remoteAttachmentRoots |
Yalnızca SCP ile alma işlemleri için remoteHost ayarlandığında kullanılır. |
channels.bluebubbles.mediaMaxMb |
channels.imessage.mediaMaxMb |
iMessage üzerinde varsayılan 16 MB'dir (BlueBubbles varsayılanı 8 MB idi). Daha düşük sınırı korumak için açıkça ayarlayın. |
channels.bluebubbles.textChunkLimit |
channels.imessage.textChunkLimit |
Her ikisinde de varsayılan 4000'dir. |
channels.bluebubbles.coalesceSameSenderDms |
(kaldırıldı) | Bu anahtarı taşımayın. imsg 0.13.1 ve daha yeni sürümleri, OpenClaw bunları almadan önce Apple URL önizlemesinin bölünmüş gönderimlerini birleştirir; openclaw doctor --fix eski bir iMessage anahtarını kaldırır. |
channels.bluebubbles.enrichGroupParticipantsFromContacts |
(Geçerli değil) | imsg, chat.db kaynağındaki gönderen görünen adlarını zaten sunar. |
channels.bluebubbles.actions.* |
channels.imessage.actions.* |
Aynı eylem başına açma/kapama ayarları (reactions, edit, unsend, reply, sendWithEffect, renameGroup, setGroupIcon, addParticipant, removeParticipant, leaveGroup, sendAttachment) ve yeni polls. Tümü varsayılan olarak etkindir; özel API eylemleri yine de köprüyü gerektirir. |
Çok hesaplı yapılandırmalar (channels.bluebubbles.accounts.*), channels.imessage.accounts.* biçimine bire bir çevrilir.
Grup kayıt defteri tuzağı
Paketle gelen iMessage plugin'i art arda iki grup geçidi çalıştırır. Bir grup mesajının aracıya ulaşabilmesi için her ikisinden de geçmesi gerekir:
- Gönderen / sohbet hedefi izin listesi (
channels.imessage.groupAllowFrom) — gönderen tanıtıcısıyla veya sohbet hedefiyle (chat_id:,chat_guid:,chat_identifier:girdileri) eşleşir.groupAllowFromayarlanmadığında bu geçitallowFromdeğerine geri döner; açıkça belirtilengroupAllowFrom: []bu geri dönüşü devre dışı bırakır vegroupPolicy: "allowlist"kapsamında her grup mesajını atar. - Grup kayıt defteri (
channels.imessage.groups) — sayısal iMessagechat_idile anahtarlanır:groupsbloğu yoksa (veya boşsa): 1. geçidin boş olmayan etkin bir gönderen izin listesi olduğu sürece gruplar bu geçitten geçer; erişimi gönderen filtrelemesi yönetir ve başlangıçta tümünü atma uyarısı verilmez.- Girdileri olan ancak
"*"içermeyengroups: yalnızca listelenenchat_idanahtarları geçer. Herhangi bir grubu listelemek,groupPolicy: "open"altında bile kayıt defterini bir izin listesine dönüştürür. groups: { "*": { ... } }: her grup bu geçitten geçer.
Taşıma tuzağı: BlueBubbles, groups girdilerini sohbet GUID'si / sohbet tanımlayıcısıyla anahtarlarken iMessage kayıt defteri sayısal chat_id ile anahtarlar. Grup başına girdilerin olduğu gibi kopyalanması, anahtarları hiçbir zaman eşleşmeyen ve boş olmayan bir kayıt defteri oluşturur; bu nedenle her grup mesajı 2. geçitte atılır. "*" joker karakterini olduğu gibi kopyalayın; belirli grup girdilerini imsg chats kaynağındaki chat_id değerleriyle yeniden anahtarlayın.
Her iki atma yolu da varsayılan günlük düzeyinde warn satırları aracılığıyla görülebilir:
groupPolicy: "allowlist"ayarlandığında ve etkin grup gönderen izin listesi boş olduğunda, başlangıçta hesap başına bir kez:imessage: groupPolicy="allowlist" for account "<id>" but no group sender allowlist is configured .... Gönderenleri kabul etmek içingroupAllowFrom(veyaallowFrom) ayarlayın; yalnızcagroupseklemek gönderen geçidini karşılamaz.- Kayıt defteri bir grubu attığında çalışma zamanında
chat_idbaşına bir kez:imessage: dropping group message from chat_id=<id> ... not in channels.imessage.groups allowlist; eklenecek tam anahtarı belirtir.
DM'ler her iki durumda da çalışmaya devam eder — farklı bir kod yolu kullanırlar, bu nedenle DM başarısı grup yönlendirmesinin çalıştığını kanıtlamaz.
groupPolicy: "allowlist" ile gönderen kapsamlı asgari yapılandırma:
{ channels: { imessage: { groupPolicy: "allowlist", groupAllowFrom: ["+15555550123", "chat_guid:any;-;..."], }, },}Bu, yapılandırılmış gönderenleri herhangi bir grupta kabul eder. İzin verilen sohbetleri sınırlandırmak veya requireMention gibi sohbet başına seçenekleri ayarlamak için groups girdileri ekleyin; BlueBubbles "*" girdisini olduğu gibi kopyalayın ancak belirli girdileri sayısal iMessage chat_id değerleriyle yeniden anahtarlayın.
Adım adım
-
Yapılandırmayı çevirin. Düzenlerken yeni bloğu devre dışı bırakın; eski
channels.bluebubblesbloğu güncel OpenClaw tarafından yok sayılır ve başvuru amacıyla yanında kalabilir:json5 { channels: { imessage: { enabled: false, // geçişe hazır olduğunuzda true yapın cliPath: "/opt/homebrew/bin/imsg", dmPolicy: "pairing", allowFrom: ["+15555550123"], // bluebubbles.allowFrom değerinden kopyalayın groupPolicy: "allowlist", groupAllowFrom: [], // bluebubbles.groupAllowFrom değerinden kopyalayın groups: { "*": { requireMention: true } }, // joker karakteri olduğu gibi kopyalayın; sohbet başına girdileri chat_id ile yeniden anahtarlayın // eylemler varsayılan olarak etkindir; devre dışı bırakmak için ayrı ayrı açma/kapama ayarlarını false yapın }, },} -
Geçişi yapın ve yoklayın.
channels.imessage.enabled: truedeğerini ayarlayın, Gateway'i yeniden başlatın ve kanalın sağlıklı olarak bildirildiğini doğrulayın:bash openclaw gateway restartopenclaw channels status --probe --channel imessage # "works" beklenir; --json, privateApi.available: true değerini gösterirYoklama, erişilebilir bir Gateway gerektirir ve yalnızca yapılandırılmış, etkin hesapları yoklar. Mac'in kendisini doğrulamak için Başlamadan önce bölümündeki doğrudan
imsgkomutlarını kullanın. -
DM'leri doğrulayın. Ajana doğrudan mesaj gönderin; yanıtın ulaştığını doğrulayın.
-
Grupları ayrı olarak doğrulayın. DM'ler ve gruplar farklı kod yollarını kullanır — DM başarısı, grupların yönlendirildiğini kanıtlamaz. İzin verilen bir grup sohbetinde mesaj gönderin ve yanıtın ulaştığını doğrulayın. Grup sessiz kalırsa (ajan yanıtı ve hata yoksa), yukarıdaki "Grup kayıt defteri tuzağı" bölümünde belirtilen iki
warnsatırı için gateway günlüğünü kontrol edin. Başlangıç uyarısı, geçerli gönderen izin listesinin boş olduğu anlamına gelir;chat_idbaşına verilen uyarı ise doldurulmuş birgroupskayıt defterinin ilgili sohbeti içermediği anlamına gelir. -
Eylem yüzeyini doğrulayın. Eşleştirilmiş bir DM'den ajandan tepki vermesini, düzenlemesini, göndermeyi geri almasını, yanıtlamasını, fotoğraf göndermesini ve (bir grupta) grubun adını değiştirmesini ya da katılımcı ekleyip kaldırmasını isteyin. Her eylem Messages.app içinde yerel olarak gerçekleşmelidir. Herhangi bir eylem
iMessage <action> requires the imsg private API bridgehatası verirseimsg launchkomutunu yeniden çalıştırın veopenclaw channels status --probeile yenileyin. -
iMessage DM'leri, grupları ve eylemleri doğrulandıktan sonra BlueBubbles sunucusunu ve
channels.bluebubblesbloğunu kaldırın. OpenClaw,channels.bluebubblesdeğerini okumaz.
Bir bakışta eylem eşdeğerliği
| Eylem | eski BlueBubbles | paketlenmiş iMessage |
|---|---|---|
| Metin gönderme / SMS'e geri dönme | ✅ | ✅ |
| Medya gönderme (fotoğraf, video, dosya, ses) | ✅ | ✅ |
Konu dizili yanıt (reply_to_guid) |
✅ | ✅ (#51892 kapatıldı) |
Tapback (react) |
✅ | ✅ |
| Düzenleme / göndermeyi geri alma (macOS 13+ alıcılar) | ✅ | ✅ |
| Ekran efektiyle gönderme | ✅ | ✅ (#9394 sorununun bir bölümü kapatıldı) |
| Zengin metin kalın / italik / altı çizili / üstü çizili | ✅ | ✅ (attributedBody aracılığıyla tür belirtilmiş çalışma biçimlendirmesi) |
| Yerel Messages anketleri (oluşturma ve oy verme) | ❌ | ✅ (actions.polls; yerel görüntüleme için alıcılarda iOS/macOS 26+ gerekir) |
| Grubu yeniden adlandırma / grup simgesini ayarlama | ✅ | ✅ |
| Katılımcı ekleme / kaldırma, gruptan ayrılma | ✅ | ✅ |
| Okundu bilgileri ve yazıyor göstergesi | ✅ | ✅ (özel API yoklamasına bağlıdır) |
| Apple URL önizlemesi için bölünmüş gönderim birleştirme | ✅ | ✅ (imsg 0.13.1 ve daha yeni sürümler tarafından üst akışta işlenir; OpenClaw ayarı yoktur) |
| Yeniden başlatma sonrasında gelen iletileri kurtarma | ✅ | ✅ (otomatik: since_rowid yeniden oynatma + GUID tekilleştirme; yerel kurulumda daha geniş pencere) |
iMessage, gateway kapalıyken kaçırılan iletileri kurtarır: başlangıçta imsg watch.subscribe since_rowid aracılığıyla son iletilen rowid'den itibaren yeniden oynatır, GUID'ye göre tekilleştirir ve eski birikim yaş sınırı, Push boşaltımındaki "birikim bombasını" engeller. Bu işlem imsg RPC bağlantısı üzerinden yürütüldüğünden uzak SSH cliPath kurulumlarında da çalışır; yerel kurulumlar chat.db değerini okuyabildiğinden daha geniş bir kurtarma penceresi elde eder. Bkz. Köprü veya gateway yeniden başlatıldıktan sonra gelen iletileri kurtarma.
Eşleştirme, oturumlar ve ACP bağlamaları
- İzin listeleri tanıtıcıya göre aktarılır.
channels.imessage.allowFrom, BlueBubbles'ın kullandığı aynı+15555550123/user@example.comdizelerini tanır — bunları aynen kopyalayın. - Eşleştirme deposu onayları aktarılmaz. Eşleştirme deposu kanal başınadır ve eski BlueBubbles deposunu hiçbir şey taşımaz. Yalnızca eşleştirme yoluyla onaylanan gönderenler iMessage altında bir kez daha eşleşmelidir veya tanıtıcılarını
allowFromlistesine eklemeniz gerekir. - Oturumlar, ajan + sohbet başına kapsamlandırılmış olarak kalır. DM'ler varsayılan
session.dmScope=mainaltında ajanın ana oturumunda birleştirilir; grup oturumları herchat_id(agent:<agentId>:imessage:group:<chat_id>) için ayrı tutulur. BlueBubbles oturum anahtarları altındaki eski konuşma geçmişi iMessage oturumlarına aktarılmaz. match.channel: "bluebubbles"değerine başvuran ACP bağlamaları,"imessage"olarak değiştirilmelidir.match.peer.idbiçimleri (chat_id:,chat_guid:,chat_identifier:, yalın tanıtıcı) aynıdır.
Geri dönüş kanalı yoktur
Geri dönülebilecek desteklenen bir BlueBubbles çalışma zamanı yoktur. iMessage doğrulaması başarısız olursa channels.imessage.enabled: false değerini ayarlayın, Gateway'i yeniden başlatın, imsg engelini giderin ve geçişi yeniden deneyin.
Yanıt önbelleği SQLite Plugin durumunda bulunur. openclaw doctor --fix, mevcut olduğunda eski imessage/reply-cache.jsonl yan dosyasını içe aktarır ve arşivler.
İlgili içerikler
- BlueBubbles'ın kaldırılması ve imsg iMessage yolu — kısa duyuru ve operatör özeti.
- iMessage —
imsg launchkurulumu ve yetenek algılama dâhil eksiksiz 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.