Pairing
Slack DM’leri varsayılan olarak eşleştirme modunu kullanır.
Slash commands
Yerel komut davranışı ve komut kataloğu.
Channel troubleshooting
Kanallar arası tanılama ve onarım çalışma kılavuzları.
Socket Mode veya HTTP İstek URL’lerini seçme
Her iki aktarım da üretime hazırdır ve mesajlaşma, slash komutları, App Home ve etkileşim için özellik eşitliğine ulaşır. Özelliklere göre değil, dağıtım şekline göre seçim yapın.| Konu | Socket Mode (varsayılan) | HTTP İstek URL’leri |
|---|---|---|
| Herkese açık Gateway URL’si | Gerekli değil | Gerekli (DNS, TLS, ters proxy veya tünel) |
| Giden ağ | wss-primary.slack.com adresine giden WSS erişilebilir olmalıdır | Giden WS yok; yalnızca gelen HTTPS |
| Gerekli token’lar | Bot token’ı + connections:write ile App-Level Token | Bot token’ı + Signing Secret |
| Geliştirici dizüstü / güvenlik duvarı arkasında | Olduğu gibi çalışır | Herkese açık bir tünel (ngrok, Cloudflare Tunnel, Tailscale Funnel) veya hazırlık Gateway’i gerekir |
| Yatay ölçeklendirme | Uygulama başına, ana bilgisayar başına bir Socket Mode oturumu; birden fazla Gateway ayrı Slack uygulamaları gerektirir | Durumsuz POST işleyici; birden fazla Gateway replikası bir yük dengeleyicinin arkasında tek bir uygulamayı paylaşabilir |
| Tek Gateway’de çoklu hesap | Desteklenir; her hesap kendi WS bağlantısını açar | Desteklenir; kayıtların çakışmaması için her hesabın benzersiz bir webhookPath değerine (varsayılan /slack/events) ihtiyacı vardır |
| Slash komutu aktarımı | WS bağlantısı üzerinden teslim edilir; slash_commands[].url yok sayılır | Slack, slash_commands[].url adresine POST gönderir; komutun dağıtılması için alan gereklidir |
| İstek imzalama | Kullanılmaz (kimlik doğrulama App-Level Token’dır) | Slack her isteği imzalar; OpenClaw signingSecret ile doğrular |
| Bağlantı koptuğunda kurtarma | Slack SDK otomatik yeniden bağlanma etkindir; OpenClaw ayrıca başarısız Socket Mode oturumlarını sınırlı geri çekilme ile yeniden başlatır. Pong-timeout aktarım ayarı uygulanır. | Kopacak kalıcı bağlantı yoktur; yeniden denemeler Slack tarafından istek bazında yapılır |
Tek Gateway ana bilgisayarları, geliştirici dizüstü bilgisayarları ve
*.slack.com adresine giden bağlantı kurabilen ancak gelen HTTPS kabul edemeyen şirket içi ağlar için Socket Mode’u seçin.Bir yük dengeleyicinin arkasında birden fazla Gateway replikası çalıştırırken, giden WSS engelliyken gelen HTTPS’ye izin verildiğinde veya Slack Webhook’larını zaten bir ters proxy’de sonlandırıyorsanız HTTP İstek URL’lerini seçin.Relay modu
Relay modu, Slack girişini OpenClaw gateway’den ayırır. Güvenilir bir yönlendirici tek Slack Socket Mode bağlantısına sahip olur, bir hedef gateway seçer ve yazılmış bir olayı kimliği doğrulanmış bir websocket üzerinden iletir. Gateway, giden Slack Web API çağrıları için bot token’ını kullanmaya devam eder.wss:// kullanmalıdır. Bearer token’ı ve yönlendirici rota tablosunu Slack yetkilendirme sınırının parçası olarak ele alın: yönlendirilen olaylar, yetkilendirilmiş etkinleştirmeler olarak normal Slack mesaj işleyicisine girer. Websocket hello karesindeki yönlendirici tarafından sağlanan bir slack_identity, varsayılan giden kullanıcı adını ve simgeyi ayarlayabilir; çağıran tarafından sağlanan açık kimlik yine önceliklidir. Relay bağlantısı, Socket Mode tarafından kullanılan aynı sınırlı geri çekilme zamanlamasıyla yeniden bağlanır ve bağlantısı her kesildiğinde yönlendirici tarafından sağlanan kimliği temizler.
Kurulum
Kanalı yapılandırmadan önce Slack’i kurun:plugins install, plugin’i kaydeder ve etkinleştirir. Slack uygulamasını ve aşağıdaki kanal ayarlarını yapılandırana kadar plugin yine de hiçbir şey yapmaz. Genel plugin davranışı ve kurulum kuralları için Plugins bölümüne bakın.
Hızlı kurulum
- Socket Mode (default)
- HTTP Request URLs
Create a new Slack app
api.slack.com/apps sayfasını açın → Create New App → From a manifest → çalışma alanınızı seçin → aşağıdaki manifestlerden birini yapıştırın → Next → Create.Slack uygulamayı oluşturduktan sonra:
Recommended, Slack plugin’inin tam özellik kümesiyle eşleşir: App Home, slash komutları, dosyalar, tepkiler, sabitlemeler, grup DM’leri ve emoji/kullanıcı grubu okumaları. Çalışma alanı politikası kapsamları kısıtladığında Minimal seçeneğini seçin; DM’leri, kanal/grup geçmişini, bahsetmeleri ve slash komutlarını kapsar ancak dosyaları, tepkileri, sabitlemeleri, grup DM (
mpim:*), emoji:read ve usergroups:read kapsamlarını çıkarır. Kapsam başına gerekçe ve ek slash komutları gibi eklemeli seçenekler için Manifest ve kapsam kontrol listesi bölümüne bakın.- Basic Information -> App-Level Tokens -> Generate Token and Scopes:
connections:writeekleyin, kaydedin, App-Level Token’ı kopyalayın. - Install App -> Install to Workspace: Bot User OAuth Token’ı kopyalayın.
Socket Mode aktarım ayarı
OpenClaw, Socket Mode için Slack SDK istemcisi pong zaman aşımını varsayılan olarak 15 saniyeye ayarlar. Aktarım ayarlarını yalnızca çalışma alanına veya ana makineye özgü ayar gerektiğinde geçersiz kılın:clientPingTimeout, SDK bir istemci pingi gönderdikten sonraki pong bekleme süresidir; serverPingTimeout, Slack sunucu pingleri için bekleme süresidir. Uygulama mesajları ve olayları, aktarım canlılığı sinyalleri değil uygulama durumudur.
Notlar:
socketMode, HTTP İstek URL’si modunda yok sayılır.- Temel
channels.slack.socketModeayarları, geçersiz kılınmadığı sürece tüm Slack hesaplarına uygulanır. Hesap bazında geçersiz kılmalarchannels.slack.accounts.<accountId>.socketModekullanır; bu bir nesne geçersiz kılması olduğundan, o hesap için istediğiniz her socket ayar alanını ekleyin. - Yalnızca
clientPingTimeoutiçin bir OpenClaw varsayılanı vardır (15000).serverPingTimeoutvepingPongLoggingEnabled, yalnızca yapılandırıldığında Slack SDK’ya geçirilir. - Socket Mode yeniden başlatma geri çekilmesi yaklaşık 2 saniyeden başlar ve yaklaşık 30 saniyede sınırlanır. Kurtarılabilir başlatma, başlatma beklemesi ve bağlantı kesilme hataları kanal durana kadar yeniden denenir. Geçersiz kimlik doğrulama, iptal edilmiş tokenlar veya eksik kapsamlar gibi kalıcı hesap ve kimlik bilgisi hataları ise sonsuza kadar yeniden denemek yerine hızlıca başarısız olur.
Manifest ve kapsam kontrol listesi
Temel Slack uygulama manifesti Socket Mode ve HTTP İstek URL’leri için aynıdır. Yalnızcasettings bloğu (ve eğik çizgi komutu url) farklıdır.
Temel manifest (Socket Mode varsayılanı):
settings değerini HTTP varyantıyla değiştirin ve her eğik çizgi komutuna url ekleyin. Herkese açık URL gereklidir:
Ek manifest ayarları
Yukarıdaki varsayılanları genişleten farklı özellikleri gösterin. Varsayılan manifest, Slack Uygulama Ana Sayfası Ana Sayfa sekmesini etkinleştirir veapp_home_opened olayına abone olur. Bir çalışma alanı üyesi Ana Sayfa sekmesini açtığında OpenClaw, views.publish ile güvenli bir varsayılan Ana Sayfa görünümü yayımlar; konuşma yükü veya özel yapılandırma dahil edilmez. Mesajlar sekmesi Slack DM’leri için etkin kalır. Manifest ayrıca features.assistant_view, assistant:write, assistant_thread_started ve assistant_thread_context_changed ile Slack asistan iş parçacıklarını etkinleştirir; asistan iş parçacıkları kendi OpenClaw iş parçacığı oturumlarına yönlendirilir ve Slack tarafından sağlanan iş parçacığı bağlamını agent için kullanılabilir tutar.
İsteğe bağlı yerel eğik çizgi komutları
İsteğe bağlı yerel eğik çizgi komutları
Birden çok yerel eğik çizgi komutu, bazı ayrıntılarla tek bir yapılandırılmış komut yerine kullanılabilir:
/statusyerine/agentstatuskullanın, çünkü/statuskomutu ayrılmıştır.- Aynı anda en fazla 25 eğik çizgi komutu kullanılabilir hale getirilebilir.
features.slash_commands bölümünüzü kullanılabilir komutlar listesinin bir alt kümesiyle değiştirin:- Socket Mode (default)
- HTTP Request URLs
İsteğe bağlı yazarlık kapsamları (yazma işlemleri)
İsteğe bağlı yazarlık kapsamları (yazma işlemleri)
Giden mesajların varsayılan Slack uygulama kimliği yerine etkin agent kimliğini (özel kullanıcı adı ve simge) kullanmasını istiyorsanız
chat:write.customize bot kapsamını ekleyin.Emoji simgesi kullanıyorsanız Slack :emoji_name: söz dizimini bekler.İsteğe bağlı kullanıcı belirteci kapsamları (okuma işlemleri)
İsteğe bağlı kullanıcı belirteci kapsamları (okuma işlemleri)
channels.slack.userToken yapılandırırsanız tipik okuma kapsamları şunlardır:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(Slack arama okumalarına bağlıysanız)
Belirteç modeli
- Socket Mode için
botToken+appTokengereklidir. - HTTP modu
botToken+signingSecretgerektirir. - Relay modu
botTokenile birlikterelay.url,relay.authTokenverelay.gatewayIdgerektirir; uygulama belirteci veya imzalama gizli anahtarı kullanmaz. botToken,appToken,signingSecret,relay.authTokenveuserTokendüz metin dizelerini veya SecretRef nesnelerini kabul eder.- Yapılandırma belirteçleri env yedeğini geçersiz kılar.
SLACK_BOT_TOKEN/SLACK_APP_TOKENenv yedeği yalnızca varsayılan hesaba uygulanır.userTokenyalnızca yapılandırma üzerinden ayarlanır (env yedeği yoktur) ve varsayılan olarak salt okunur davranışa (userTokenReadOnly: true) ayarlanır.
- Slack hesap incelemesi, kimlik bilgisi başına
*Sourceve*Statusalanlarını izler (botToken,appToken,signingSecret,userToken). - Durum
available,configured_unavailableveyamissingolur. configured_unavailable, hesabın SecretRef veya başka bir satır içi olmayan gizli kaynak üzerinden yapılandırıldığı, ancak geçerli komut/çalışma zamanı yolunun gerçek değeri çözemediği anlamına gelir.- HTTP modunda
signingSecretStatusdahil edilir; Socket Mode’da gerekli çiftbotTokenStatus+appTokenStatusolur.
Eylemler ve kapılar
Slack eylemlerichannels.slack.actions.* tarafından denetlenir.
Geçerli Slack araçlarında kullanılabilir eylem grupları:
| Grup | Varsayılan |
|---|---|
| messages | enabled |
| reactions | enabled |
| pins | enabled |
| memberInfo | enabled |
| emojiList | enabled |
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info ve emoji-list bulunur. download-file, gelen dosya yer tutucularında gösterilen Slack dosya kimliklerini kabul eder ve görüntüler için görüntü önizlemeleri, diğer dosya türleri için yerel dosya meta verileri döndürür.
Erişim denetimi ve yönlendirme
- DM ilkesi
- Kanal ilkesi
- Bahsetmeler ve kanal kullanıcıları
channels.slack.dmPolicy DM erişimini denetler. channels.slack.allowFrom kurallı DM izin listesidir.pairing(varsayılan)allowlistopen(channels.slack.allowFromiçinde"*"bulunmasını gerektirir)disabled
dm.enabled(varsayılan true)channels.slack.allowFromdm.allowFrom(eski)dm.groupEnabled(grup DM’leri varsayılan olarak false)dm.groupChannels(isteğe bağlı MPIM izin listesi)
channels.slack.accounts.default.allowFromyalnızcadefaulthesabına uygulanır.- Adlandırılmış hesaplar, kendi
allowFromdeğerleri ayarlanmamışsachannels.slack.allowFromdeğerini devralır. - Adlandırılmış hesaplar
channels.slack.accounts.default.allowFromdeğerini devralmaz.
channels.slack.dm.policy ve channels.slack.dm.allowFrom uyumluluk için hâlâ okunur. openclaw doctor --fix, erişimi değiştirmeden yapabildiğinde bunları dmPolicy ve allowFrom değerlerine taşır.DM’lerde eşleştirme openclaw pairing approve slack <code> kullanır.İleti dizileri, oturumlar ve yanıt etiketleri
- DM’ler
directolarak; kanallarchannelolarak; MPIM’lergroupolarak yönlendirilir. - Slack rota bağlamaları ham eş kimliklerini ve
channel:C12345678,user:U12345678ve<@U12345678>gibi Slack hedef biçimlerini kabul eder. - Varsayılan
session.dmScope=mainile Slack DM’leri aracının ana oturumuna daraltılır. - Kanal oturumları:
agent:<agentId>:slack:channel:<channelId>. - Sıradan üst düzey kanal mesajları,
replyToModeoffolmadığında bile kanal başına oturumda kalır. - Slack ileti dizisi yanıtları, giden yanıt ileti dizileri
replyToMode="off"ile devre dışı bırakılmış olsa bile, oturum son ekleri için üst Slackthread_tsdeğerini kullanır (:thread:<threadTs>). - OpenClaw, bu kökün görünür bir Slack ileti dizisi başlatması beklendiğinde uygun bir üst düzey kanal kökünü
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>içine eker; böylece kök ve sonraki ileti dizisi yanıtları tek bir OpenClaw oturumunu paylaşır. Bu,app_mentionolayları, açık bot veya yapılandırılmış bahsetme deseni eşleşmeleri veoffolmayanreplyToModeilerequireMention: falsekanalları için geçerlidir. channels.slack.thread.historyScopevarsayılanıthread;thread.inheritParentvarsayılanıfalsedeğeridir.channels.slack.thread.initialHistoryLimit, yeni bir ileti dizisi oturumu başladığında kaç mevcut ileti dizisi mesajının getirileceğini denetler (varsayılan20; devre dışı bırakmak için0ayarlayın).channels.slack.thread.requireExplicitMention(varsayılanfalse):trueolduğunda örtük ileti dizisi bahsetmelerini bastırır; böylece bot, ileti dizisine zaten katılmış olsa bile yalnızca ileti dizileri içindeki açık@botbahsetmelerine yanıt verir. Bu olmadan, botun katıldığı bir ileti dizisindeki yanıtlarrequireMentiongeçidini atlar.
channels.slack.replyToMode:off|first|all|batched(varsayılanoff)channels.slack.replyToModeByChatType:direct|group|channelbaşına- doğrudan sohbetler için eski yedek:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message aracından açık Slack ileti dizisi yanıtları için, Slack’ten ileti dizisi yanıtını üst kanala da yayımlamasını istemek üzere action: "send" ve threadId veya replyTo ile replyBroadcast: true ayarlayın. Bu, Slack’in chat.postMessage reply_broadcast bayrağına eşlenir ve medya yüklemeleri için değil, yalnızca metin veya Block Kit gönderimleri için desteklenir.
Bir message araç çağrısı bir Slack ileti dizisi içinde çalıştığında ve aynı kanalı hedeflediğinde, OpenClaw normalde mevcut Slack ileti dizisini replyToMode uyarınca devralır. Bunun yerine yeni bir üst kanal mesajını zorlamak için action: "send" veya action: "upload-file" üzerinde topLevel: true ayarlayın. threadId: null aynı üst düzey çıkış seçeneği olarak kabul edilir.
replyToMode="off", açık [[reply_to_*]] etiketleri dahil giden Slack yanıt ileti dizilerini devre dışı bırakır. Gelen Slack ileti dizisi oturumlarını düzleştirmez: bir Slack ileti dizisi içinde zaten yayımlanmış mesajlar yine de :thread:<threadTs> oturumuna yönlendirilir. Bu, açık etiketlerin "off" modunda hâlâ dikkate alındığı Telegram’dan farklıdır. Slack ileti dizileri mesajları kanaldan gizlerken Telegram yanıtları satır içinde görünür kalır.Onay tepkileri
ackReaction, OpenClaw gelen bir mesajı işlerken bir onay emojisi gönderir. ackReactionScope, bu emojinin gerçekte ne zaman gönderileceğine karar verir.
Emoji (ackReaction)
Çözümleme sırası:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- aracı kimliği emoji yedeği (
agents.list[].identity.emoji, aksi halde"eyes"/ 👀)
- Slack kısa kodlar bekler (örneğin
"eyes"). - Slack hesabı için veya genel olarak tepkiyi devre dışı bırakmak üzere
""kullanın.
Kapsam (messages.ackReactionScope)
Slack sağlayıcısı kapsamı messages.ackReactionScope değerinden okur (varsayılan "group-mentions"). Bugün Slack hesabı veya Slack kanal düzeyinde geçersiz kılma yoktur; değer Gateway genelinde küreseldir.
Değerler:
"all": DM’lerde ve gruplarda tepki ver."direct": yalnızca DM’lerde tepki ver."group-all": her grup mesajında tepki ver (DM yok)."group-mentions"(varsayılan): gruplarda tepki ver, ancak yalnızca bottan bahsedildiğinde (veya kabul etmiş grup bahsedilebilirlerinde). DM’ler hariç tutulur."off"/"none": hiçbir zaman tepki verme.
Varsayılan kapsam (
"group-mentions") doğrudan mesajlarda onay tepkilerini tetiklemez. Yapılandırılmış ackReaction değerini (örneğin "eyes") gelen Slack DM’lerinde görmek için messages.ackReactionScope değerini "direct" veya "all" olarak ayarlayın. messages.ackReactionScope, Slack sağlayıcısı başlatılırken okunur; bu nedenle değişikliğin etkili olması için Gateway yeniden başlatması gerekir.Metin akışı
channels.slack.streaming, canlı önizleme davranışını denetler:
off: canlı önizleme akışını devre dışı bırak.partial(varsayılan): önizleme metnini en son kısmi çıktı ile değiştir.block: parçalı önizleme güncellemeleri ekle.progress: oluşturma sırasında ilerleme durumu metnini göster, ardından son metni gönder.streaming.preview.toolProgress: taslak önizleme etkin olduğunda araç/ilerleme güncellemelerini aynı düzenlenen önizleme mesajına yönlendirir (varsayılan:true). Ayrı araç/ilerleme mesajlarını korumak içinfalseayarlayın.streaming.preview.commandText/streaming.progress.commandText: ham komut/exec metnini gizlerken kompakt araç ilerleme satırlarını korumak içinstatusolarak ayarlayın (varsayılan:raw).
channels.slack.streaming.nativeTransport, channels.slack.streaming.mode partial olduğunda Slack yerel metin akışını denetler (varsayılan: true).
Slack yerel ilerleme görev kartları, ilerleme modu için isteğe bağlıdır. İş çalışırken Slack’e yerel bir plan/görev kartı göndermek, ardından tamamlandığında aynı görev kartını güncellemek için channels.slack.streaming.mode="progress" ile channels.slack.streaming.progress.nativeTaskCards değerini true olarak ayarlayın. Bu bayrak olmadan, ilerleme modu taşınabilir taslak önizleme davranışını korur.
- Yerel metin akışının ve Slack asistan ileti dizisi durumunun görünmesi için bir yanıt ileti dizisi kullanılabilir olmalıdır. İleti dizisi seçimi yine
replyToModedeğerini izler. - Kanal, grup sohbeti ve üst düzey DM kökleri, yerel akış kullanılamadığında veya yanıt ileti dizisi olmadığında normal taslak önizlemeyi kullanmaya devam edebilir.
- Üst düzey Slack DM’leri varsayılan olarak ileti dizisi dışında kalır; bu nedenle Slack’in ileti dizisi tarzı yerel akış/durum önizlemesini göstermezler. OpenClaw bunun yerine DM içinde bir taslak önizleme yayımlar ve düzenler.
- Medya ve metin dışı yükler normal teslimata geri döner.
- Medya/hata sonları bekleyen önizleme düzenlemelerini iptal eder; uygun metin/blok sonları yalnızca önizlemeyi yerinde düzenleyebildiklerinde boşaltılır.
- Akış yanıt ortasında başarısız olursa OpenClaw kalan yükler için normal teslimata geri döner.
channels.slack.streamMode(replace | status_final | append),channels.slack.streaming.modeiçin eski bir çalışma zamanı takma adıdır.- Boole
channels.slack.streaming,channels.slack.streaming.modevechannels.slack.streaming.nativeTransportiçin eski bir çalışma zamanı takma adıdır. - Eski
channels.slack.nativeStreaming,channels.slack.streaming.nativeTransportiçin bir çalışma zamanı takma adıdır. - Kalıcı Slack akış yapılandırmasını kurallı anahtarlara yeniden yazmak için
openclaw doctor --fixçalıştırın.
Yazıyor tepkisi yedeği
typingReaction, OpenClaw bir yanıtı işlerken gelen Slack mesajına geçici bir tepki ekler, ardından çalışma bittiğinde bunu kaldırır. Bu, varsayılan bir “yazıyor…” durum göstergesi kullanan ileti dizisi yanıtlarının dışında en kullanışlıdır.
Çözümleme sırası:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack kısa kodlar bekler (örneğin
"hourglass_flowing_sand"). - Tepki en iyi çaba esasına göredir ve yanıt veya hata yolu tamamlandıktan sonra temizlik otomatik olarak denenir.
Medya, parçalama ve teslimat
Gelen ekler
Gelen ekler
Slack dosya ekleri, Slack tarafından barındırılan özel URL’lerden indirilir (token ile kimlik doğrulamalı istek akışı) ve getirme başarılı olduğunda ve boyut sınırları izin verdiğinde medya deposuna yazılır. Dosya yer tutucuları Slack
fileId değerini içerir; böylece aracılar özgün dosyayı download-file ile getirebilir.İndirmeler sınırlı boşta kalma ve toplam zaman aşımları kullanır. Slack dosya alma işlemi takılır veya başarısız olursa OpenClaw mesajı işlemeye devam eder ve dosya yer tutucusuna geri döner.Çalışma zamanı gelen boyut üst sınırı, channels.slack.mediaMaxMb ile geçersiz kılınmadığı sürece varsayılan olarak 20MB olur.Giden metin ve dosyalar
Giden metin ve dosyalar
- metin parçaları
channels.slack.textChunkLimitkullanır (varsayılan 4000) channels.slack.chunkMode="newline"paragraf öncelikli bölmeyi etkinleştirir- dosya gönderimleri Slack yükleme API’lerini kullanır ve ileti dizisi yanıtlarını (
thread_ts) içerebilir - giden medya üst sınırı yapılandırıldığında
channels.slack.mediaMaxMbdeğerini izler; aksi halde kanal gönderimleri medya hattındaki MIME türü varsayılanlarını kullanır
Teslimat hedefleri
Teslimat hedefleri
Tercih edilen açık hedefler:
- DM’ler için
user:<id> - kanallar için
channel:<id>
Komutlar ve slash davranışı
Slash komutları Slack’te tek bir yapılandırılmış komut veya birden çok yerel komut olarak görünür. Komut varsayılanlarını değiştirmek içinchannels.slack.slashCommand yapılandırın:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true veya commands.native: true ile etkinleştirilir.
- Yerel komut otomatik modu Slack için kapalıdır, bu nedenle
commands.native: "auto"Slack yerel komutlarını etkinleştirmez.
- en fazla 5 seçenek: düğme blokları
- 6-100 seçenek: statik seçim menüsü
- 100’den fazla seçenek: etkileşim seçenek işleyicileri kullanılabilir olduğunda eşzamansız seçenek filtrelemeli dış seçim
- Slack sınırları aşıldı: kodlanmış seçenek değerleri düğmelere geri döner
agent:<agentId>:slack:slash:<userId> gibi yalıtılmış anahtarlar kullanır ve komut yürütmelerini yine CommandTargetSessionKey kullanarak hedef konuşma oturumuna yönlendirir.
Etkileşimli yanıtlar
Slack, ajan tarafından yazılmış etkileşimli yanıt denetimlerini işleyebilir, ancak bu özellik varsayılan olarak devre dışıdır. Yeni ajan, CLI ve Plugin çıktısı için paylaşılanpresentation düğmelerini veya seçim bloklarını tercih edin. Bunlar aynı Slack etkileşim
yolunu kullanırken diğer kanallarda da geriye uyumlu şekilde basitleşir.
Genel olarak etkinleştirin:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation yüklerini ve
buildSlackPresentationBlocks(...) kullanın.
Notlar:
- Bu, Slack’e özgü eski UI’dır. Diğer kanallar Slack Block Kit direktiflerini kendi düğme sistemlerine çevirmez.
- Etkileşimli geri çağrı değerleri, ajan tarafından yazılmış ham değerler değil, OpenClaw tarafından oluşturulan opak belirteçlerdir.
- Oluşturulan etkileşimli bloklar Slack Block Kit sınırlarını aşacaksa, OpenClaw geçersiz bir blok yükü göndermek yerine özgün metin yanıtına geri döner.
Plugin sahipli modal gönderimleri
Etkileşimli bir işleyici kaydeden Slack Plugin’leri, OpenClaw yükü ajan tarafından görülebilen sistem olayı için sıkıştırmadan önce modalview_submission ve view_closed yaşam döngüsü olaylarını da alabilir.
Bir Slack modali açarken bu yönlendirme desenlerinden birini kullanın:
callback_iddeğeriniopenclaw:<namespace>:<payload>olarak ayarlayın.- Veya mevcut bir
callback_iddeğerini koruyun ve modalprivate_metadataiçinepluginInteractiveData: "<namespace>:<payload>"koyun.
ctx.interaction.kind değerini view_submission veya
view_closed olarak, normalleştirilmiş inputs değerlerini ve Slack’ten gelen tam ham
stateValues nesnesini alır. Yalnızca geri çağrı kimliğiyle yönlendirme, Plugin işleyicisini çağırmak için yeterlidir; modal aynı zamanda ajan tarafından görülebilen bir sistem olayı üretmeliyse mevcut modal private_metadata kullanıcı/oturum yönlendirme alanlarını ekleyin. Ajan kompakt, redakte edilmiş bir Slack interaction: ... sistem olayı alır. İşleyici
systemEvent.summary, systemEvent.reference veya systemEvent.data döndürürse, bu
alanlar kompakt olaya eklenir; böylece ajan, eksiksiz form yükünü görmeden
Plugin sahipli depolamaya başvurabilir.
Slack’te yerel onaylar
Slack, Web UI veya terminale geri dönmek yerine etkileşimli düğmeler ve etkileşimlerle yerel bir onay istemcisi olarak davranabilir.- Exec ve Plugin onayları Slack’e özgü Block Kit istemleri olarak işlenebilir.
channels.slack.execApprovals.*, yerel exec onay istemcisi etkinleştirme ve DM/kanal yönlendirme yapılandırması olarak kalır.- Exec onayı DM’leri
channels.slack.execApprovals.approversveyacommands.ownerAllowFromkullanır. - Plugin onayları, Slack kaynak oturum için yerel onay istemcisi olarak etkinse veya
approvals.pluginkaynak Slack oturumuna ya da bir Slack hedefine yönlendiriyorsa Slack’e özgü düğmeler kullanır. - Plugin onayı DM’leri
channels.slack.allowFrom, adlandırılmış hesapallowFromveya hesap varsayılan rotasından Slack Plugin onaylayıcılarını kullanır. - Onaylayıcı yetkilendirmesi yine zorunlu tutulur: yalnızca exec onaylayıcıları, aynı zamanda Plugin onaylayıcısı değillerse Plugin isteklerini onaylayamaz.
interactivity etkin olduğunda, onay istemleri doğrudan konuşmada Block Kit düğmeleri olarak işlenir.
Bu düğmeler mevcut olduğunda birincil onay UX’i bunlardır; OpenClaw
yalnızca araç sonucu sohbet onaylarının kullanılamadığını veya manuel onayın tek yol olduğunu söylediğinde manuel bir /approve komutu eklemelidir.
Yapılandırma yolu:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(isteğe bağlı; mümkün olduğundacommands.ownerAllowFromdeğerine geri döner)channels.slack.execApprovals.target(dm|channel|both, varsayılan:dm)agentFilter,sessionFilter
enabled ayarlanmamışsa veya "auto" ise ve en az bir
exec onaylayıcı çözümleniyorsa yerel exec onaylarını otomatik olarak etkinleştirir. Slack, Slack Plugin onaylayıcıları çözümlendiğinde ve istek yerel istemci filtreleriyle eşleştiğinde bu yerel istemci
yolu üzerinden yerel Plugin onaylarını da işleyebilir. Slack’i yerel onay istemcisi olarak açıkça devre dışı bırakmak için
enabled: false ayarlayın. Onaylayıcılar çözümlendiğinde yerel onayları zorla açmak için enabled: true ayarlayın. Slack exec onaylarını devre dışı bırakmak,
approvals.plugin üzerinden etkinleştirilen yerel Slack Plugin onayı teslimini devre dışı bırakmaz; Plugin onayı
teslimi bunun yerine Slack Plugin onaylayıcılarını kullanır.
Açık Slack exec onay yapılandırması olmadan varsayılan davranış:
approvals.exec iletimi ayrıdır. Bunu yalnızca exec onayı istemlerinin başka sohbetlere veya açık bant dışı hedeflere de
yönlendirilmesi gerektiğinde kullanın. Paylaşılan approvals.plugin iletimi de
ayrıdır; Slack yerel teslimi, bu geri dönüşü yalnızca Slack Plugin
onayı isteğini yerel olarak işleyebildiğinde bastırır.
Aynı sohbette /approve, komutları zaten destekleyen Slack kanallarında ve DM’lerde de çalışır. Tam onay iletme modeli için Exec onayları bölümüne bakın.
Olaylar ve operasyonel davranış
- Mesaj düzenlemeleri/silmeleri sistem olaylarına eşlenir.
- Konu yayınları (“Kanala da gönder” konu yanıtları) normal kullanıcı mesajları olarak işlenir.
- Tepki ekleme/kaldırma olayları sistem olaylarına eşlenir.
- Üye katılma/ayrılma, kanal oluşturulma/yeniden adlandırılma ve sabitleme ekleme/kaldırma olayları sistem olaylarına eşlenir.
configWritesetkin olduğundachannel_id_changedkanal yapılandırma anahtarlarını taşıyabilir.- Kanal konu/amaç meta verileri güvenilmeyen bağlam olarak değerlendirilir ve yönlendirme bağlamına enjekte edilebilir.
- Konu başlatıcı ve ilk konu geçmişi bağlamı tohumlaması, geçerli olduğunda yapılandırılmış gönderen izin listelerine göre filtrelenir.
- Blok eylemleri, kısayollar ve modal etkileşimleri zengin yük alanlarıyla yapılandırılmış
Slack interaction: ...sistem olayları yayar:- blok eylemleri: seçilen değerler, etiketler, seçici değerleri ve
workflow_*meta verileri - genel kısayollar: geri çağrı ve aktör meta verileri, aktörün doğrudan oturumuna yönlendirilir
- mesaj kısayolları: geri çağrı, aktör, kanal, konu ve seçili mesaj bağlamı
- yönlendirilmiş kanal meta verileri ve form girdileriyle modal
view_submissionveview_closedolayları
- blok eylemleri: seçilen değerler, etiketler, seçici değerleri ve
Yapılandırma referansı
Birincil referans: Yapılandırma referansı - Slack.Yüksek sinyalli Slack alanları
Yüksek sinyalli Slack alanları
- mod/kimlik doğrulama:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - DM erişimi:
dm.enabled,dmPolicy,allowFrom(eski:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - uyumluluk anahtarı:
dangerouslyAllowNameMatching(son çare; gerekmedikçe kapalı tutun) - kanal erişimi:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - konular/geçmiş:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - teslim:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - önizlemeler:
unfurlLinks(varsayılan:false),chat.postMessagebağlantı/medya önizlemesi denetimi içinunfurlMedia; bağlantı önizlemelerine geri dönmek içinunfurlLinks: trueayarlayın - operasyonlar/özellikler:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Sorun giderme
Kanallarda yanıt yok
Kanallarda yanıt yok
Sırayla kontrol edin:Yararlı komutlar:
groupPolicy- kanal izin listesi (
channels.slack.channels) — anahtarlar kanal kimlikleri olmalıdır (C12345678), adlar değil (#channel-name). Ad tabanlı anahtarlar, kanal yönlendirmesi varsayılan olarak kimlik öncelikli olduğundangroupPolicy: "allowlist"altında sessizce başarısız olur. Bir kimlik bulmak için: Slack’te kanala sağ tıklayın → Bağlantıyı kopyala — URL’nin sonundakiC...değeri kanal kimliğidir. requireMention- kanal başına
usersizin listesi messages.groupChat.visibleReplies: normal grup/kanal istekleri varsayılan olarak"automatic"kullanır."message_tool"seçtiyseniz ve günlüklermessage(action=send)çağrısı olmadan asistan metni gösteriyorsa, model görünür message-tool yolunu kaçırmıştır. Son metin bu modda özel kalır; bastırılmış yük meta verileri için gateway ayrıntılı günlüğünü inceleyin veya her normal asistan son yanıtının eski yol üzerinden gönderilmesini istiyorsanız bunu"automatic"olarak ayarlayın.messages.groupChat.unmentionedInbound:"room_event"ise, bahsedilmeyen izinli kanal sohbeti ortam bağlamıdır ve ajanmessagearacını çağırmadıkça sessiz kalır. Ortam oda olayları bölümüne bakın.
DM mesajları yok sayılıyor
DM mesajları yok sayılıyor
Kontrol edin:
channels.slack.dm.enabledchannels.slack.dmPolicy(veya eskichannels.slack.dm.policy)- eşleştirme onayları / izin listesi girdileri (
dmPolicy: "open"yine dechannels.slack.allowFrom: ["*"]gerektirir) - grup DM’leri MPIM işlemeyi kullanır;
channels.slack.dm.groupEnabledetkinleştirin ve yapılandırılmışsa MPIM’ichannels.slack.dm.groupChannelsiçine ekleyin - Slack Assistant DM olayları:
drop message_changedifadesinden bahseden ayrıntılı günlükler genellikle Slack’in mesaj meta verilerinde kurtarılabilir bir insan gönderen olmadan düzenlenmiş bir Assistant konu olayı gönderdiği anlamına gelir
Socket modu bağlanmıyor
Socket modu bağlanmıyor
Slack uygulama ayarlarında bot + uygulama belirteçlerini ve Socket Mode etkinleştirmesini doğrulayın.
App-Level Token
connections:write gerektirir ve Bot User OAuth Token
bot belirteci, uygulama belirteciyle aynı Slack uygulamasına/çalışma alanına ait olmalıdır.openclaw channels status --probe --json çıktısı botTokenStatus veya
appTokenStatus: "configured_unavailable" gösteriyorsa Slack hesabı
yapılandırılmıştır ancak mevcut çalışma zamanı SecretRef destekli
değeri çözememiştir.slack socket mode failed to start; retry ... gibi günlükler kurtarılabilir
başlatma hatalarıdır. Eksik kapsamlar, iptal edilmiş token’lar ve geçersiz kimlik doğrulama ise
bunun yerine hızlı başarısız olur. Bir slack token mismatch ... günlüğü, bot token’ının ve uygulama token’ının
farklı Slack uygulamalarına ait göründüğü anlamına gelir; Slack uygulaması kimlik bilgilerini düzeltin.HTTP mode not receiving events
HTTP mode not receiving events
Doğrulayın:
- imzalama sırrı
- webhook yolu
- Slack Request URL’leri (Events + Interactivity + Slash Commands)
- HTTP hesabı başına benzersiz
webhookPath - herkese açık URL TLS’i sonlandırır ve istekleri Gateway yoluna iletir
- Slack uygulamasının
request_urlyolu,channels.slack.webhookPathile tam olarak eşleşir (varsayılan/slack/events)
signingSecretStatus: "configured_unavailable"
görünürse, HTTP hesabı yapılandırılmıştır ancak mevcut çalışma zamanı
SecretRef destekli imzalama sırrını çözememiştir.Yinelenen bir slack: webhook path ... already registered günlüğü, iki HTTP
hesabının aynı webhookPath değerini kullandığı anlamına gelir; her hesaba ayrı bir yol verin.Native/slash commands not firing
Native/slash commands not firing
Şunu amaçlayıp amaçlamadığınızı doğrulayın:
- Slack’te kayıtlı eşleşen slash commands ile yerel komut modu (
channels.slack.commands.native: true) - veya tek slash command modu (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" Slack yerel komutlarını etkinleştirmez; true kullanın ve Slack uygulamasında eşleşen komutları oluşturun. HTTP modunda, her Slack slash command Gateway URL’sini içermelidir. Socket Mode’da komut yükleri websocket üzerinden gelir ve Slack slash_commands[].url değerini yok sayar.Ayrıca commands.useAccessGroups, DM yetkilendirmesini, kanal izin listelerini
ve kanal başına users izin listelerini kontrol edin. Slack, engellenen
slash-command gönderenleri için geçici hatalar döndürür, örneğin:This channel is not allowed.You are not authorized to use this command here.
Ek görüş referansı
Slack dosya indirmeleri başarılı olduğunda ve boyut sınırları izin verdiğinde Slack, indirilen medyayı agent turuna ekleyebilir. Görüntü dosyaları medya anlama yolundan geçirilebilir veya doğrudan görüş yetenekli bir yanıt modeline iletilebilir; diğer dosyalar görüntü girdisi olarak ele alınmak yerine indirilebilir dosya bağlamı olarak tutulur.Desteklenen medya türleri
| Medya türü | Kaynak | Mevcut davranış | Notlar |
|---|---|---|---|
| JPEG / PNG / GIF / WebP görüntüleri | Slack dosya URL’si | İndirilir ve görüş yetenekli işleme için tura eklenir | Dosya başına sınır: channels.slack.mediaMaxMb (varsayılan 20 MB) |
| PDF dosyaları | Slack dosya URL’si | İndirilir ve download-file veya pdf gibi araçlar için dosya bağlamı olarak sunulur | Slack gelen akışı, PDF’leri otomatik olarak görüntü-görüş girdisine dönüştürmez |
| Diğer dosyalar | Slack dosya URL’si | Mümkün olduğunda indirilir ve dosya bağlamı olarak sunulur | İkili dosyalar görüntü girdisi olarak ele alınmaz |
| Thread yanıtları | Thread başlatıcı dosyaları | Yanıtın doğrudan medyası yoksa kök ileti dosyaları bağlam olarak hydrate edilebilir | Yalnızca dosya içeren başlatıcılar bir ek yer tutucusu kullanır |
| Çoklu görüntü iletileri | Birden fazla Slack dosyası | Her dosya bağımsız olarak değerlendirilir | Slack işleme, ileti başına sekiz dosyayla sınırlıdır |
Gelen akış hattı
Dosya ekleri olan bir Slack iletisi geldiğinde:- OpenClaw, bot token’ını kullanarak dosyayı Slack’in özel URL’sinden indirir.
- Başarılı olursa dosya medya deposuna yazılır.
- İndirilen medya yolları ve içerik türleri gelen bağlama eklenir.
- Görüntü yetenekli model/araç yolları bu bağlamdaki görüntü eklerini kullanabilir.
- Görüntü olmayan dosyalar, bunları işleyebilen araçlar için dosya meta verisi veya medya referansı olarak kullanılabilir kalır.
Thread kök eki kalıtımı
Bir ileti bir thread içinde geldiğinde (thread_ts üst öğesi varsa):
- Yanıtın kendisinde doğrudan medya yoksa ve dahil edilen kök iletide dosyalar varsa, Slack kök dosyaları thread başlatıcı bağlamı olarak hydrate edebilir.
- Doğrudan yanıt ekleri, kök ileti eklerine göre önceliklidir.
- Yalnızca dosyaları olan ve metni olmayan bir kök ileti, geri dönüşün yine de dosyalarını içerebilmesi için bir ek yer tutucusuyla temsil edilir.
Çoklu ek işleme
Tek bir Slack iletisi birden fazla dosya eki içerdiğinde:- Her ek, medya akış hattı üzerinden bağımsız olarak işlenir.
- İndirilen medya referansları ileti bağlamında birleştirilir.
- İşleme sırası, olay yükündeki Slack dosya sırasını izler.
- Bir ekin indirilmesindeki hata diğerlerini engellemez.
Boyut, indirme ve model sınırları
- Boyut sınırı: Dosya başına varsayılan 20 MB.
channels.slack.mediaMaxMbile yapılandırılabilir. - İndirme hataları: Slack’in sunamadığı dosyalar, süresi dolmuş URL’ler, erişilemeyen dosyalar, aşırı büyük dosyalar ve Slack kimlik doğrulama/giriş HTML yanıtları, desteklenmeyen biçimler olarak raporlanmak yerine atlanır.
- Görüş modeli: Görüntü analizi, görüşü desteklediğinde etkin yanıt modelini veya
agents.defaults.imageModelkonumunda yapılandırılan görüntü modelini kullanır.
Bilinen sınırlar
| Senaryo | Mevcut davranış | Geçici çözüm |
|---|---|---|
| Süresi dolmuş Slack dosya URL’si | Dosya atlanır; hata gösterilmez | Dosyayı Slack’e yeniden yükleyin |
| Görüş modeli yapılandırılmamış | Görüntü ekleri medya referansları olarak saklanır, ancak görüntü olarak analiz edilmez | agents.defaults.imageModel yapılandırın veya görüş yetenekli bir yanıt modeli kullanın |
| Çok büyük görüntüler (varsayılan olarak > 20 MB) | Boyut sınırı nedeniyle atlanır | Slack izin veriyorsa channels.slack.mediaMaxMb değerini artırın |
| İletilmiş/paylaşılmış ekler | Metin ve Slack barındırmalı görüntü/dosya medyası en iyi çaba ile işlenir | Doğrudan OpenClaw thread’inde yeniden paylaşın |
| PDF ekleri | Dosya/medya bağlamı olarak saklanır, otomatik olarak görüntü görüşü üzerinden yönlendirilmez | Dosya meta verisi için download-file veya PDF analizi için pdf aracını kullanın |
İlgili belgeler
- Medya anlama akış hattı
- PDF aracı
- Epik: #51349 — Slack ek görüşünü etkinleştirme
- Regresyon testleri: #51353
- Canlı doğrulama: #51354
İlgili
Pairing
Bir Slack kullanıcısını gateway ile eşleştirin.
Groups
Kanal ve grup DM davranışı.
Channel routing
Gelen iletileri agent’lara yönlendirin.
Security
Tehdit modeli ve sağlamlaştırma.
Configuration
Yapılandırma düzeni ve öncelik.
Slash commands
Komut kataloğu ve davranışı.