Pemasangan
DM Slack secara default menggunakan mode pemasangan.
Perintah slash
Perilaku perintah native dan katalog perintah.
Pemecahan masalah saluran
Diagnostik lintas saluran dan panduan perbaikan.
Memilih transportasi
Socket Mode dan HTTP Request URLs memiliki kesetaraan fitur untuk perpesanan, perintah slash, App Home, dan interaktivitas. Pilih berdasarkan bentuk deployment, bukan fitur.Pilih Socket Mode untuk host dengan satu Gateway, laptop pengembangan, dan jaringan lokal yang dapat menjangkau
*.slack.com melalui koneksi keluar tetapi tidak dapat menerima HTTPS masuk.Pilih HTTP Request URLs saat menjalankan beberapa replika Gateway di belakang penyeimbang beban, ketika WSS keluar diblokir tetapi HTTPS masuk diizinkan, atau ketika webhook Slack sudah diterminasi pada proxy balik.Mode relay
Mode relay memisahkan ingress Slack dari Gateway OpenClaw. Router tepercaya menangani satu-satunya koneksi Slack Socket Mode, memilih Gateway tujuan, dan meneruskan peristiwa bertipe melalui websocket terautentikasi. Gateway tetap menggunakan token bot-nya sendiri untuk panggilan Slack Web API keluar.wss:// kecuali jika menargetkan localhost. Perlakukan token bearer dan tabel rute router sebagai bagian dari batas otorisasi Slack: peristiwa yang dirutekan memasuki handler pesan Slack normal sebagai aktivasi yang diotorisasi. slack_identity yang disediakan router dalam frame websocket hello dapat menetapkan nama pengguna dan ikon keluar default; identitas eksplisit yang diberikan oleh pemanggil tetap diutamakan. Koneksi relay tersambung kembali dengan pengaturan waktu backoff terbatas yang sama seperti Socket Mode dan menghapus identitas yang disediakan router setiap kali koneksi terputus.
Instalasi seluruh organisasi Enterprise Grid
Satu akun Slack dapat menerima pesan dari setiap ruang kerja yang tercakup dalam instalasi seluruh organisasi Enterprise Grid. Pilih Socket Mode langsung atau HTTP Request URLs; mode relay tidak didukung untuk akun enterprise. Kedua manifes dengan hak akses minimum di bawah ini hanya mengaktifkan jalur peristiwa V1message dan app_mention,
balasan langsung, dan reaksi status yang dimiliki listener.
Socket Mode
connections:write untuk Socket Mode,
lalu salin token bot dari instalasi organisasi. Konfigurasikan akun yang
menggunakan token bot yang diinstal organisasi:
HTTP Request URLs
Gunakan mode HTTP ketika Gateway memiliki endpoint HTTPS publik dan tidak membuka koneksi Socket Mode. Ganti URL contoh dengan URL publik GatewaywebhookPath (default /slack/events):
enterpriseOrgInstall dengan auth.test Slack.
Token yang diinstal organisasi tanpa flag tersebut, atau token ruang kerja dengan flag tersebut,
menyebabkan proses startup gagal. Slack tetap menjadi sumber kebenaran untuk ruang kerja mana yang telah
memberikan izin instalasi; OpenClaw kemudian menerapkan kebijakan saluran, pengguna,
DM, dan sebutan yang dikonfigurasi pada setiap peristiwa yang dikirimkan. Enterprise V1 menolak semua
peristiwa message dan app_mention yang dibuat bot sebelum dispatch, terlepas dari
allowBots, karena instalasi organisasi tidak menyediakan identitas bot yang stabil dan
memenuhi syarat ruang kerja untuk mencegah loop.
Dukungan enterprise sengaja dibatasi pada Socket Mode langsung atau peristiwa HTTP
message dan app_mention beserta balasan langsungnya. Mode relay,
perintah slash, interaksi, App Home, listener peristiwa reaksi, pin, alat tindakan Slack,
persetujuan native Slack, binding, pengiriman antrean atau terjadwal,
dan pengiriman proaktif tidak tersedia untuk akun enterprise. Reaksi
konfirmasi, pengetikan, dan status keluar didukung melalui klien Slack
yang dimiliki listener dan memerlukan reactions:write; notifikasi reaksi
masuk dan alat tindakan reaksi tetap tidak tersedia.
Balasan langsung menggunakan kembali perilaku pengiriman Slack standar untuk potongan,
media, metadata, fallback identitas, unfurl, dan tanda terima, tetapi hanya selama
klien tervalidasi milik listener tetap berada dalam giliran peristiwa aktif. Antrean
pengiriman dalam memori dan catatan partisipasi utas dipartisi berdasarkan workspace
peristiwa tersebut; klien itu sendiri tidak pernah diserialisasi atau dipersistenkan.
Kunci kebijakan channel dan entri dm.groupChannels harus menggunakan ID channel Slack stabil mentah atau
bentuk channel:<id>. OpenClaw menormalkan kedua bentuk tersebut menjadi ID channel mentah untuk
pencocokan runtime; prefiks slack:, group:, dan mpim: menyebabkan startup gagal.
Entri kebijakan pengguna harus menggunakan ID pengguna Slack yang stabil; nama, slug, nama tampilan,
dan alamat email menyebabkan startup gagal. ID harus menggunakan prefiks dan isi huruf besar kanonis
Slack (misalnya, C0123456789 atau U0123456789); bentuk huruf kecil dan
bentuk pendek yang menyerupainya menyebabkan startup gagal. Akun Enterprise tidak dapat mengaktifkan
dangerouslyAllowNameMatching. Akun Enterprise dapat menetapkan
mentionPatterns.mode global, tetapi mentionPatterns.allowIn dan
mentionPatterns.denyIn menyebabkan startup gagal karena ID channel Slack tanpa kualifikasi tidak
memiliki kualifikasi workspace dan dapat digunakan kembali di beberapa workspace. Instalasi workspace
mempertahankan perilaku pola penyebutan tercakup yang sudah ada. Setiap workspace yang diterima
mendapat identitas perutean, sesi, transkrip, deduplikasi, riwayat, dan cache terpisah
meskipun ID Slack tumpang tindih. Dalam aliran message, pesan pengguna biasa
dan peristiwa file_share yang dibuat pengguna didukung; subtipe pesan lainnya
ditolak sebelum otorisasi atau penanganan peristiwa sistem.
DM Enterprise harus dinonaktifkan (dm.enabled=false atau
dmPolicy="disabled") atau dibuka secara eksplisit dengan dmPolicy="open" dan
allowFrom akun efektif yang memuat literal "*". Daftar izin kosong
atau ID khusus pengguna tanpa "*" menyebabkan startup gagal. Penyandingan dan
daftar izin DM per pengguna ditolak karena ID pengguna Slack tidak
memiliki kualifikasi workspace dalam penyimpanan otorisasi tersebut. Kebijakan channel dan pengirim
tetap berlaku pada pesan channel.
Instalasi
plugins install mendaftarkan dan mengaktifkan plugin. Plugin ini tidak melakukan apa pun hingga Anda mengonfigurasi aplikasi Slack dan pengaturan channel di bawah. Lihat Plugin untuk aturan umum instalasi plugin.
Penyiapan cepat
Manifes di bagian ini membuat instalasi yang tercakup pada workspace. Untuk instalasi organisasi Enterprise Grid, gunakan manifes dan alur kerja seluruh organisasi khusus sebagai gantinya.- Socket Mode (default)
- HTTP Request URLs
1
Buat aplikasi Slack baru
Buka api.slack.com/apps → Create New App → From a manifest → pilih workspace Anda → tempel salah satu manifes di bawah → Next → Create.Setelah Slack membuat aplikasi:
Direkomendasikan cocok dengan rangkaian fitur lengkap plugin Slack: App Home, perintah garis miring, file, reaksi, pin, DM grup, serta pembacaan emoji/grup pengguna. Pilih Minimal ketika kebijakan workspace membatasi cakupan — opsi ini mencakup DM, riwayat channel/grup, penyebutan, dan perintah garis miring, tetapi tidak menyertakan file, reaksi, pin, DM grup (
mpim:*), emoji:read, dan usergroups:read. Lihat Daftar periksa manifes dan cakupan untuk alasan setiap cakupan dan opsi tambahan seperti perintah garis miring tambahan.- Basic Information -> App-Level Tokens -> Generate Token and Scopes: tambahkan
connections:write, simpan, lalu salin App-Level Token. - Install App -> Install to Workspace: salin Bot User OAuth Token.
2
Konfigurasikan OpenClaw
Penyiapan SecretRef yang direkomendasikan:Fallback env (hanya akun default):
3
Mulai Gateway
Identitas pengguna (kirim sebagai orang sungguhan)
Identitas pengguna memungkinkan OpenClaw membaca dan mengirim sebagai manusia yang mengotorisasi aplikasi Slack.userToken adalah identitas yang bertindak; aplikasi Slack pendamping membawa lalu lintas Events API melalui Socket Mode atau HTTP Request URL. Aplikasi pendamping tidak memerlukan pengguna bot atau token bot.
Siapkan aplikasi pendamping sebagai berikut:
-
Di bawah OAuth & Permissions -> User Token Scopes, tambahkan izin dengan cakupan pengguna berikut:
- riwayat:
channels:history,groups:history,im:history,mpim:history - pencarian percakapan:
channels:read,groups:read,im:read,mpim:read - orang:
users:read - pengiriman:
chat:write(pesan dikirim sebagai pengguna yang mengotorisasi) - membuka DM:
im:write,mpim:write
- riwayat:
-
Di bawah Event Subscriptions -> Subscribe to events on behalf of users, tambahkan peristiwa pengguna berikut. Jangan hanya menambahkannya ke daftar peristiwa bot:
message.channelsmessage.groupsmessage.immessage.mpim
-
Pilih satu transport peristiwa:
- Socket Mode: aktifkan Socket Mode dan buat token tingkat aplikasi dengan
connections:write. Konfigurasikan sebagaiappToken. - HTTP Request URL: arahkan Event Subscriptions ke endpoint Slack OpenClaw publik dan salin Basic Information -> App Credentials -> Signing Secret. Konfigurasikan sebagai
signingSecret.
- Socket Mode: aktifkan Socket Mode dan buat token tingkat aplikasi dengan
-
Instal atau instal ulang aplikasi, otorisasi sebagai manusia yang dimaksud, lalu salin token OAuth pengguna yang dihasilkan ke
userToken.
Penyesuaian transport Socket Mode
OpenClaw menetapkan batas waktu pong klien Slack SDK menjadi 15 detik secara bawaan untuk Socket Mode. Timpa pengaturan transport hanya jika Anda memerlukan penyesuaian khusus ruang kerja atau host:clientPingTimeout adalah waktu tunggu pong setelah SDK mengirim ping klien; serverPingTimeout adalah waktu tunggu untuk ping server Slack. Pesan dan peristiwa aplikasi tetap merupakan status aplikasi, bukan sinyal keaktifan transport.
Catatan:
socketModediabaikan dalam mode HTTP Request URL.- Pengaturan dasar
channels.slack.socketModeberlaku untuk semua akun Slack kecuali ditimpa. Penimpaan per akun menggunakanchannels.slack.accounts.<accountId>.socketMode; karena ini adalah penimpaan objek, sertakan setiap bidang penyesuaian soket yang Anda inginkan untuk akun tersebut. - Hanya
clientPingTimeoutyang memiliki bawaan OpenClaw (15000).serverPingTimeoutdanpingPongLoggingEnabledditeruskan ke Slack SDK hanya jika dikonfigurasi. - Backoff mulai ulang Socket Mode dimulai sekitar 2 detik dan dibatasi sekitar 30 detik. Kegagalan pemulaian, penantian pemulaian, dan pemutusan yang dapat dipulihkan dicoba ulang hingga kanal berhenti. Kesalahan akun dan kredensial permanen seperti autentikasi tidak valid, token dicabut, atau cakupan tidak tersedia akan gagal dengan cepat, alih-alih terus mencoba ulang tanpa batas.
Daftar periksa manifes dan cakupan
Manifes dasar aplikasi Slack sama untuk Socket Mode dan HTTP Request URL. Hanya bloksettings (dan url perintah garis miring) yang berbeda.
Manifes dasar (bawaan Socket Mode):
settings dengan varian HTTP dan tambahkan url ke setiap perintah garis miring. URL publik diperlukan:
Pengaturan manifes tambahan
Tampilkan berbagai fitur yang memperluas bawaan di atas. Manifes default mengaktifkan tab Home pada Slack App Home dan berlangganan keapp_home_opened. Saat anggota ruang kerja membuka tab Home, OpenClaw menerbitkan tampilan Home default yang aman dengan views.publish; tidak ada payload percakapan atau konfigurasi privat yang disertakan. Saat mode satu perintah garis miring diaktifkan, petunjuk perintah menggunakan channels.slack.slashCommand.name; instalasi yang menggunakan perintah native atau tanpa perintah garis miring tidak menyertakan petunjuk tersebut. Tab Messages tetap diaktifkan untuk DM Slack. Manifes tersebut juga mengaktifkan utas asisten Slack dengan features.assistant_view, assistant:write, assistant_thread_started, dan assistant_thread_context_changed; utas asisten diarahkan ke sesi utas OpenClaw tersendiri dan mempertahankan konteks utas yang disediakan Slack agar tersedia bagi agen.
Perintah garis miring native opsional
Perintah garis miring native opsional
Beberapa perintah garis miring native dapat digunakan sebagai pengganti satu perintah yang dikonfigurasi, dengan beberapa catatan:
- Gunakan
/agentstatus, bukan/status, karena perintah/statusdicadangkan. - Tidak lebih dari 25 perintah garis miring dapat didaftarkan pada satu aplikasi Slack sekaligus (batas platform Slack).
/login ke manifes secara manual; contoh di bawah menyertakannya sebagai pengganti alias opsional /side agar jumlahnya tetap 25 perintah. /login dapat ditampilkan di mana saja, tetapi hanya menerbitkan kode pemasangan di percakapan privat atau UI Web.Ganti bagian features.slash_commands yang ada dengan subset dari perintah yang tersedia:- Socket Mode (default)
- URL Permintaan HTTP
Cakupan kepengarangan opsional (operasi tulis)
Cakupan kepengarangan opsional (operasi tulis)
Tambahkan cakupan bot
chat:write.customize jika Anda ingin pesan keluar menggunakan identitas agen aktif (nama pengguna dan ikon khusus), bukan identitas aplikasi Slack default.Jika menggunakan ikon emoji, Slack mengharapkan sintaks :emoji_name:.Cakupan token pengguna opsional (operasi baca)
Cakupan token pengguna opsional (operasi baca)
Jika Anda mengonfigurasi
channels.slack.userToken, cakupan baca yang umum adalah:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(jika Anda bergantung pada pembacaan pencarian Slack)
Model token
- Identitas bot (default) memerlukan
botToken+appTokenuntuk Socket Mode, ataubotToken+signingSecretuntuk mode HTTP. - Identitas pengguna memerlukan
userToken+appTokenuntuk Socket Mode, atauuserToken+signingSecretuntuk mode HTTP. Identitas ini tidak menggunakan token bot. - Mode relay memerlukan
botTokenbesertarelay.url,relay.authToken, danrelay.gatewayId; mode ini tidak menggunakan token aplikasi atau rahasia penandatanganan. botToken,appToken,signingSecret,relay.authToken, danuserTokenmenerima string teks biasa atau objek SecretRef.- Token konfigurasi menggantikan fallback env.
- Fallback env
SLACK_BOT_TOKEN,SLACK_APP_TOKEN, danSLACK_USER_TOKENmasing-masing hanya berlaku untuk akun default. userTokensecara default berperilaku hanya-baca (userTokenReadOnly: true).
- Pemeriksaan akun Slack melacak kolom
*Sourcedan*Statusper kredensial (botToken,appToken,signingSecret,userToken). - Statusnya adalah
available,configured_unavailable, ataumissing. configured_unavailableberarti akun dikonfigurasi melalui SecretRef atau sumber rahasia non-inline lainnya, tetapi jalur perintah/runtime saat ini tidak dapat menyelesaikan nilai sebenarnya.- Dalam mode HTTP,
signingSecretStatusdisertakan. Socket Mode menggunakanbotTokenStatus+appTokenStatusuntuk identitas bot danuserTokenStatus+appTokenStatusuntuk identitas pengguna.
Tindakan dan gerbang
Tindakan Slack dikendalikan olehchannels.slack.actions.*.
Grup tindakan yang tersedia dalam peralatan Slack saat ini:
Tindakan pesan Slack saat ini mencakup
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info, dan emoji-list. download-file menerima ID file Slack yang ditampilkan dalam placeholder file masuk dan mengembalikan pratinjau gambar untuk gambar atau metadata file lokal untuk jenis file lainnya.
Kontrol akses dan perutean
- Kebijakan DM
- Kebijakan kanal
- Sebutan dan pengguna saluran
channels.slack.dmPolicy mengontrol akses DM. channels.slack.allowFrom adalah daftar izin DM kanonis.pairing(default)allowlistopen(mengharuskanchannels.slack.allowFrommenyertakan"*")disabled
dm.enabled(default true)channels.slack.allowFromdm.allowFrom(lama)dm.groupEnabled(DM grup default false)dm.groupChannels(daftar izin MPIM opsional)
channels.slack.accounts.default.allowFromhanya berlaku untuk akundefault.- Akun bernama mewarisi
channels.slack.allowFromsaatallowFrommiliknya tidak ditetapkan. - Akun bernama tidak mewarisi
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy dan channels.slack.dm.allowFrom lama masih dibaca untuk kompatibilitas. openclaw doctor --fix memigrasikannya ke dmPolicy dan allowFrom jika dapat dilakukan tanpa mengubah akses.Pemasangan di DM menggunakan openclaw pairing approve slack <code>.Utas, sesi, dan tag balasan
- DM dirutekan sebagai
direct; saluran sebagaichannel; MPIM sebagaigroup. - Pengikatan rute Slack menerima ID peer mentah serta bentuk target Slack seperti
channel:C12345678,user:U12345678, dan<@U12345678>. - Dengan
session.dmScope=maindefault, DM Slack digabungkan ke sesi utama agen. - Sesi saluran:
agent:<agentId>:slack:channel:<channelId>. - Pesan saluran tingkat teratas biasa tetap berada dalam sesi per saluran, bahkan ketika
replyToModebukanoff. - Balasan utas Slack menggunakan
thread_tsSlack induk untuk sufiks sesi (:thread:<threadTs>), bahkan ketika pengutasan balasan keluar dinonaktifkan denganreplyToMode="off". - OpenClaw memasukkan akar saluran tingkat teratas yang memenuhi syarat ke
agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>ketika akar tersebut diperkirakan akan memulai utas Slack yang terlihat, sehingga akar dan balasan utas berikutnya berbagi satu sesi OpenClaw. Ini berlaku untuk peristiwaapp_mention, kecocokan sebutan bot eksplisit atau pola sebutan yang dikonfigurasi, serta saluranrequireMention: falsedenganreplyToModenon-off. - Default
channels.slack.thread.historyScopeadalahthread; defaultthread.inheritParentadalahfalse. channels.slack.thread.initialHistoryLimitmengontrol jumlah pesan utas yang sudah ada yang diambil ketika sesi utas baru dimulai (default20; atur ke0untuk menonaktifkan).channels.slack.implicitMentions.replyToBotmengontrol apakah balasan terhadap pesan bot sendiri melewati pembatasan sebutan (defaulttrue).channels.slack.implicitMentions.threadParticipationmengontrol apakah tindak lanjut dalam utas tempat bot telah membalas melewati pembatasan sebutan (defaulttrue). Atur kefalseuntuk mewajibkan sebutan eksplisit baru dalam tindak lanjut tersebut.openclaw doctor --fixmemigrasikan kunci lamachannels.slack.thread.requireExplicitMentionke flag kanonis positif ini.- Penggantian tingkat akun berada di
channels.slack.accounts.<id>.implicitMentions; default bersama berada dichannels.defaults.implicitMentions.
channels.slack.channels.<id>.replyToMode: penggantian per saluran untuk pesan saluran/saluran privat Slackchannels.slack.replyToMode:off|first|all|batched(defaultoff)channels.slack.replyToModeByChatType: perdirect|group|channel- fallback lama untuk obrolan langsung:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message, atur replyBroadcast: true dengan action: "send" dan threadId atau replyTo agar Slack juga menyiarkan balasan utas ke saluran induk. Ini dipetakan ke flag reply_broadcast chat.postMessage milik Slack dan hanya didukung untuk pengiriman teks atau Block Kit, bukan unggahan media.
Ketika pemanggilan alat message berjalan di dalam utas Slack dan menargetkan saluran yang sama, OpenClaw biasanya mewarisi utas Slack saat ini sesuai dengan replyToMode efektif pada tingkat akun, jenis obrolan, atau per saluran. Balasan otomatis serta pemanggilan send atau upload-file pada saluran yang sama menggunakan penggantian per saluran yang sama. Atur topLevel: true pada action: "send" atau action: "upload-file" untuk memaksa pesan saluran induk baru. threadId: null diterima sebagai penolakan tingkat teratas yang sama.
replyToMode="off" menonaktifkan pengutasan balasan Slack keluar, termasuk tag [[reply_to_*]] eksplisit. Ini tidak meratakan sesi utas Slack masuk: pesan yang sudah diposting di dalam utas Slack tetap dirutekan ke sesi :thread:<threadTs>. Ini berbeda dengan Telegram, yang tetap menghormati tag eksplisit dalam mode "off". Utas Slack menyembunyikan pesan dari saluran, sedangkan balasan Telegram tetap terlihat sebaris.Reaksi pengakuan
ackReaction mengirim emoji pengakuan saat OpenClaw memproses pesan masuk. ackReactionScope menentukan kapan emoji tersebut benar-benar dikirim.
Secara default, pengakuan tetap statis sementara status utas asisten bawaan Slack menampilkan kemajuan dengan pesan pemuatan yang berganti-ganti. Atur messages.statusReactions.enabled: true untuk memilih siklus reaksi antre/berpikir/alat/selesai/kesalahan.
Emoji (ackReaction)
Urutan resolusi:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- fallback emoji identitas agen (
agents.list[].identity.emoji, atau"eyes"/ 👀)
- Slack mengharapkan kode pendek (misalnya
"eyes"). - Gunakan
""untuk menonaktifkan reaksi bagi akun Slack atau secara global.
Cakupan (messages.ackReactionScope)
Penyedia Slack membaca cakupan dari messages.ackReactionScope (default "group-mentions"). Saat ini tidak ada penggantian tingkat akun Slack atau saluran Slack; nilainya bersifat global untuk Gateway.
Nilai:
"all": bereaksi dalam DM dan grup, termasuk peristiwa ruang ambien."direct": hanya bereaksi dalam DM."group-all": bereaksi pada setiap pesan grup kecuali peristiwa ruang ambien (tanpa DM)."group-mentions"(default): bereaksi dalam grup, tetapi hanya ketika bot disebut (atau dalam hal yang dapat disebut dalam grup yang memilih ikut serta). DM dikecualikan."off"/"none": jangan pernah bereaksi.
Cakupan default (
"group-mentions") tidak memicu reaksi pengakuan dalam pesan langsung atau peristiwa ruang ambien. Untuk melihat ackReaction yang dikonfigurasi (misalnya "eyes") pada DM Slack masuk dan peristiwa ruang senyap, atur messages.ackReactionScope ke "all". messages.ackReactionScope dibaca saat penyedia Slack dimulai, sehingga Gateway harus dimulai ulang agar perubahan berlaku.Streaming teks
channels.slack.streaming mengontrol perilaku pratinjau langsung:
off: menonaktifkan streaming pratinjau langsung.partial(default): mengganti teks pratinjau dengan keluaran parsial terbaru.block: menambahkan pembaruan pratinjau per potongan.progress: menampilkan teks status kemajuan selama pembuatan, lalu mengirim teks final.streaming.preview.toolProgress: ketika pratinjau draf aktif, merutekan pembaruan alat/kemajuan ke pesan pratinjau yang diedit yang sama (default:true). Aturfalseuntuk mempertahankan pesan alat/kemajuan yang terpisah.streaming.preview.commandText/streaming.progress.commandText: atur kestatusuntuk mempertahankan baris kemajuan alat yang ringkas sambil menyembunyikan teks perintah/eksekusi mentah (default:raw).
channels.slack.streaming.nativeTransport mengontrol streaming teks bawaan Slack ketika channels.slack.streaming.mode adalah partial (default: true).
Kartu tugas kemajuan bawaan Slack bersifat opsional untuk mode kemajuan. Atur channels.slack.streaming.progress.nativeTaskCards ke true dengan channels.slack.streaming.mode="progress" untuk mengirim kartu rencana/tugas bawaan Slack saat pekerjaan berlangsung, lalu memperbarui kartu tugas yang sama saat selesai. Tanpa flag ini, mode kemajuan mempertahankan perilaku pratinjau draf portabel.
- Utas balasan harus tersedia agar streaming teks bawaan dan status utas asisten Slack dapat muncul. Pemilihan utas tetap mengikuti
replyToMode. - Saluran, obrolan grup, dan akar DM tingkat teratas tetap dapat menggunakan pratinjau draf normal ketika streaming bawaan tidak tersedia atau tidak ada utas balasan.
- DM Slack tingkat teratas secara default tetap berada di luar utas, sehingga tidak menampilkan pratinjau streaming/status bawaan bergaya utas milik Slack; sebagai gantinya, OpenClaw memposting dan mengedit pratinjau draf di DM.
- Media dan payload nonteks menggunakan fallback ke pengiriman normal.
- Hasil akhir media/kesalahan membatalkan edit pratinjau yang tertunda; hasil akhir teks/blok yang memenuhi syarat hanya dikirim sepenuhnya ketika dapat mengedit pratinjau secara langsung.
- Jika streaming gagal di tengah balasan, OpenClaw menggunakan fallback ke pengiriman normal untuk payload yang tersisa.
channels.slack.streamMode(replace | status_final | append) adalah alias lama untukchannels.slack.streaming.mode.channels.slack.streamingboolean adalah alias lama untukchannels.slack.streaming.modedanchannels.slack.streaming.nativeTransport.channels.slack.chunkModedanchannels.slack.nativeStreamingtingkat teratas adalah alias lama untukchannels.slack.streaming.chunkModedanchannels.slack.streaming.nativeTransport.- Alias lama tidak dibaca saat runtime; jalankan
openclaw doctor --fixuntuk menulis ulang konfigurasi streaming Slack yang dipersistenkan ke kunci kanonis.
Reaksi cadangan saat mengetik
typingReaction menambahkan reaksi sementara ke pesan Slack masuk saat OpenClaw memproses balasan, lalu menghapusnya ketika proses selesai. Ini paling berguna di luar balasan utas, yang menggunakan indikator status default “sedang mengetik…”.
Urutan resolusi:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack mengharapkan kode pendek (misalnya
"hourglass_flowing_sand"). - Reaksi bersifat upaya terbaik dan pembersihan diupayakan secara otomatis setelah jalur balasan atau kegagalan selesai.
Masukan suara
Untuk berbicara dengan OpenClaw di Slack saat ini, kirim klip audio Slack ke aplikasi OpenClaw. Mikrofon dikte Slackbot adalah fitur terpisah milik Slack, bukan API aplikasi.- Dikte suara Slackbot berada di dalam percakapan Slackbot pribadi pengguna. Slack mengubah rekaman menjadi prompt Slackbot, tetapi tidak mengirimkan berkas audio, peristiwa dikte, prompt, atau penanda sumber masukan kepada aplikasi Slack pihak ketiga melalui Events API. Plugin Slack OpenClaw tidak dapat mengaktifkan atau menerimanya.
- Klip audio Slack disimpan sebagai berkas Slack yang dapat diposting di DM, kanal, atau utas OpenClaw. OpenClaw mengunduh klip yang dapat diakses dengan token bot, menormalkan metadata MIME klip Slack, dan mengirimkannya melalui pipeline transkripsi audio bersama. Manifes aplikasi yang direkomendasikan mencakup cakupan
files:readyang diperlukan.
requireMention: true, klip audio tanpa keterangan dapat memenuhi gerbang dengan mengucapkan pola penyebutan yang dikonfigurasi (agents.list[].groupChat.mentionPatterns, dengan fallback ke messages.groupChat.mentionPatterns). OpenClaw mengotorisasi pengirim sebelum mengunduh atau mentranskripsikan klip, lalu menerimanya hanya jika transkrip cocok. Transkrip spekulatif yang gagal atau tidak cocok dibuang bersama klip yang diunduh; transkrip tersebut tidak disimpan dalam riwayat kanal. Identitas @bot native Slack tidak dapat disimpulkan dari ucapan, jadi konfigurasikan pola nama yang diucapkan atau sertakan penyebutan tertulis. Jika penggemaan transkrip diaktifkan, gema hanya dikirim setelah penerimaan.
Media, pemotongan, dan pengiriman
Lampiran masuk
Lampiran masuk
Lampiran berkas Slack diunduh dari URL privat yang dihosting Slack (alur permintaan yang diautentikasi dengan token) dan ditulis ke penyimpanan media ketika pengambilan berhasil dan batas ukuran mengizinkan. Placeholder berkas menyertakan
fileId Slack agar agen dapat mengambil berkas asli dengan download-file.Pengunduhan menggunakan batas waktu diam dan total yang dibatasi. Jika pengambilan berkas Slack macet atau gagal, OpenClaw tetap memproses pesan dan menggunakan fallback placeholder berkas.Batas ukuran masuk runtime ditetapkan secara default ke 20MB, kecuali ditimpa oleh channels.slack.mediaMaxMb.Teks dan berkas keluar
Teks dan berkas keluar
- potongan teks menggunakan
channels.slack.textChunkLimit(default8000, dibatasi hingga batas panjang pesan Slack sendiri) channels.slack.streaming.chunkMode="newline"mengaktifkan pemisahan dengan mengutamakan paragraf- pengiriman berkas menggunakan API unggahan Slack dan dapat menyertakan balasan utas (
thread_ts) - keterangan berkas yang panjang menggunakan potongan teks aman untuk Slack pertama sebagai komentar unggahan dan mengirim potongan sisanya sebagai pesan tindak lanjut
- batas media keluar mengikuti
channels.slack.mediaMaxMbketika dikonfigurasi; jika tidak, pengiriman kanal menggunakan default jenis MIME dari pipeline media
Target pengiriman
Target pengiriman
Target eksplisit yang diutamakan:
user:<id>untuk DMchannel:<id>untuk kanal
Perintah dan perilaku garis miring
Perintah garis miring muncul di Slack sebagai satu perintah yang dikonfigurasi atau beberapa perintah native. Konfigurasikanchannels.slack.slashCommand untuk mengubah default perintah:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true atau commands.native: true dalam konfigurasi global.
- Mode otomatis perintah native nonaktif untuk Slack, sehingga
commands.native: "auto"tidak mengaktifkan perintah native Slack.
- 3-5 opsi yang cukup pendek: menu luapan (”…”)
- lebih dari 100 opsi, dengan pemfilteran opsi asinkron tersedia: pilihan eksternal
- 1-2 opsi, atau opsi apa pun yang nilai terenkodenya terlalu panjang untuk pilihan: blok tombol
- selain itu (6-100 opsi, atau lebih dari 100 tanpa pemfilteran asinkron): menu pilihan statis, dipotong menjadi 100 opsi per menu
agent:<agentId>:slack:slash:<userId> dan tetap merutekan eksekusi perintah ke sesi percakapan target menggunakan CommandTargetSessionKey.
Bagan native
Blok Block Kitdata_visualization publik Slack
merender bagan garis, batang, area, dan lingkaran dalam pesan. OpenClaw memetakan blok
presentation chart portabel ke bentuk native tersebut; tidak diperlukan cakupan OAuth tambahan,
unggahan berkas, perender gambar, atau konfigurasi Slack selain akses pesan
chat:write normal.
- judul dan label sumbu opsional: 50 karakter
- lingkaran: 1-12 segmen positif
- garis/batang/area: 1-12 seri dengan nama unik dan 1-20 kategori bersama
- label segmen, kategori, dan seri: 20 karakter
- setiap seri harus berisi satu nilai berhingga untuk setiap kategori; nilai non-lingkaran boleh negatif
invalid_blocks selama peluncuran bertahap, OpenClaw
menghapus blok data native yang ditolak, mempertahankan kontrol sejawat, dan mengirim
representasi bagan lengkap sebagai teks yang terlihat.
Slack saat ini menerima hingga dua blok data_visualization per pesan. Ketika
presentasi berisi lebih dari dua bagan valid, OpenClaw mempertahankan urutannya
dan melanjutkan perenderan native dalam pesan tindak lanjut, dengan tidak lebih dari dua
bagan dalam setiap pesan.
Peluncuran pengembang
Slack mendokumentasikan blok tersebut sebagai fitur Block Kit untuk aplikasi dan tidak memublikasikan
pembatasan paket berbayar. Ketentuan kelayakan Business+/Enterprise berlaku untuk
pembuatan bagan AI otomatis Slackbot, yang terpisah dari aplikasi yang mengirim
bagan Block Kit yang telah terstruktur. Bagan adalah blok khusus pesan, bukan konten App
Home, modal, atau Canvas.
Tabel native
Blok Block Kitdata_table Slack saat ini
merender baris dan kolom terstruktur dalam pesan. OpenClaw memetakan blok
presentation table portabel eksplisit ke data_table; blok tersebut tidak menggunakan
blok table lama Slack.
Tidak diperlukan cakupan OAuth atau konfigurasi Slack tambahan selain akses pesan
chat:write normal.
raw_text Slack. Sel numerik
dipetakan ke raw_number, dengan nilai numerik berhingga dipertahankan untuk pengurutan
dan pemfilteran native. rowHeaderColumnIndex, jika tersedia, menandai kolom
berbasis nol tersebut sebagai tajuk baris Slack.
Batas data_table yang dipublikasikan Slack diberlakukan sebelum perenderan native:
- 1-20 kolom
- 1-100 baris data, ditambah baris tajuk
- jumlah sel yang sama di setiap baris
- maksimal 10.000 karakter agregat di seluruh sel tabel dalam satu pesan
<@U123> tidak menjadi penyebutan Slack.
Jika Slack menolak blok bagan atau tabel native dengan invalid_blocks, OpenClaw
menghapus setiap blok data native dalam satu langkah pemulihan terbatas, mempertahankan
blok sejawat yang valid seperti tombol dan pilihan, serta mengirim teks bagan
dan tabel lengkap yang terlihat dengan pemformatan Slack dinonaktifkan. Pengiriman perintah garis miring
melacak anggaran lima panggilan response_url Slack selama perintah. Sebelum setiap
kelompok balasan, sistem memilih rencana lengkap yang sesuai dengan sisa panggilan atau gagal
sebelum memposting kelompok tersebut.
Hanya blok tabel presentation eksplisit yang dipromosikan menjadi tabel native.
Tabel pipa Markdown tetap berupa teks yang ditulis; OpenClaw tidak menebak struktur
tabel atau jenis sel. Produsen native Slack tepercaya yang ada dapat terus
meneruskan blok mentah melalui channelData.slack.blocks; OpenClaw memperoleh teks
fallback dari sel data_table mentah yang valid, sedangkan blok khusus yang cacat dapat
menurun menjadi keterangannya atau fallback Block Kit umum. Keluaran agen, CLI,
dan plugin portabel harus menggunakan presentation.
Balasan interaktif
Slack dapat merender kontrol balasan interaktif yang dibuat agen, tetapi fitur ini dinonaktifkan secara default. Untuk output agen, CLI, dan plugin baru, utamakan tombolpresentation atau blok pilihan bersama. Keduanya menggunakan jalur interaksi Slack
yang sama sekaligus tetap dapat diturunkan fungsinya di saluran lain.
Aktifkan secara global:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
compileSlackInteractiveReplies(...)parseSlackOptionsLine(...)isSlackInteractiveRepliesEnabled(...)buildSlackInteractiveBlocks(...)
presentation dan buildSlackPresentationBlocks(...) untuk kontrol baru
yang dirender di Slack.
Catatan:
- Ini adalah UI lama khusus Slack. Saluran lain tidak menerjemahkan direktif Slack Block Kit menjadi sistem tombolnya sendiri.
- Nilai callback interaktif adalah token opak yang dibuat OpenClaw, bukan nilai mentah yang dibuat agen.
- Jika blok interaktif yang dihasilkan akan melampaui batas Slack Block Kit, OpenClaw kembali menggunakan balasan teks asli alih-alih mengirim payload blok yang tidak valid.
Pengiriman modal yang dimiliki plugin
Plugin Slack yang mendaftarkan penangan interaktif juga dapat menerima peristiwa siklus hidup modalview_submission dan view_closed sebelum OpenClaw memadatkan
payload untuk peristiwa sistem yang terlihat oleh agen. Gunakan salah satu pola perutean
berikut saat membuka modal Slack:
- Atur
callback_idmenjadiopenclaw:<namespace>:<payload>. - Atau pertahankan
callback_idyang sudah ada dan masukkanpluginInteractiveData: "<namespace>:<payload>"ke dalamprivate_metadatamodal.
ctx.interaction.kind sebagai view_submission atau
view_closed, inputs yang dinormalisasi, dan objek mentah lengkap stateValues dari
Slack. Perutean hanya berdasarkan ID callback sudah cukup untuk memanggil penangan plugin; sertakan
bidang perutean pengguna/sesi private_metadata modal yang sudah ada jika
modal juga harus menghasilkan peristiwa sistem yang terlihat oleh agen. Agen menerima
peristiwa sistem Slack interaction: ... yang ringkas dan telah disunting. Jika penangan mengembalikan
systemEvent.summary, systemEvent.reference, atau systemEvent.data, bidang
tersebut disertakan dalam peristiwa ringkas itu agar agen dapat merujuk
penyimpanan milik plugin tanpa melihat payload formulir lengkap.
Persetujuan native di Slack
Slack dapat bertindak sebagai klien persetujuan native dengan tombol dan interaksi yang interaktif, alih-alih kembali menggunakan UI Web atau terminal.- Persetujuan eksekusi dan plugin dapat dirender sebagai prompt Block Kit native Slack.
channels.slack.execApprovals.*tetap menjadi konfigurasi pengaktifan klien persetujuan eksekusi native dan perutean DM/saluran.- DM persetujuan eksekusi menggunakan
channels.slack.execApprovals.approversataucommands.ownerAllowFrom. - Persetujuan plugin menggunakan tombol native Slack saat Slack diaktifkan sebagai klien persetujuan native untuk sesi asal, atau saat
approvals.plugindiarahkan ke sesi Slack asal atau target Slack. - DM persetujuan plugin menggunakan pemberi persetujuan plugin Slack dari
channels.slack.allowFrom,allowFromakun bernama, atau rute default akun. - Otorisasi pemberi persetujuan tetap diberlakukan: pemberi persetujuan khusus eksekusi tidak dapat menyetujui permintaan plugin kecuali mereka juga merupakan pemberi persetujuan plugin.
interactivity diaktifkan dalam pengaturan aplikasi Slack Anda, prompt persetujuan dirender sebagai tombol Block Kit langsung dalam percakapan.
Saat tombol tersebut tersedia, tombol itu menjadi UX persetujuan utama; OpenClaw
hanya boleh menyertakan perintah /approve manual saat hasil alat menyatakan bahwa persetujuan
chat tidak tersedia atau persetujuan manual merupakan satu-satunya jalur.
Jalur konfigurasi:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(opsional; kembali menggunakancommands.ownerAllowFromjika memungkinkan)channels.slack.execApprovals.target(dm|channel|both, default:dm)agentFilter,sessionFilter
enabled tidak ditetapkan atau "auto" dan setidaknya satu
pemberi persetujuan eksekusi dapat ditemukan. Slack juga dapat menangani persetujuan plugin native melalui jalur klien native
ini saat pemberi persetujuan plugin Slack dapat ditemukan dan permintaan cocok dengan filter klien native. Atur
enabled: false untuk menonaktifkan Slack sebagai klien persetujuan native secara eksplisit. Atur enabled: true untuk
memaksa persetujuan native aktif saat pemberi persetujuan dapat ditemukan. Menonaktifkan persetujuan eksekusi Slack tidak menonaktifkan
pengiriman persetujuan plugin native Slack yang diaktifkan melalui approvals.plugin; pengiriman persetujuan
plugin menggunakan pemberi persetujuan plugin Slack sebagai gantinya.
Perilaku default tanpa konfigurasi persetujuan eksekusi Slack eksplisit:
approvals.exec bersama bersifat terpisah. Gunakan hanya saat prompt persetujuan eksekusi juga harus
diarahkan ke chat lain atau target luar jalur yang eksplisit. Penerusan approvals.plugin bersama juga
terpisah; pengiriman native Slack menekan fallback tersebut hanya saat Slack dapat menangani permintaan persetujuan
plugin secara native.
/approve dalam chat yang sama juga berfungsi di saluran dan DM Slack yang sudah mendukung perintah. Lihat Persetujuan eksekusi untuk model penerusan persetujuan lengkap.
Peristiwa dan perilaku operasional
- Pengeditan/penghapusan pesan dipetakan menjadi peristiwa sistem.
- Siaran utas (balasan utas “Also send to channel”) diproses sebagai pesan pengguna biasa.
- Peristiwa penambahan/penghapusan reaksi dipetakan menjadi peristiwa sistem.
- Peristiwa anggota bergabung/keluar, saluran dibuat/diubah namanya, serta pin ditambahkan/dihapus dipetakan menjadi peristiwa sistem.
- Polling kehadiran opsional dapat memetakan transisi
awaykeactivemilik peserta manusia yang diamati ke sesi Slack memenuhi syarat milik peserta tersebut yang terakhir aktif. Defaultnya nonaktif. channel_id_changeddapat memigrasikan kunci konfigurasi saluran saatconfigWritesdiaktifkan.- Metadata topik/tujuan saluran diperlakukan sebagai konteks tidak tepercaya dan dapat disuntikkan ke konteks perutean.
- Pemicu utas dan penyemaian konteks riwayat utas awal difilter berdasarkan daftar pengirim yang diizinkan dan telah dikonfigurasi jika berlaku.
- Tindakan blok, pintasan, dan interaksi modal menghasilkan peristiwa sistem
Slack interaction: ...terstruktur dengan bidang payload yang kaya:- tindakan blok: nilai terpilih, label, nilai pemilih, dan metadata
workflow_* - pintasan global: metadata callback dan pelaku, diarahkan ke sesi langsung pelaku
- pintasan pesan: konteks callback, pelaku, saluran, utas, dan pesan terpilih
- peristiwa modal
view_submissiondanview_closeddengan metadata saluran yang diarahkan dan input formulir
- tindakan blok: nilai terpilih, label, nilai pemilih, dan metadata
Peristiwa kehadiran
Slack tidak mengirim perubahan kehadiran melalui Events API atau Socket Mode. Sebagai gantinya, OpenClaw dapat melakukan pollingusers.getPresence untuk peserta manusia yang pesannya lolos pemeriksaan akses dan perutean Slack normal.
off(default): tanpa pewaktu kehadiran atau panggilan API Slack.auto: pantau DM, MPIM, dan utas Slack yang aktif dalam 24 jam terakhir dengan paling banyak 8 peserta manusia yang diamati. Sesi saluran tingkat atas tidak disertakan.on: pantau percakapan yang sama tanpa batas peserta dan sertakan sesi saluran tingkat atas. Gunakan penggantian per saluran untuk memaksa atau menekan satu saluran.
away ke active teramati. Masa jeda tahan lama selama 8 jam berlaku per akun dan pengguna Slack, meskipun orang tersebut berpartisipasi dalam beberapa utas. Peristiwa hanya diarahkan ke percakapan memenuhi syarat milik orang tersebut yang terakhir aktif dan memberi tahu agen agar memeriksa memori/wiki serta konteks zona waktu yang diketahui sebelum memutuskan apakah akan mengirim satu sapaan singkat. Agen dapat tetap diam.
Token bot memerlukan users:read, yang sudah disertakan dalam manifes yang direkomendasikan. Peristiwa kehadiran tidak tersedia untuk penginstalan tingkat organisasi Enterprise Grid.
Referensi konfigurasi
Referensi utama: Referensi konfigurasi - Slack.Bidang Slack bersinyal tinggi
Bidang Slack bersinyal tinggi
- mode/autentikasi:
identity,mode,enterpriseOrgInstall,botToken,appToken,userToken,signingSecret,webhookPath,accounts.* - akses DM:
dm.enabled,dmPolicy,allowFrom(lama:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - sakelar kompatibilitas:
dangerouslyAllowNameMatching(darurat; tetap nonaktif kecuali diperlukan) - akses saluran:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention,implicitMentions.* - utas/riwayat:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - pemicu bangun kehadiran:
presenceEvents.mode,channels.*.presenceEvents.mode(off|auto|on; defaultoff) - pengiriman:
textChunkLimit,streaming.chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - pratinjau:
unfurlLinks(default:false),unfurlMediauntuk kontrol pratinjau tautan/mediachat.postMessage; aturunfurlLinks: trueuntuk kembali mengaktifkan pratinjau tautan - operasi/fitur:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Pemecahan masalah
Tidak ada balasan di saluran
Tidak ada balasan di saluran
Periksa secara berurutan:Perintah yang berguna:
groupPolicy- daftar yang diizinkan untuk kanal (
channels.slack.channels) — kunci harus berupa ID kanal (C12345678), bukan nama (#channel-name). Kunci berbasis nama gagal tanpa pemberitahuan padagroupPolicy: "allowlist"karena perutean kanal secara default memprioritaskan ID. Untuk menemukan ID: klik kanan kanal di Slack → Copy link — nilaiC...di akhir URL adalah ID kanal. requireMention- daftar
usersyang diizinkan per kanal messages.groupChat.visibleReplies: permintaan grup/kanal normal secara default menggunakan"automatic". Jika Anda memilih untuk mengaktifkan"message_tool"dan log menampilkan teks asisten tanpa panggilanmessage(action=send), model melewatkan jalur alat pesan yang terlihat. Teks akhir tetap privat dalam mode ini; periksa log verbose Gateway untuk metadata payload yang disembunyikan, atau atur ke"automatic"jika Anda ingin setiap balasan akhir normal dari asisten diposting melalui jalur lama.messages.groupChat.unmentionedInbound: jika nilainya"room_event", percakapan kanal yang diizinkan tanpa penyebutan menjadi konteks sekitar dan tetap senyap kecuali agen memanggil alatmessage. Lihat Peristiwa ruang sekitar.
Pesan DM diabaikan
Pesan DM diabaikan
Periksa:
channels.slack.dm.enabledchannels.slack.dmPolicy(atauchannels.slack.dm.policylama)- persetujuan pemasangan / entri daftar yang diizinkan (
dmPolicy: "open"tetap memerlukanchannels.slack.allowFrom: ["*"]) - DM grup menggunakan penanganan MPIM; aktifkan
channels.slack.dm.groupEnableddan, jika dikonfigurasi, sertakan MPIM dalamchannels.slack.dm.groupChannels - peristiwa DM Slack Assistant: log verbose yang menyebutkan
drop message_changedbiasanya berarti Slack mengirim peristiwa utas Assistant yang telah diedit tanpa pengirim manusia yang dapat dipulihkan dalam metadata pesan
Socket Mode tidak terhubung
Socket Mode tidak terhubung
Validasi token bot dan aplikasi serta pengaktifan Socket Mode dalam pengaturan aplikasi Slack.
App-Level Token memerlukan
connections:write, dan token bot
Bot User OAuth Token harus berasal dari aplikasi/ruang kerja Slack yang sama dengan token aplikasi.Jika openclaw channels status --probe --json menampilkan botTokenStatus atau
appTokenStatus: "configured_unavailable", akun Slack telah
dikonfigurasi, tetapi runtime saat ini tidak dapat memperoleh nilai yang
didukung SecretRef.Log seperti slack socket mode failed to start; retry ... merupakan kegagalan
awal yang dapat dipulihkan. Cakupan yang tidak tersedia, token yang dicabut, dan autentikasi yang tidak valid akan langsung gagal.
Sebaliknya, log slack token mismatch ... berarti token bot dan token aplikasi
tampaknya berasal dari aplikasi Slack yang berbeda; perbaiki kredensial aplikasi Slack.Mode HTTP tidak menerima peristiwa
Mode HTTP tidak menerima peristiwa
Validasi:
- rahasia penandatanganan
- jalur Webhook
- Slack Request URLs (Events + Interactivity + Slash Commands)
webhookPathyang unik untuk setiap akun HTTP- URL publik mengakhiri TLS dan meneruskan permintaan ke jalur Gateway
- jalur
request_urlaplikasi Slack sama persis denganchannels.slack.webhookPath(default/slack/events)
signingSecretStatus: "configured_unavailable" muncul dalam snapshot akun,
akun HTTP telah dikonfigurasi, tetapi runtime saat ini tidak dapat
memperoleh rahasia penandatanganan yang didukung SecretRef.Log slack: webhook path ... already registered yang berulang berarti dua akun HTTP
menggunakan webhookPath yang sama; berikan jalur yang berbeda untuk setiap akun.Perintah native/slash tidak dijalankan
Perintah native/slash tidak dijalankan
Pastikan apakah yang Anda maksud adalah:
- mode perintah native (
channels.slack.commands.native: true) dengan perintah slash yang sesuai terdaftar di Slack - atau mode satu perintah slash (
channels.slack.slashCommand.enabled: true)
commands.native: "auto" tidak mengaktifkan perintah native Slack; gunakan true dan buat perintah yang sesuai di aplikasi Slack. Dalam mode HTTP, setiap perintah slash Slack harus menyertakan URL Gateway. Dalam Socket Mode, payload perintah diterima melalui websocket dan Slack mengabaikan slash_commands[].url.Periksa juga commands.useAccessGroups, otorisasi DM, daftar kanal yang diizinkan,
dan daftar users yang diizinkan per kanal. Slack mengembalikan galat sementara untuk
pengirim perintah slash yang diblokir, termasuk:This channel is not allowed.You are not authorized to use this command here.
Referensi media lampiran
Slack dapat melampirkan media yang diunduh ke giliran agen ketika pengunduhan berkas Slack berhasil dan batas ukuran mengizinkannya. Klip audio dapat ditranskripsikan, berkas gambar dapat diteruskan melalui jalur pemahaman media atau langsung ke model balasan yang mendukung visi, dan berkas lainnya tetap tersedia sebagai konteks berkas yang dapat diunduh.Jenis media yang didukung
Pipeline masuk
Ketika pesan Slack dengan lampiran berkas diterima:- OpenClaw mengunduh berkas dari URL privat Slack menggunakan token bot.
- Berkas ditulis ke penyimpanan media setelah berhasil.
- Jalur media yang diunduh dan jenis kontennya ditambahkan ke konteks masuk.
- Klip audio dirutekan ke pipeline transkripsi bersama; jalur model/alat yang mendukung gambar dapat menggunakan lampiran gambar dari konteks yang sama.
- Berkas lainnya tetap tersedia sebagai metadata berkas atau referensi media bagi alat yang dapat menanganinya.
Pewarisan lampiran akar utas
Ketika pesan diterima dalam sebuah utas (memiliki indukthread_ts):
- Jika balasan itu sendiri tidak memiliki media langsung dan pesan akar yang disertakan memiliki berkas, Slack dapat memuat berkas akar sebagai konteks pembuka utas.
- Berkas akar hanya dimuat saat memulai sesi utas baru atau yang telah direset. Balasan berikutnya yang hanya berisi teks menggunakan kembali konteks sesi yang sudah ada dan tidak melampirkan kembali berkas akar sebagai media baru.
- Lampiran langsung pada balasan lebih diprioritaskan daripada lampiran pesan akar.
- Pesan akar yang hanya memiliki berkas tanpa teks direpresentasikan dengan placeholder lampiran agar fallback tetap dapat menyertakan berkasnya.
Penanganan banyak lampiran
Ketika satu pesan Slack berisi beberapa lampiran berkas:- Setiap lampiran diproses secara independen melalui pipeline media.
- Referensi media yang diunduh digabungkan ke dalam konteks pesan.
- Urutan pemrosesan mengikuti urutan berkas Slack dalam payload peristiwa.
- Kegagalan mengunduh satu lampiran tidak memblokir lampiran lainnya.
Batas ukuran, pengunduhan, dan model
- Batas ukuran: Default 20 MB per berkas. Dapat dikonfigurasi melalui
channels.slack.mediaMaxMb. - Batas transkripsi audio:
tools.media.audio.maxBytesjuga berlaku ketika berkas yang diunduh dikirim ke penyedia transkripsi atau CLI. - Kegagalan pengunduhan: Berkas yang tidak dapat disajikan oleh Slack, URL kedaluwarsa, berkas yang tidak dapat diakses, berkas yang terlalu besar, dan respons HTML autentikasi/login Slack dilewati, bukan dilaporkan sebagai format yang tidak didukung.
- Model visi: Analisis gambar menggunakan model balasan aktif jika mendukung visi, atau model gambar yang dikonfigurasi pada
agents.defaults.imageModel.
Batas yang diketahui
Dokumentasi terkait
Terkait
Pemasangan
Pasangkan pengguna Slack dengan Gateway.
Grup
Perilaku kanal dan DM grup.
Perutean kanal
Rutekan pesan masuk ke agen.
Keamanan
Model ancaman dan penguatan keamanan.
Konfigurasi
Tata letak dan urutan prioritas konfigurasi.
Perintah garis miring
Katalog dan perilaku perintah.