Slack
Durum: Slack uygulaması entegrasyonları üzerinden DM’ler ve kanallar için üretime hazır. Varsayılan mod Socket Mode’dur; HTTP İstek URL’leri de desteklenir.Eşleme
Slack DM’leri varsayılan olarak eşleme modunu kullanır.
Slash komutları
Yerel komut davranışı ve komut kataloğu.
Kanal sorun giderme
Kanallar arası tanılama ve onarım çalışma kitapları.
Hızlı kurulum
- Socket Mode (varsayılan)
- HTTP İstek URL'leri
Yeni bir Slack uygulaması oluşturun
Slack uygulaması ayarlarında Create New App düğmesine basın:
- from a manifest seçeneğini seçin ve uygulamanız için bir workspace seçin
- aşağıdaki örnek manifest içeriğini yapıştırın ve oluşturmaya devam edin
connections:writeile bir App-Level Token (xapp-...) oluşturun- uygulamayı yükleyin ve gösterilen Bot Token (
xoxb-...) değerini kopyalayın
Manifest ve kapsam kontrol listesi
- Socket Mode (varsayılan)
- HTTP İstek URL'leri
Ek manifest ayarları
Yukarıdaki varsayılanları genişleten farklı özellikleri görünür hale getirin.İsteğe bağlı yerel slash komutları
İsteğe bağlı yerel slash komutları
Nüanslı biçimde, tek bir yapılandırılmış komut yerine birden fazla yerel slash komutu kullanılabilir:
/statuskomutu ayrılmış olduğu için/statusyerine/agentstatuskullanın.- Aynı anda en fazla 25 slash komutu kullanılabilir.
features.slash_commands bölümünüzü kullanılabilir komutlar içinden bir alt kümeyle değiştirin:- Socket Mode (varsayılan)
- HTTP İstek URL'leri
İ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 uygulaması kimliği yerine etkin ajan kimliğini (özel kullanıcı adı ve simge) kullanmasını istiyorsanız
chat:write.customize bot kapsamını ekleyin.Bir emoji simgesi kullanırsanız Slack :emoji_name: sözdizimini 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ğımlıysanız)
Belirteç modeli
- Socket Mode için
botToken+appTokengereklidir. - HTTP modu için
botToken+signingSecretgereklidir. botToken,appToken,signingSecretveuserToken, düz metin dizeleri veya SecretRef nesnelerini kabul eder.- Yapılandırma belirteçleri, ortam değişkeni yedeğini geçersiz kılar.
SLACK_BOT_TOKEN/SLACK_APP_TOKENortam değişkeni yedeği yalnızca varsayılan hesap için geçerlidir.userToken(xoxp-...) yalnızca yapılandırmadadır (ortam değişkeni yedeği yoktur) ve varsayılan olarak salt okunur davranışa sahiptir (userTokenReadOnly: true).
- Slack hesap incelemesi, kimlik bilgisi başına
*Sourceve*Statusalanlarını izler (botToken,appToken,signingSecret,userToken). - Durum
available,configured_unavailableveyamissingolabilir. configured_unavailable, hesabın SecretRef veya başka bir satır içi olmayan gizli kaynak üzerinden yapılandırıldığı, ancak mevcut 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 geçitler
Slack eylemlerichannels.slack.actions.* ile denetlenir.
Mevcut Slack araçlarında kullanılabilir eylem grupları:
| Grup | Varsayılan |
|---|---|
| messages | etkin |
| reactions | etkin |
| pins | etkin |
| memberInfo | etkin |
| emojiList | etkin |
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info ve emoji-list bulunur.
Erişim denetimi ve yönlendirme
- DM ilkesi
- Kanal ilkesi
- Bahsetmeler ve kanal kullanıcıları
channels.slack.dmPolicy, DM erişimini denetler (eski: channels.slack.dm.policy):pairing(varsayılan)allowlistopen(channels.slack.allowFromiçinde"*"bulunmasını gerektirir; eski:channels.slack.dm.allowFrom)disabled
dm.enabled(varsayılan true)channels.slack.allowFrom(tercih edilen)dm.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ı için geçerlidir.- 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.
openclaw pairing approve slack <code> kullanılır.İş parçacığı, oturumlar ve yanıt etiketleri
- DM’ler
direct, kanallarchannel, MPIM’lergroupolarak yönlendirilir. - Varsayılan
session.dmScope=mainile Slack DM’leri ajan ana oturumuna daraltılır. - Kanal oturumları:
agent:<agentId>:slack:channel:<channelId>. - İş parçacığı yanıtları, uygun olduğunda iş parçacığı oturumu son ekleri (
:thread:<threadTs>) oluşturabilir. channels.slack.thread.historyScopevarsayılanıthread,thread.inheritParentvarsayılanıfalsedeğeridir.channels.slack.thread.initialHistoryLimit, yeni bir iş parçacığı oturumu başladığında kaç mevcut iş parçacığı mesajının getirileceğini denetler (varsayılan20; devre dışı bırakmak için0olarak ayarlayın).channels.slack.thread.requireExplicitMention(varsayılanfalse):trueolduğunda, bot iş parçacığında zaten yer almış olsa bile iş parçacıkları içindeki örtük mention’ları bastırır, böylece bot yalnızca iş parçacıkları içindeki açık@botmention’larına yanıt verir. Bu olmadan, botun katıldığı bir iş parçacığındaki yanıtlarrequireMentiongeçidini atlar.
channels.slack.replyToMode:off|first|all|batched(varsayılanoff)channels.slack.replyToModeByChatType: herdirect|group|channeliçin- doğrudan sohbetler için eski yedek:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
replyToMode="off", açık [[reply_to_*]] etiketleri dahil Slack’teki tüm yanıt iş parçacıklarını devre dışı bırakır. Bu, açık etiketlerin "off" modunda yine de dikkate alındığı Telegram’dan farklıdır. Fark, platformların iş parçacığı modellerini yansıtır: Slack iş parçacıkları mesajları kanaldan gizlerken, Telegram yanıtları ana sohbet akışında görünür kalır.
Onay reaksiyonları
ackReaction, OpenClaw gelen bir mesajı işlerken bir onay emojisi gönderir.
Çözümleme sırası:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- ajan kimliği emoji yedeği (
agents.list[].identity.emoji, aksi halde ”👀”)
- Slack kısa kodlar bekler (örneğin
"eyes"). - Slack hesabı veya genel olarak reaksiyonu devre dışı bırakmak için
""kullanın.
Metin akışı
channels.slack.streaming, canlı önizleme davranışını denetler:
off: canlı önizleme akışını devre dışı bırakır.partial(varsayılan): önizleme metnini en son kısmi çıktıyla değiştirir.block: parçalı önizleme güncellemelerini ekler.progress: oluşturma sırasında ilerleme durumu metnini gösterir, ardından son metni gönderir.
channels.slack.streaming.nativeTransport, channels.slack.streaming.mode değeri partial olduğunda Slack yerel metin akışını denetler (varsayılan: true).
- Yerel metin akışının ve Slack assistant iş parçacığı durumunun görünmesi için bir yanıt iş parçacığının mevcut olması gerekir. İş parçacığı seçimi yine de
replyToModedeğerini izler. - Kanal ve grup sohbeti kökleri, yerel akış kullanılamadığında normal taslak önizlemeyi kullanmaya devam edebilir.
- Üst düzey Slack DM’leri varsayılan olarak iş parçacığı dışındadır, bu nedenle iş parçacığı tarzı önizlemeyi göstermezler; burada görünür ilerleme istiyorsanız iş parçacığı yanıtlarını veya
typingReactionkullanın. - Medya ve metin dışı yükler normal teslimata geri döner.
- Akış yanıtın 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) otomatik olarakchannels.slack.streaming.modedeğerine geçirilir.- boolean
channels.slack.streaming, otomatik olarakchannels.slack.streaming.modevechannels.slack.streaming.nativeTransportdeğerlerine geçirilir. - eski
channels.slack.nativeStreaming, otomatik olarakchannels.slack.streaming.nativeTransportdeğerine geçirilir.
Yazıyor reaksiyonu yedeği
typingReaction, OpenClaw bir yanıtı işlerken gelen Slack mesajına geçici bir reaksiyon ekler, ardından çalışma tamamlandığında bunu kaldırır. Bu en çok, varsayılan "is typing..." durum göstergesini kullanan iş parçacığı yanıtlarının dışında yararlıdır.
Çözümleme sırası:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack kısa kodlar bekler (örneğin
"hourglass_flowing_sand"). - Reaksiyon en iyi çabayla uygulanır ve yanıt veya hata yolu tamamlandıktan sonra temizleme işlemi 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 (belirteç doğrulamalı istek akışı) indirilir ve getirme başarılı olduğunda ve boyut sınırları izin verdiğinde medya deposuna yazılır.Çalışma zamanındaki gelen boyut üst sınırı,
channels.slack.mediaMaxMb ile geçersiz kılınmadıkça varsayılan olarak 20MB değeridir.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 iş parçacığı yanıtlarını içerebilir (
thread_ts) - 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 fazla 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 genel yapılandırmalarda 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 mevcut olduğunda eşzamansız seçenek filtrelemeli harici seçim
- Slack sınırları aşıldığında: 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 de 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. Bunu genel olarak etkinleştirin:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- Bu Slack’e özgü bir UI’dır. Diğer kanallar Slack Block Kit yönergelerini 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şarsa, OpenClaw geçersiz bir blocks yükü göndermek yerine özgün metin yanıtına geri döner.
Slack’te exec onayları
Slack, Web UI veya terminale geri dönmek yerine, etkileşimli düğmeler ve etkileşimlerle yerel bir onay istemcisi olarak davranabilir.- Exec onayları, yerel DM/kanal yönlendirmesi için
channels.slack.execApprovals.*kullanır. - İstek zaten Slack’e ulaştığında ve onay kimliği türü
plugin:olduğunda, eklenti onayları aynı Slack yerel düğme yüzeyi üzerinden çözülebilir. - Onaylayan yetkilendirmesi yine de uygulanır: yalnızca onaylayan olarak tanımlanan kullanıcılar istekleri Slack üzerinden onaylayabilir veya reddedebilir.
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 içi onayların kullanılamadığını söylediğinde veya
tek yol el ile onay olduğunda el ile /approve komutunu içermelidir.
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ış veya "auto" olduğunda ve en az bir
onaylayan çözümlendiğinde yerel exec onaylarını otomatik olarak etkinleştirir. Slack’i yerel bir onay istemcisi olarak açıkça devre dışı bırakmak için enabled: false ayarlayın.
Onaylayanlar çözümlendiğinde yerel onayları zorla açmak için enabled: true ayarlayın.
Açık Slack exec onay yapılandırması olmadan varsayılan davranış:
approvals.exec yönlendirmesi ayrıdır. Bunu yalnızca exec onay istemlerinin ayrıca
başka sohbetlere veya açık bant dışı hedeflere yönlendirilmesi gerektiğinde kullanın. Paylaşılan approvals.plugin yönlendirmesi de
ayrıdır; bu istekler zaten
Slack’e ulaştığında Slack yerel düğmeleri yine de eklenti onaylarını çözebilir.
Aynı sohbet içi /approve, komutları zaten destekleyen Slack kanallarında ve DM’lerinde de çalışır. Tam onay yönlendirme modeli için Exec approvals bölümüne bakın.
Olaylar ve operasyonel davranış
- Mesaj düzenlemeleri/silmeleri/iş parçacığı yayınları sistem olaylarına eşlenir.
- Reaksiyon ekleme/kaldırma olayları sistem olaylarına eşlenir.
- Üye katılma/ayrılma, kanal oluşturma/yeniden adlandırma ve sabitleme ekleme/kaldırma olayları sistem olaylarına eşlenir.
channel_id_changed,configWritesetkin olduğunda kanal 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.
- İş parçacığı başlatıcısı ve ilk iş parçacığı geçmişi bağlam tohumlaması, uygulanabildiğinde yapılandırılmış gönderen izin listelerine göre filtrelenir.
- Blok eylemleri ve modal etkileşimleri, zengin yük alanlarıyla yapılandırılmış
Slack interaction: ...sistem olayları üretir:- blok eylemleri: seçilen değerler, etiketler, seçici değerleri ve
workflow_*meta verileri - 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 başvurusu işaretçileri
Birincil başvuru:-
Yapılandırma başvurusu - Slack
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(acil durum anahtarı; gerekmedikçe kapalı tutun) - kanal erişimi:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - iş parçacığı/geçmiş:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - teslimat:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport - operasyonlar/özellikler:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
- mod/kimlik doğrulama:
Sorun giderme
Kanallarda yanıt yok
Kanallarda yanıt yok
Sırayla kontrol edin:
groupPolicy- kanal izin listesi (
channels.slack.channels) requireMention- kanal başına
usersizin listesi
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şleme onayları / izin listesi girdileri
Socket mode bağlanmıyor
Socket mode bağlanmıyor
Slack uygulaması ayarlarında bot + app belirteçlerini ve Socket Mode etkinliğini doğrulayın.
openclaw channels status --probe --json, 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.HTTP modu olay almıyor
HTTP modu olay almıyor
Şunları doğrulayın:
- signing secret
- webhook yolu
- Slack İstek URL’leri (Events + Interactivity + Slash Commands)
- HTTP hesabı başına benzersiz
webhookPath
signingSecretStatus: "configured_unavailable" görünürse,
HTTP hesabı yapılandırılmıştır ancak mevcut çalışma zamanı
SecretRef destekli signing secret değerini çözememiştir.Yerel/slash komutlar tetiklenmiyor
Yerel/slash komutlar tetiklenmiyor
Şunlardan hangisini amaçladığınızı doğrulayın:
- Slack’te eşleşen slash komutları kayıtlıyken yerel komut modu (
channels.slack.commands.native: true) - veya tek slash komutu modu (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups ve kanal/kullanıcı izin listelerini de kontrol edin.