Slack
Durum: Slack uygulama entegrasyonları üzerinden DM’ler ve kanallar için üretime hazır. Varsayılan mod Socket Mode’dur; HTTP Events API modu da desteklenir.Eşleştirme
Slack DM’leri varsayılan olarak eşleştirme modunu kullanır.
Slash komutları
Yerel komut davranışı ve komut kataloğu.
Kanal sorun giderme
Kanallar arası tanılama ve onarım rehberleri.
Hızlı kurulum
- Socket Mode (varsayılan)
- HTTP Events API modu
Slack uygulaması ve token'ları oluşturun
Slack uygulama ayarlarında:
- Socket Mode’u etkinleştirin
connections:writeile App Token (xapp-...) oluşturun- uygulamayı yükleyin ve Bot Token (
xoxb-...) değerini kopyalayın
Uygulama olaylarına abone olun
Şunlar için bot olaylarına abone olun:
app_mentionmessage.channels,message.groups,message.im,message.mpimreaction_added,reaction_removedmember_joined_channel,member_left_channelchannel_renamepin_added,pin_removed
Manifest ve kapsam denetim listesi
Slack uygulaması manifest örneği
Slack uygulaması manifest örneği
İsteğe bağlı kullanıcı token kapsamları (okuma işlemleri)
İsteğe bağlı kullanıcı token 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)
Token modeli
- Socket Mode için
botToken+appTokengereklidir. - HTTP modu
botToken+signingSecretgerektirir. botToken,appToken,signingSecretveuserToken, düz metin dizeleri veya SecretRef nesnelerini kabul eder.- Yapılandırma token’ları, ortam değişkeni yedeğinin önüne geçer.
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ırmada kullanılabilir (ortam değişkeni yedeği yoktur) ve varsayılan olarak salt okunur davranışı kullanır (userTokenReadOnly: true).- İsteğe bağlı: giden mesajların etkin ajan kimliğini kullanmasını istiyorsanız
chat:write.customizeekleyin (özelusernameve simge).icon_emoji,:emoji_name:söz dizimini kullanır.
- 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ılabilen 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çine"*"dahil edilmesini 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ı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.
openclaw pairing approve slack <code> kullanılır.Konular, oturumlar ve yanıt etiketleri
- DM’ler
directolarak, kanallarchannelolarak, MPIM’lergroupolarak yönlendirilir. - Varsayılan
session.dmScope=mainile Slack DM’leri ajan ana oturumunda birleştirilir. - Kanal oturumları:
agent:<agentId>:slack:channel:<channelId>. - Konu yanıtları, uygun olduğunda konu oturumu sonekleri (
:thread:<threadTs>) oluşturabilir. channels.slack.thread.historyScopevarsayılan olarakthreaddeğerindedir;thread.inheritParentvarsayılanıfalsedeğeridir.channels.slack.thread.initialHistoryLimit, yeni bir konu oturumu başladığında kaç mevcut konu mesajının getirileceğini denetler (varsayılan20; devre dışı bırakmak için0ayarlayın).
channels.slack.replyToMode:off|first|all(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 konularını devre dışı bırakır. Bu, açık etiketlerin "off" modunda hâlâ dikkate alındığı Telegram’dan farklıdır. Bu fark, platformların konu modellerini yansıtır: Slack konuları 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ı için veya genel olarak reaksiyonu devre dışı bırakmak üzere
""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ı ile değiştirir.block: parçalanmış önizleme güncellemelerini ekler.progress: oluşturma sırasında ilerleme durum metni gösterir, ardından son metni gönderir.
channels.slack.nativeStreaming, streaming değeri partial olduğunda Slack yerel metin akışını denetler (varsayılan: true).
- Yerel metin akışının görünmesi için bir yanıt konusu mevcut olmalıdır. Konu seçimi yine
replyToModekurallarını izler. Bu olmadan normal taslak önizleme kullanılır. - 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.streamingdeğerine taşınır.- boolean
channels.slack.streamingotomatik olarakchannels.slack.nativeStreamingdeğerine taşınır.
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 “yazıyor…” durum göstergesini kullanan konu yanıtları 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 gayret esasına göre uygulanır ve yanıt veya hata yolu tamamlandıktan sonra temizlenmeye otomatik olarak çalışılır.
Medya, parçalama ve teslimat
Gelen ekler
Gelen ekler
Slack dosya ekleri, Slack tarafından barındırılan özel URL’lerden (token kimlik 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ı gelen boyut sınırı,
channels.slack.mediaMaxMb ile geçersiz kılınmadıkça 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 konu yanıtlarını (
thread_ts) içerebilir - giden medya sınırı, yapılandırıldığında
channels.slack.mediaMaxMbdeğerini izler; aksi halde kanal gönderimleri medya işlem 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ışı
- Slack için yerel komut otomatik modu kapalıdır (
commands.native: "auto", Slack yerel komutlarını etkinleştirmez). channels.slack.commands.native: true(veya genelcommands.native: true) ile yerel Slack komut işleyicilerini etkinleştirin.- Yerel komutlar etkin olduğunda, Slack’te eşleşen slash komutlarını (
/<command>adları) kaydedin; tek istisna:- durum komutu için
/agentstatuskaydedin (Slack/statusdeğerini ayırır)
- durum komutu için
- Yerel komutlar etkin değilse,
channels.slack.slashCommandaracılığıyla tek bir yapılandırılmış slash komutu çalıştırabilirsiniz. - Yerel arg menüleri artık oluşturma stratejilerini uyarlıyor:
- 5 seçeneğe kadar: 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
- kodlanmış seçenek değerleri Slack sınırlarını aşarsa akış düğmelere geri döner
- Uzun seçenek yükleri için Slash command argüman menüleri, seçilen bir değeri göndermeden önce bir onay iletişim kutusu kullanır.
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
agent:<agentId>:slack:slash:<userId>
CommandTargetSessionKey) karşı yönlendirir.
Etkileşimli yanıtlar
Slack, ajan tarafından yazılan 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 kullanıcı arayüzüdür. Diğer kanallar, Slack Block Kit yönergelerini kendi düğme sistemlerine çevirmez.
- Etkileşimli geri çağırım değerleri, ham ajan tarafından yazılmış değerler değil, OpenClaw tarafından oluşturulmuş opak token’lardır.
- Oluşturulan etkileşimli bloklar Slack Block Kit sınırlarını aşarsa OpenClaw geçersiz bir blok 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 düşüyorsa ve onay kimliği türü
plugin:ise plugin onayları yine aynı Slack yerel düğme yüzeyi üzerinden çözülebilir. - Onaylayıcı yetkilendirmesi yine uygulanır: yalnızca onaylayıcı olarak tanımlanan kullanıcılar Slack üzerinden istekleri onaylayabilir veya reddedebilir.
interactivity etkinleştirildiğinde, 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 onaysa manuel bir /approve komutu 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 ayarsız veya "auto" olduğunda ve en az bir
onaylayıcı çözüldüğünde yerel exec onaylarını otomatik olarak etkinleştirir. Slack’i yerel onay istemcisi olarak açıkça devre dışı bırakmak için enabled: false ayarlayın.
Onaylayıcılar çözüldüğünde 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 istemleri ayrıca
başka sohbetlere veya açık bant dışı hedeflere yönlendirilmek zorundaysa kullanın. Paylaşılan approvals.plugin yönlendirmesi de
ayrıdır; Slack yerel düğmeleri, bu istekler zaten
Slack’e düşüyorsa plugin onaylarını yine çözebilir.
Aynı sohbet içi /approve, komutları zaten destekleyen Slack kanallarında ve DM’lerde de çalışır. Tam onay yönlendirme modeli için bkz. Exec approvals.
Olaylar ve operasyonel davranış
- Mesaj düzenlemeleri/silmeleri/konu 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 iğne 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 eklenebilir.
- Konu başlatıcı ve ilk konu geçmişi bağlam tohumlaması, uygulanabildiğinde yapılandırılmış gönderici izin listeleriyle filtrelenir.
- Blok eylemleri ve modal etkileşimler, 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 girdileri ile modal
view_submissionveview_closedolayları
- blok eylemleri: seçilen değerler, etiketler, seçici değerleri ve
Yapılandırma başvuru 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 için; gerekmedikçe kapalı tutun) - kanal erişimi:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - konu/geçmiş:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - teslimat:
textChunkLimit,chunkMode,mediaMaxMb,streaming,nativeStreaming - işlemler/ö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
Şunları kontrol edin:
channels.slack.dm.enabledchannels.slack.dmPolicy(veya eskichannels.slack.dm.policy)- eşleştirme onayları / izin listesi girdileri
Socket mode bağlanmıyor
Socket mode bağlanmıyor
Slack uygulama ayarlarında bot + app token’larını ve Socket Mode etkinleştirmesini 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 mode olay almıyor
HTTP mode olay almıyor
Doğrulayın:
- signing secret
- webhook yolu
- Slack Request URL’leri (Events + Interactivity + Slash Commands)
- HTTP hesabı başına benzersiz
webhookPath
signingSecretStatus: "configured_unavailable"
görünüyorsa 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
Şu niyetlerden hangisini istediğinizi doğrulayın:
- Slack’te eşleşen slash komutları kayıtlı yerel komut modu (
channels.slack.commands.native: true) - veya tek slash komut modu (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups ve kanal/kullanıcı izin listelerini kontrol edin.