Siap produksi untuk DM dan kanal melalui integrasi aplikasi Slack. Mode default adalah Socket Mode; HTTP Request URLs juga didukung.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Pemasangan
DM Slack secara default menggunakan mode pemasangan.
Perintah slash
Perilaku perintah native dan katalog perintah.
Pemecahan masalah kanal
Diagnostik lintas kanal dan playbook perbaikan.
Memilih Socket Mode atau HTTP Request URLs
Kedua transport siap produksi dan mencapai paritas fitur untuk perpesanan, perintah slash, App Home, dan interaktivitas. Pilih berdasarkan bentuk deployment, bukan fitur.| Pertimbangan | Socket Mode (default) | HTTP Request URLs |
|---|---|---|
| URL Gateway publik | Tidak diperlukan | Diperlukan (DNS, TLS, reverse proxy atau tunnel) |
| Jaringan keluar | WSS keluar ke wss-primary.slack.com harus dapat dijangkau | Tidak ada WS keluar; hanya HTTPS masuk |
| Token yang diperlukan | Token bot (xoxb-...) + App-Level Token (xapp-...) dengan connections:write | Token bot (xoxb-...) + Signing Secret |
| Laptop dev / di balik firewall | Berfungsi apa adanya | Memerlukan tunnel publik (ngrok, Cloudflare Tunnel, Tailscale Funnel) atau Gateway staging |
| Penskalaan horizontal | Satu sesi Socket Mode per aplikasi per host; beberapa Gateway memerlukan aplikasi Slack terpisah | Handler POST stateless; beberapa replika Gateway dapat berbagi satu aplikasi di balik load balancer |
| Multi-akun pada satu Gateway | Didukung; setiap akun membuka WS-nya sendiri | Didukung; setiap akun memerlukan webhookPath unik (default /slack/events) agar registrasi tidak bertabrakan |
| Transport perintah slash | Dikirim melalui koneksi WS; slash_commands[].url diabaikan | Slack mengirim POST ke slash_commands[].url; field ini diperlukan agar perintah dikirim |
| Penandatanganan request | Tidak digunakan (auth adalah App-Level Token) | Slack menandatangani setiap request; OpenClaw memverifikasi dengan signingSecret |
| Pemulihan saat koneksi terputus | Slack SDK otomatis menyambung ulang; tuning transport pong-timeout gateway berlaku | Tidak ada koneksi persisten yang dapat terputus; retry dilakukan per request dari Slack |
Pilih Socket Mode untuk host Gateway tunggal, laptop dev, dan jaringan on-prem yang dapat menjangkau
*.slack.com keluar tetapi tidak dapat menerima HTTPS masuk.Pilih HTTP Request URLs saat menjalankan beberapa replika Gateway di balik load balancer, ketika WSS keluar diblokir tetapi HTTPS masuk diizinkan, atau ketika Anda sudah menghentikan webhook Slack di reverse proxy.Penyiapan cepat
- Socket Mode (default)
- HTTP Request URLs
Buat aplikasi Slack baru
Buka api.slack.com/apps → Create New App → From a manifest → pilih workspace Anda → tempel salah satu manifest di bawah → Next → Create.Setelah Slack membuat aplikasi:
Recommended cocok dengan rangkaian fitur lengkap Plugin Slack bawaan: App Home, perintah slash, file, reaction, pin, DM grup, dan pembacaan emoji/usergroup. Pilih Minimal ketika kebijakan workspace membatasi scope — ini mencakup DM, riwayat kanal/grup, mention, dan perintah slash tetapi menghapus file, reaction, pin, DM grup (
mpim:*), emoji:read, dan usergroups:read. Lihat Checklist manifest dan scope untuk alasan per scope dan opsi aditif seperti perintah slash tambahan.- Basic Information → App-Level Tokens → Generate Token and Scopes: tambahkan
connections:write, simpan, salin nilaixapp-.... - Install App → Install to Workspace: salin
xoxb-...Bot User OAuth Token.
Penyetelan transport Mode Socket
OpenClaw mengatur batas waktu pong klien SDK Slack menjadi 15 detik secara default untuk Mode Socket. Timpa pengaturan transport hanya saat Anda membutuhkan penyetelan khusus workspace 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.
Daftar periksa manifes dan cakupan
Manifes aplikasi Slack dasar sama untuk Mode Socket dan URL Permintaan HTTP. Hanya bloksettings (dan url perintah slash) yang berbeda.
Manifes dasar (default Mode Socket):
settings dengan varian HTTP dan tambahkan url ke setiap perintah slash. URL publik wajib:
Pengaturan manifes tambahan
Munculkan fitur berbeda yang memperluas default di atas. Manifes default mengaktifkan tab Home Slack App Home dan berlanggananapp_home_opened. Saat anggota workspace membuka tab Home, OpenClaw menerbitkan tampilan Home default yang aman dengan views.publish; tidak ada payload percakapan atau konfigurasi privat yang disertakan. Tab Messages tetap diaktifkan untuk DM Slack.
Optional native slash commands
Optional native slash commands
Beberapa perintah slash native dapat digunakan alih-alih satu perintah yang dikonfigurasi dengan nuansa:
- Gunakan
/agentstatusalih-alih/statuskarena perintah/statusdicadangkan. - Tidak lebih dari 25 perintah slash dapat disediakan sekaligus.
features.slash_commands yang ada dengan subset perintah yang tersedia:- Socket Mode (default)
- HTTP Request URLs
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 kustom) alih-alih identitas aplikasi Slack default.Jika Anda 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
botToken+appTokendiperlukan untuk Socket Mode.- Mode HTTP memerlukan
botToken+signingSecret. botToken,appToken,signingSecret, danuserTokenmenerima string plaintext atau objek SecretRef.- Token konfigurasi mengesampingkan fallback env.
- Fallback env
SLACK_BOT_TOKEN/SLACK_APP_TOKENhanya berlaku untuk akun default. userToken(xoxp-...) hanya konfigurasi (tanpa fallback env) dan default-nya adalah perilaku baca saja (userTokenReadOnly: true).
- Inspeksi akun Slack melacak kolom
*Sourcedan*Statusper kredensial (botToken,appToken,signingSecret,userToken). - Status adalah
available,configured_unavailable, ataumissing. configured_unavailableberarti akun dikonfigurasi melalui SecretRef atau sumber rahasia non-inline lain, tetapi jalur perintah/runtime saat ini tidak dapat menyelesaikan nilai sebenarnya.- Dalam mode HTTP,
signingSecretStatusdisertakan; dalam Socket Mode, pasangan yang diperlukan adalahbotTokenStatus+appTokenStatus.
Aksi dan gerbang
Aksi Slack dikontrol olehchannels.slack.actions.*.
Grup aksi yang tersedia di tooling Slack saat ini:
| Grup | Default |
|---|---|
| messages | aktif |
| reactions | aktif |
| pins | aktif |
| memberInfo | aktif |
| emojiList | aktif |
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 di placeholder file masuk dan mengembalikan pratinjau gambar untuk gambar atau metadata file lokal untuk jenis file lain.
Kontrol akses dan routing
- Kebijakan DM
- Kebijakan channel
- Mention dan pengguna channel
channels.slack.dmPolicy mengontrol akses DM. channels.slack.allowFrom adalah allowlist DM kanonis.pairing(default)allowlistopen(memerlukanchannels.slack.allowFromuntuk menyertakan"*")disabled
dm.enabled(default true)channels.slack.allowFromdm.allowFrom(legacy)dm.groupEnabled(DM grup default false)dm.groupChannels(allowlist MPIM opsional)
channels.slack.accounts.default.allowFromhanya berlaku untuk akundefault.- Akun bernama mewarisi
channels.slack.allowFromketikaallowFrommiliknya sendiri tidak disetel. - Akun bernama tidak mewarisi
channels.slack.accounts.default.allowFrom.
channels.slack.dm.policy dan channels.slack.dm.allowFrom masih dibaca untuk kompatibilitas. openclaw doctor --fix memigrasikannya ke dmPolicy dan allowFrom ketika dapat melakukannya tanpa mengubah akses.Pairing di DM menggunakan openclaw pairing approve slack <code>.Thread, sesi, dan tag balasan
- DM dirutekan sebagai
direct; channel sebagaichannel; MPIM sebagaigroup. - Binding rute Slack menerima ID peer mentah plus bentuk target Slack seperti
channel:C12345678,user:U12345678, dan<@U12345678>. - Dengan default
session.dmScope=main, DM Slack diciutkan ke sesi utama agen. - Sesi channel:
agent:<agentId>:slack:channel:<channelId>. - Balasan thread dapat membuat suffix sesi thread (
:thread:<threadTs>) jika berlaku. - Di channel tempat OpenClaw menangani pesan tingkat atas tanpa memerlukan mention eksplisit,
replyToModenon-offmerutekan setiap root yang ditangani keagent:<agentId>:slack:channel:<channelId>:thread:<rootTs>sehingga thread Slack yang terlihat dipetakan ke satu sesi OpenClaw sejak giliran pertama. - Default
channels.slack.thread.historyScopeadalahthread; defaultthread.inheritParentadalahfalse. channels.slack.thread.initialHistoryLimitmengontrol berapa banyak pesan thread yang sudah ada yang diambil ketika sesi thread baru dimulai (default20; setel0untuk menonaktifkan).channels.slack.thread.requireExplicitMention(defaultfalse): ketikatrue, menekan mention thread implisit sehingga bot hanya merespons mention@boteksplisit di dalam thread, bahkan ketika bot sudah berpartisipasi dalam thread. Tanpa ini, balasan dalam thread yang diikuti bot melewati gatingrequireMention.
channels.slack.replyToMode:off|first|all|batched(defaultoff)channels.slack.replyToModeByChatType: perdirect|group|channel- fallback legacy untuk chat langsung:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message, setel replyBroadcast: true dengan action: "send" dan threadId atau replyTo untuk meminta Slack juga menyiarkan balasan thread ke channel induk. Ini dipetakan ke flag reply_broadcast chat.postMessage milik Slack dan hanya didukung untuk pengiriman teks atau Block Kit, bukan upload media.
Ketika panggilan tool message berjalan di dalam thread Slack dan menargetkan channel yang sama, OpenClaw biasanya mewarisi thread Slack saat ini sesuai dengan replyToMode. Setel topLevel: true pada action: "send" atau action: "upload-file" untuk memaksa pesan channel induk baru. threadId: null diterima sebagai opt-out tingkat atas yang sama.
replyToMode="off" menonaktifkan semua threading balasan di Slack, termasuk tag [[reply_to_*]] eksplisit. Ini berbeda dari Telegram, tempat tag eksplisit tetap dihormati dalam mode "off". Thread Slack menyembunyikan pesan dari channel sementara balasan Telegram tetap terlihat inline.Reaksi ack
ackReaction mengirim emoji pengakuan saat OpenClaw memproses pesan masuk.
Urutan resolusi:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- fallback emoji identitas agen (
agents.list[].identity.emoji, jika tidak ada ”👀”)
- Slack mengharapkan shortcode (misalnya
"eyes"). - Gunakan
""untuk menonaktifkan reaksi bagi akun Slack atau secara global.
Streaming teks
channels.slack.streaming mengontrol perilaku pratinjau live:
off: nonaktifkan streaming pratinjau live.partial(default): ganti teks pratinjau dengan output parsial terbaru.block: tambahkan pembaruan pratinjau yang dipecah menjadi chunk.progress: tampilkan teks status progres saat menghasilkan, lalu kirim teks final.streaming.preview.toolProgress: ketika pratinjau draf aktif, rutekan pembaruan tool/progres ke pesan pratinjau yang diedit yang sama (default:true). Setelfalseuntuk mempertahankan pesan tool/progres terpisah.streaming.preview.commandText/streaming.progress.commandText: setel kestatusuntuk mempertahankan baris progres tool yang ringkas sambil menyembunyikan teks perintah/exec mentah (default:raw).
channels.slack.streaming.nativeTransport mengontrol streaming teks native Slack ketika channels.slack.streaming.mode adalah partial (default: true).
- Thread balasan harus tersedia agar streaming teks native dan status thread asisten Slack muncul. Pemilihan thread tetap mengikuti
replyToMode. - Root kanal, obrolan grup, dan DM tingkat atas tetap dapat menggunakan pratinjau draf normal saat streaming native tidak tersedia atau tidak ada thread balasan.
- DM Slack tingkat atas tetap di luar thread secara default, sehingga tidak menampilkan pratinjau stream/status native bergaya thread Slack; OpenClaw memposting dan mengedit pratinjau draf di DM sebagai gantinya.
- Media dan payload non-teks kembali ke pengiriman normal.
- Final media/error membatalkan pengeditan pratinjau tertunda; final teks/blok yang memenuhi syarat hanya di-flush saat dapat mengedit pratinjau di tempat.
- Jika streaming gagal di tengah balasan, OpenClaw kembali ke pengiriman normal untuk payload yang tersisa.
channels.slack.streamMode(replace | status_final | append) adalah alias runtime legacy untukchannels.slack.streaming.mode.- boolean
channels.slack.streamingadalah alias runtime legacy untukchannels.slack.streaming.modedanchannels.slack.streaming.nativeTransport. channels.slack.nativeStreaminglegacy adalah alias runtime untukchannels.slack.streaming.nativeTransport.- Jalankan
openclaw doctor --fixuntuk menulis ulang konfigurasi streaming Slack yang tersimpan ke kunci kanonis.
Fallback reaksi mengetik
typingReaction menambahkan reaksi sementara ke pesan Slack masuk saat OpenClaw sedang memproses balasan, lalu menghapusnya saat run selesai. Ini paling berguna di luar balasan thread, yang menggunakan indikator status default “sedang mengetik…”.
Urutan resolusi:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack mengharapkan shortcode (misalnya
"hourglass_flowing_sand"). - Reaksi bersifat best-effort dan pembersihan dicoba secara otomatis setelah jalur balasan atau kegagalan selesai.
Media, chunking, dan pengiriman
Lampiran masuk
Lampiran masuk
Lampiran file Slack diunduh dari URL privat yang di-host Slack (alur permintaan terautentikasi token) dan ditulis ke penyimpanan media saat pengambilan berhasil dan batas ukuran mengizinkan. Placeholder file menyertakan
fileId Slack agar agen dapat mengambil file asli dengan download-file.Unduhan menggunakan timeout idle dan total yang dibatasi. Jika pengambilan file Slack macet atau gagal, OpenClaw tetap memproses pesan dan kembali ke placeholder file.Batas ukuran masuk runtime default adalah 20MB kecuali ditimpa oleh channels.slack.mediaMaxMb.Teks dan file keluar
Teks dan file keluar
- chunk teks menggunakan
channels.slack.textChunkLimit(default 4000) channels.slack.chunkMode="newline"mengaktifkan pemisahan dengan paragraf sebagai prioritas- pengiriman file menggunakan API unggah Slack dan dapat menyertakan balasan thread (
thread_ts) - batas media keluar mengikuti
channels.slack.mediaMaxMbsaat dikonfigurasi; jika tidak, pengiriman kanal menggunakan default jenis MIME dari pipeline media
Target pengiriman
Target pengiriman
Target eksplisit yang direkomendasikan:
user:<id>untuk DMchannel:<id>untuk kanal
Perintah dan perilaku slash
Perintah slash 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 di konfigurasi global sebagai gantinya.
- Mode otomatis perintah native mati untuk Slack sehingga
commands.native: "auto"tidak mengaktifkan perintah native Slack.
- hingga 5 opsi: blok tombol
- 6-100 opsi: menu pilih statis
- lebih dari 100 opsi: pilih eksternal dengan pemfilteran opsi async saat handler opsi interaktivitas tersedia
- batas Slack terlampaui: nilai opsi yang dienkode kembali ke tombol
agent:<agentId>:slack:slash:<userId> dan tetap merutekan eksekusi perintah ke sesi percakapan target menggunakan CommandTargetSessionKey.
Balasan interaktif
Slack dapat merender kontrol balasan interaktif yang ditulis agen, tetapi fitur ini dinonaktifkan secara default. Aktifkan secara global:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- Ini adalah UI khusus Slack. Kanal lain tidak menerjemahkan direktif Slack Block Kit ke sistem tombol mereka sendiri.
- Nilai callback interaktif adalah token buram yang dibuat OpenClaw, bukan nilai mentah yang ditulis agen.
- Jika blok interaktif yang dibuat akan melampaui batas Slack Block Kit, OpenClaw kembali ke balasan teks asli alih-alih mengirim payload blok yang tidak valid.
Persetujuan exec di Slack
Slack dapat bertindak sebagai klien persetujuan native dengan tombol dan interaksi interaktif, alih-alih kembali ke UI Web atau terminal.- Persetujuan exec menggunakan
channels.slack.execApprovals.*untuk perutean DM/kanal native. - Persetujuan Plugin tetap dapat diselesaikan melalui permukaan tombol native Slack yang sama saat permintaan sudah masuk ke Slack dan jenis id persetujuan adalah
plugin:. - Otorisasi pemberi persetujuan tetap diberlakukan: hanya pengguna yang diidentifikasi sebagai pemberi persetujuan yang dapat menyetujui atau menolak permintaan melalui Slack.
interactivity diaktifkan di pengaturan aplikasi Slack Anda, prompt persetujuan dirender sebagai tombol Block Kit langsung di percakapan.
Saat tombol tersebut tersedia, tombol itu adalah UX persetujuan utama; OpenClaw
hanya boleh menyertakan perintah /approve manual saat hasil alat mengatakan persetujuan chat
tidak tersedia atau persetujuan manual adalah satu-satunya jalur.
Path konfigurasi:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(opsional; kembali kecommands.ownerAllowFromsaat memungkinkan)channels.slack.execApprovals.target(dm|channel|both, default:dm)agentFilter,sessionFilter
enabled tidak disetel atau "auto" dan setidaknya satu
pemberi persetujuan berhasil di-resolve. Setel enabled: false untuk menonaktifkan Slack sebagai klien persetujuan native secara eksplisit.
Setel enabled: true untuk memaksa persetujuan native aktif saat pemberi persetujuan berhasil di-resolve.
Perilaku default tanpa konfigurasi persetujuan exec Slack eksplisit:
approvals.exec bersama terpisah. Gunakan hanya saat prompt persetujuan exec juga harus
dirutekan ke chat lain atau target out-of-band eksplisit. Penerusan approvals.plugin bersama juga
terpisah; tombol native Slack tetap dapat menyelesaikan persetujuan Plugin saat permintaan tersebut sudah masuk
ke Slack.
/approve dalam chat yang sama juga berfungsi di kanal Slack dan DM yang sudah mendukung perintah. Lihat Persetujuan exec untuk model penerusan persetujuan lengkap.
Event dan perilaku operasional
- Pengeditan/penghapusan pesan dipetakan menjadi event sistem.
- Siaran thread (balasan thread “Kirim juga ke kanal”) diproses sebagai pesan pengguna normal.
- Event tambah/hapus reaksi dipetakan menjadi event sistem.
- Event anggota bergabung/keluar, kanal dibuat/diganti nama, dan pin ditambah/dihapus dipetakan menjadi event sistem.
channel_id_changeddapat memigrasikan kunci konfigurasi kanal saatconfigWritesdiaktifkan.- Metadata topik/tujuan kanal diperlakukan sebagai konteks tidak tepercaya dan dapat disuntikkan ke konteks perutean.
- Starter thread dan seeding konteks riwayat thread awal difilter oleh allowlist pengirim yang dikonfigurasi saat berlaku.
- Tindakan blok dan interaksi modal memancarkan event sistem
Slack interaction: ...terstruktur dengan field payload kaya:- tindakan blok: nilai yang dipilih, label, nilai picker, dan metadata
workflow_* - event modal
view_submissiondanview_closeddengan metadata kanal yang dirutekan dan input formulir
- tindakan blok: nilai yang dipilih, label, nilai picker, dan metadata
Referensi konfigurasi
Referensi utama: Referensi konfigurasi - Slack.Field Slack bernilai tinggi
Field Slack bernilai tinggi
- mode/autentikasi:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - akses DM:
dm.enabled,dmPolicy,allowFrom(legacy:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - toggle kompatibilitas:
dangerouslyAllowNameMatching(break-glass; tetap nonaktif kecuali diperlukan) - akses kanal:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - threading/riwayat:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - pengiriman:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - unfurl:
unfurlLinks,unfurlMediauntuk kontrol pratinjau tautan/mediachat.postMessage - ops/fitur:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Pemecahan masalah
Tidak ada balasan di kanal
Tidak ada balasan di kanal
Periksa, secara berurutan:
groupPolicy- allowlist kanal (
channels.slack.channels) — kunci harus berupa ID kanal (C12345678), bukan nama (#channel-name). Kunci berbasis nama gagal diam-diam di bawahgroupPolicy: "allowlist"karena perutean kanal secara default mengutamakan ID. Untuk menemukan ID: klik kanan kanal di Slack → Salin tautan — nilaiC...di akhir URL adalah ID kanal. requireMention- allowlist
usersper kanal
Pesan DM diabaikan
Pesan DM diabaikan
Periksa:
channels.slack.dm.enabledchannels.slack.dmPolicy(atau legacychannels.slack.dm.policy)- persetujuan pairing / entri allowlist
- Event DM Slack Assistant: log verbose yang menyebut
drop message_changedbiasanya berarti Slack mengirim event thread Assistant yang diedit tanpa pengirim manusia yang dapat dipulihkan dalam metadata pesan
Socket mode tidak terhubung
Socket mode tidak terhubung
Validasi token bot + app dan pengaktifan Socket Mode di pengaturan aplikasi Slack.Jika
openclaw channels status --probe --json menampilkan botTokenStatus atau
appTokenStatus: "configured_unavailable", akun Slack sudah
dikonfigurasi tetapi runtime saat ini tidak dapat me-resolve nilai yang
didukung SecretRef.Mode HTTP tidak menerima peristiwa
Mode HTTP tidak menerima peristiwa
Validasi:
- rahasia penandatanganan
- jalur webhook
- URL Permintaan Slack (Peristiwa + Interaktivitas + Perintah Slash)
webhookPathunik per akun HTTP
signingSecretStatus: "configured_unavailable" muncul di snapshot akun, akun HTTP sudah dikonfigurasi tetapi runtime saat ini tidak dapat menyelesaikan rahasia penandatanganan yang didukung SecretRef.Perintah native/slash tidak berjalan
Perintah native/slash tidak berjalan
Verifikasi apakah yang Anda maksud adalah:
- mode perintah native (
channels.slack.commands.native: true) dengan perintah slash yang sesuai terdaftar di Slack - atau mode perintah slash tunggal (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups serta daftar izin channel/pengguna.Referensi visi lampiran
Slack dapat melampirkan media yang diunduh ke giliran agen saat unduhan file Slack berhasil dan batas ukuran mengizinkan. File gambar dapat diteruskan melalui jalur pemahaman media atau langsung ke model balasan yang mendukung visi; file lain dipertahankan sebagai konteks file yang dapat diunduh, bukan diperlakukan sebagai input gambar.Jenis media yang didukung
| Jenis media | Sumber | Perilaku saat ini | Catatan |
|---|---|---|---|
| Gambar JPEG / PNG / GIF / WebP | URL file Slack | Diunduh dan dilampirkan ke giliran untuk penanganan yang mendukung visi | Batas per file: channels.slack.mediaMaxMb (default 20 MB) |
| File PDF | URL file Slack | Diunduh dan diekspos sebagai konteks file untuk alat seperti download-file atau pdf | Inbound Slack tidak mengonversi PDF menjadi input visi gambar secara otomatis |
| File lain | URL file Slack | Diunduh jika memungkinkan dan diekspos sebagai konteks file | File biner tidak diperlakukan sebagai input gambar |
| Balasan thread | File pemulai thread | File pesan root dapat dihidrasi sebagai konteks saat balasan tidak memiliki media langsung | Pemulai yang hanya berisi file menggunakan placeholder lampiran |
| Pesan multi-gambar | Beberapa file Slack | Setiap file dievaluasi secara independen | Pemrosesan Slack dibatasi hingga delapan file per pesan |
Pipeline inbound
Saat pesan Slack dengan lampiran file tiba:- OpenClaw mengunduh file dari URL privat Slack menggunakan token bot (
xoxb-...). - File ditulis ke penyimpanan media jika berhasil.
- Jalur media yang diunduh dan jenis konten ditambahkan ke konteks inbound.
- Jalur model/alat yang mendukung gambar dapat menggunakan lampiran gambar dari konteks tersebut.
- File non-gambar tetap tersedia sebagai metadata file atau referensi media untuk alat yang dapat menanganinya.
Pewarisan lampiran root thread
Saat pesan tiba dalam thread (memiliki indukthread_ts):
- Jika balasan itu sendiri tidak memiliki media langsung dan pesan root yang disertakan memiliki file, Slack dapat menghidrasi file root sebagai konteks pemulai thread.
- Lampiran balasan langsung lebih diutamakan daripada lampiran pesan root.
- Pesan root yang hanya memiliki file dan tanpa teks direpresentasikan dengan placeholder lampiran sehingga fallback tetap dapat menyertakan filenya.
Penanganan multi-lampiran
Saat satu pesan Slack berisi beberapa lampiran file:- Setiap lampiran diproses secara independen melalui pipeline media.
- Referensi media yang diunduh digabungkan ke dalam konteks pesan.
- Urutan pemrosesan mengikuti urutan file Slack dalam payload peristiwa.
- Kegagalan unduhan satu lampiran tidak memblokir lampiran lain.
Batas ukuran, unduhan, dan model
- Batas ukuran: Default 20 MB per file. Dapat dikonfigurasi melalui
channels.slack.mediaMaxMb. - Kegagalan unduhan: File yang tidak dapat disajikan oleh Slack, URL kedaluwarsa, file yang tidak dapat diakses, file yang terlalu besar, dan respons HTML auth/login Slack dilewati alih-alih dilaporkan sebagai format yang tidak didukung.
- Model visi: Analisis gambar menggunakan model balasan aktif saat model tersebut mendukung visi, atau model gambar yang dikonfigurasi di
agents.defaults.imageModel.
Batasan yang diketahui
| Skenario | Perilaku saat ini | Solusi sementara |
|---|---|---|
| URL file Slack kedaluwarsa | File dilewati; tidak ada kesalahan yang ditampilkan | Unggah ulang file di Slack |
| Model visi tidak dikonfigurasi | Lampiran gambar disimpan sebagai referensi media, tetapi tidak dianalisis sebagai gambar | Konfigurasikan agents.defaults.imageModel atau gunakan model balasan yang mendukung visi |
| Gambar sangat besar (> 20 MB secara default) | Dilewati sesuai batas ukuran | Tingkatkan channels.slack.mediaMaxMb jika Slack mengizinkan |
| Lampiran yang diteruskan/dibagikan | Teks dan media gambar/file yang dihosting Slack bersifat upaya terbaik | Bagikan ulang langsung di thread OpenClaw |
| Lampiran PDF | Disimpan sebagai konteks file/media, tidak otomatis dirutekan melalui visi gambar | Gunakan download-file untuk metadata file atau alat pdf untuk analisis PDF |
Dokumentasi terkait
- Pipeline pemahaman media
- Alat PDF
- Epic: #51349 — pengaktifan visi lampiran Slack
- Uji regresi: #51353
- Verifikasi langsung: #51354
Terkait
Pemasangan
Pasangkan pengguna Slack ke gateway.
Grup
Perilaku channel dan DM grup.
Perutean channel
Rutekan pesan inbound ke agen.
Keamanan
Model ancaman dan hardening.
Konfigurasi
Tata letak dan presedensi konfigurasi.
Perintah slash
Katalog dan perilaku perintah.