Bereit für den Produktionseinsatz für DMs und Kanäle über Slack-App-Integrationen. Der Standardmodus ist Socket Mode; HTTP Request URLs werden ebenfalls unterstützt.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.
Kopplung
Slack-DMs verwenden standardmäßig den Kopplungsmodus.
Slash-Befehle
Natives Befehlsverhalten und Befehlskatalog.
Kanal-Fehlerbehebung
Kanalübergreifende Diagnosen und Reparatur-Playbooks.
Socket Mode oder HTTP Request URLs auswählen
Beide Transporte sind produktionsreif und erreichen Funktionsgleichheit für Messaging, Slash-Befehle, App Home und Interaktivität. Wählen Sie nach Bereitstellungsform, nicht nach Funktionen.| Aspekt | Socket Mode (Standard) | HTTP Request URLs |
|---|---|---|
| Öffentliche Gateway-URL | Nicht erforderlich | Erforderlich (DNS, TLS, Reverse Proxy oder Tunnel) |
| Ausgehendes Netzwerk | Ausgehendes WSS zu wss-primary.slack.com muss erreichbar sein | Kein ausgehendes WS; nur eingehendes HTTPS |
| Benötigte Token | Bot-Token (xoxb-...) + App-Level Token (xapp-...) mit connections:write | Bot-Token (xoxb-...) + Signing Secret |
| Entwicklungs-Laptop / hinter Firewall | Funktioniert unverändert | Benötigt einen öffentlichen Tunnel (ngrok, Cloudflare Tunnel, Tailscale Funnel) oder einen Staging-Gateway |
| Horizontale Skalierung | Eine Socket-Mode-Sitzung pro App und Host; mehrere Gateways benötigen separate Slack-Apps | Zustandsloser POST-Handler; mehrere Gateway-Replikate können eine App hinter einem Load Balancer gemeinsam nutzen |
| Mehrere Konten auf einem Gateway | Unterstützt; jedes Konto öffnet sein eigenes WS | Unterstützt; jedes Konto benötigt einen eindeutigen webhookPath (Standard /slack/events), damit Registrierungen nicht kollidieren |
| Slash-Befehls-Transport | Wird über die WS-Verbindung zugestellt; slash_commands[].url wird ignoriert | Slack sendet POSTs an slash_commands[].url; das Feld ist erforderlich, damit der Befehl ausgelöst wird |
| Request-Signierung | Nicht verwendet (Authentifizierung erfolgt über das App-Level Token) | Slack signiert jede Anfrage; OpenClaw verifiziert mit signingSecret |
| Wiederherstellung nach Verbindungsabbruch | Slack SDK verbindet automatisch neu; das Pong-Timeout-Transport-Tuning des Gateway gilt | Keine dauerhafte Verbindung, die abbrechen kann; Wiederholungen erfolgen pro Anfrage durch Slack |
Wählen Sie Socket Mode für Hosts mit einem einzelnen Gateway, Entwicklungs-Laptops und On-Prem-Netzwerke, die ausgehend
*.slack.com erreichen können, aber kein eingehendes HTTPS annehmen können.Wählen Sie HTTP Request URLs, wenn Sie mehrere Gateway-Replikate hinter einem Load Balancer betreiben, wenn ausgehendes WSS blockiert ist, aber eingehendes HTTPS erlaubt ist, oder wenn Sie Slack-Webhooks bereits an einem Reverse Proxy terminieren.Schnelleinrichtung
- Socket Mode (Standard)
- HTTP Request URLs
Neue Slack-App erstellen
Öffnen Sie api.slack.com/apps → Create New App → From a manifest → wählen Sie Ihren Workspace aus → fügen Sie eines der folgenden Manifeste ein → Next → Create.Nachdem Slack die App erstellt hat:
Empfohlen entspricht dem vollständigen Funktionsumfang des gebündelten Slack-Plugins: App Home, Slash-Befehle, Dateien, Reaktionen, Pins, Gruppen-DMs und Emoji-/Benutzergruppen-Lesezugriff. Wählen Sie Minimal, wenn Workspace-Richtlinien Scopes einschränken — es deckt DMs, Kanal-/Gruppenverlauf, Erwähnungen und Slash-Befehle ab, lässt aber Dateien, Reaktionen, Pins, Gruppen-DM (
mpim:*), emoji:read und usergroups:read weg. Siehe Manifest- und Scope-Checkliste für Begründungen pro Scope und additive Optionen wie zusätzliche Slash-Befehle.- Basic Information → App-Level Tokens → Generate Token and Scopes: Fügen Sie
connections:writehinzu, speichern Sie und kopieren Sie den Wertxapp-.... - Install App → Install to Workspace: Kopieren Sie das Bot User OAuth Token
xoxb-....
Transportabstimmung für Socket Mode
OpenClaw setzt den Pong-Timeout des Slack-SDK-Clients für Socket Mode standardmäßig auf 15 Sekunden. Überschreiben Sie die Transporteinstellungen nur, wenn Sie Workspace- oder Host-spezifische Abstimmung benötigen:clientPingTimeout ist die Wartezeit auf Pong, nachdem das SDK einen Client-Ping gesendet hat; serverPingTimeout ist die Wartezeit auf Slack-Server-Pings. App-Nachrichten und Ereignisse bleiben Anwendungszustand, keine Signale für Transport-Liveness.
Manifest- und Scope-Checkliste
Das Basismanifest der Slack-App ist für Socket Mode und HTTP Request URLs identisch. Nur der Blocksettings (und die Slash-Befehls-url) unterscheidet sich.
Basemanifest (Socket Mode als Standard):
settings durch die HTTP-Variante und fügen jedem Slash-Befehl url hinzu. Öffentliche URL erforderlich:
Zusätzliche Manifest-Einstellungen
Stellen Sie unterschiedliche Funktionen bereit, die die obigen Standards erweitern. Das Standardmanifest aktiviert den Slack App Home-Tab Home und abonniertapp_home_opened. Wenn ein Workspace-Mitglied den Home-Tab öffnet, veröffentlicht OpenClaw mit views.publish eine sichere Standard-Home-Ansicht; es ist kein Konversations-Payload und keine private Konfiguration enthalten. Der Tab Messages bleibt für Slack-DMs aktiviert.
Optional native slash commands
Optional native slash commands
Mehrere native Slash-Befehle können anstelle eines einzelnen konfigurierten Befehls mit Feinabstimmung verwendet werden:
- Verwenden Sie
/agentstatusstatt/status, weil der Befehl/statusreserviert ist. - Es können höchstens 25 Slash-Befehle gleichzeitig verfügbar gemacht werden.
features.slash_commands durch eine Teilmenge der verfügbaren Befehle:- Socket Mode (default)
- HTTP Request URLs
Optionale Autorschafts-Scopes (Schreibvorgänge)
Optionale Autorschafts-Scopes (Schreibvorgänge)
Fügen Sie den Bot-Scope
chat:write.customize hinzu, wenn ausgehende Nachrichten die aktive Agent-Identität (benutzerdefinierter Benutzername und Symbol) statt der standardmäßigen Slack-App-Identität verwenden sollen.Wenn Sie ein Emoji-Symbol verwenden, erwartet Slack die Syntax :emoji_name:.Optionale Benutzer-Token-Scopes (Lesevorgänge)
Optionale Benutzer-Token-Scopes (Lesevorgänge)
Wenn Sie
channels.slack.userToken konfigurieren, sind typische Lese-Scopes:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(wenn Sie von Slack-Suchlesevorgängen abhängen)
Token-Modell
botToken+appTokensind für Socket Mode erforderlich.- HTTP-Modus erfordert
botToken+signingSecret. botToken,appToken,signingSecretunduserTokenakzeptieren Klartextzeichenfolgen oder SecretRef-Objekte.- Konfigurations-Token überschreiben den Env-Fallback.
- Der Env-Fallback
SLACK_BOT_TOKEN/SLACK_APP_TOKENgilt nur für das Standardkonto. userToken(xoxp-...) ist nur in der Konfiguration verfügbar (kein Env-Fallback) und verwendet standardmäßig schreibgeschütztes Verhalten (userTokenReadOnly: true).
- Die Slack-Kontoprüfung verfolgt pro Zugangsdaten die Felder
*Sourceund*Status(botToken,appToken,signingSecret,userToken). - Der Status ist
available,configured_unavailableodermissing. configured_unavailablebedeutet, dass das Konto über SecretRef oder eine andere nicht inline angegebene Secret-Quelle konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad den tatsächlichen Wert jedoch nicht auflösen konnte.- Im HTTP-Modus ist
signingSecretStatusenthalten; im Socket Mode ist das erforderliche PaarbotTokenStatus+appTokenStatus.
Aktionen und Gates
Slack-Aktionen werden überchannels.slack.actions.* gesteuert.
Verfügbare Aktionsgruppen im aktuellen Slack-Tooling:
| Gruppe | Standard |
|---|---|
| messages | aktiviert |
| reactions | aktiviert |
| pins | aktiviert |
| memberInfo | aktiviert |
| emojiList | aktiviert |
send, upload-file, download-file, read, edit, delete, pin, unpin, list-pins, member-info und emoji-list. download-file akzeptiert Slack-Datei-IDs, die in Platzhaltern für eingehende Dateien angezeigt werden, und gibt Bildvorschauen für Bilder oder lokale Dateimetadaten für andere Dateitypen zurück.
Zugriffskontrolle und Routing
- DM-Richtlinie
- Channel-Richtlinie
- Erwähnungen und Channel-Benutzer
channels.slack.dmPolicy steuert den DM-Zugriff. channels.slack.allowFrom ist die kanonische DM-Allowlist.pairing(Standard)allowlistopen(erfordert, dasschannels.slack.allowFrom"*"enthält)disabled
dm.enabled(standardmäßig true)channels.slack.allowFromdm.allowFrom(Legacy)dm.groupEnabled(Gruppen-DMs standardmäßig false)dm.groupChannels(optionale MPIM-Allowlist)
channels.slack.accounts.default.allowFromgilt nur für das Kontodefault.- Benannte Konten erben
channels.slack.allowFrom, wenn ihr eigenesallowFromnicht gesetzt ist. - Benannte Konten erben
channels.slack.accounts.default.allowFromnicht.
channels.slack.dm.policy und channels.slack.dm.allowFrom werden aus Kompatibilitätsgründen weiterhin gelesen. openclaw doctor --fix migriert sie zu dmPolicy und allowFrom, wenn dies ohne Änderung des Zugriffs möglich ist.Pairing in DMs verwendet openclaw pairing approve slack <code>.Threads, Sitzungen und Antwort-Tags
- DMs routen als
direct; Channels alschannel; MPIMs alsgroup. - Slack-Routenbindungen akzeptieren rohe Peer-IDs sowie Slack-Zielformen wie
channel:C12345678,user:U12345678und<@U12345678>. - Mit dem Standardwert
session.dmScope=mainwerden Slack-DMs auf die Hauptsitzung des Agenten zusammengeführt. - Channel-Sitzungen:
agent:<agentId>:slack:channel:<channelId>. - Thread-Antworten können gegebenenfalls Thread-Sitzungssuffixe (
:thread:<threadTs>) erstellen. - In Channels, in denen OpenClaw Top-Level-Nachrichten ohne explizite Erwähnung verarbeitet, routet ein nicht auf
offgesetzterreplyToModejede verarbeitete Root-Nachricht nachagent:<agentId>:slack:channel:<channelId>:thread:<rootTs>, sodass der sichtbare Slack-Thread ab dem ersten Turn einer OpenClaw-Sitzung zugeordnet wird. - Standard für
channels.slack.thread.historyScopeistthread; Standard fürthread.inheritParentistfalse. channels.slack.thread.initialHistoryLimitsteuert, wie viele vorhandene Thread-Nachrichten abgerufen werden, wenn eine neue Thread-Sitzung startet (Standard20; setzen Sie0, um dies zu deaktivieren).channels.slack.thread.requireExplicitMention(Standardfalse): Wenntrue, werden implizite Thread-Erwähnungen unterdrückt, sodass der Bot innerhalb von Threads nur auf explizite@bot-Erwähnungen antwortet, selbst wenn der Bot bereits am Thread beteiligt war. Ohne dies umgehen Antworten in einem Thread mit Bot-Beteiligung dasrequireMention-Gating.
channels.slack.replyToMode:off|first|all|batched(Standardoff)channels.slack.replyToModeByChatType: prodirect|group|channel- Legacy-Fallback für direkte Chats:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message-Tool setzen Sie replyBroadcast: true mit action: "send" und threadId oder replyTo, um Slack anzuweisen, die Thread-Antwort zusätzlich im übergeordneten Channel zu broadcasten. Dies wird dem Slack-Flag chat.postMessage reply_broadcast zugeordnet und wird nur für Text- oder Block-Kit-Sendungen unterstützt, nicht für Medien-Uploads.
Wenn ein message-Tool-Aufruf innerhalb eines Slack-Threads ausgeführt wird und denselben Channel adressiert, erbt OpenClaw normalerweise den aktuellen Slack-Thread gemäß replyToMode. Setzen Sie topLevel: true bei action: "send" oder action: "upload-file", um stattdessen eine neue Nachricht im übergeordneten Channel zu erzwingen. threadId: null wird als dieselbe Top-Level-Abwahl akzeptiert.
replyToMode="off" deaktiviert alle Antwort-Threads in Slack, einschließlich expliziter [[reply_to_*]]-Tags. Das unterscheidet sich von Telegram, wo explizite Tags im Modus "off" weiterhin berücksichtigt werden. Slack-Threads verbergen Nachrichten im Channel, während Telegram-Antworten inline sichtbar bleiben.Bestätigungsreaktionen
ackReaction sendet ein Bestätigungs-Emoji, während OpenClaw eine eingehende Nachricht verarbeitet.
Auflösungsreihenfolge:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- Fallback auf Agent-Identitäts-Emoji (
agents.list[].identity.emoji, sonst ”👀”)
- Slack erwartet Shortcodes (zum Beispiel
"eyes"). - Verwenden Sie
"", um die Reaktion für das Slack-Konto oder global zu deaktivieren.
Text-Streaming
channels.slack.streaming steuert das Live-Vorschauverhalten:
off: Live-Vorschau-Streaming deaktivieren.partial(Standard): Vorschautext durch die neueste Teilausgabe ersetzen.block: fragmentierte Vorschau-Updates anhängen.progress: Fortschrittsstatustext während der Generierung anzeigen und anschließend den endgültigen Text senden.streaming.preview.toolProgress: Wenn die Entwurfsvorschau aktiv ist, Tool-/Fortschrittsupdates in dieselbe bearbeitete Vorschaunachricht routen (Standard:true). Setzen Siefalse, um separate Tool-/Fortschrittsnachrichten beizubehalten.streaming.preview.commandText/streaming.progress.commandText: Aufstatussetzen, um kompakte Tool-Fortschrittszeilen beizubehalten und rohen Befehls-/Exec-Text auszublenden (Standard:raw).
channels.slack.streaming.nativeTransport steuert natives Slack-Text-Streaming, wenn channels.slack.streaming.mode partial ist (Standard: true).
- Ein Antwort-Thread muss verfügbar sein, damit natives Text-Streaming und der Slack-Assistenten-Threadstatus angezeigt werden. Die Thread-Auswahl folgt weiterhin
replyToMode. - Channel-, Gruppenchat- und Top-Level-DM-Wurzeln können weiterhin die normale Entwurfsvorschau verwenden, wenn natives Streaming nicht verfügbar ist oder kein Antwort-Thread vorhanden ist.
- Top-Level-Slack-DMs bleiben standardmäßig außerhalb von Threads, daher zeigen sie keine native Slack-Stream-/Statusvorschau im Thread-Stil; OpenClaw postet und bearbeitet stattdessen eine Entwurfsvorschau in der DM.
- Medien und Nicht-Text-Payloads fallen auf die normale Zustellung zurück.
- Medien-/Fehler-Finals brechen ausstehende Vorschau-Bearbeitungen ab; geeignete Text-/Block-Finals werden nur ausgegeben, wenn sie die Vorschau direkt bearbeiten können.
- Wenn Streaming mitten in einer Antwort fehlschlägt, fällt OpenClaw für die verbleibenden Payloads auf die normale Zustellung zurück.
channels.slack.streamMode(replace | status_final | append) ist ein Legacy-Laufzeitalias fürchannels.slack.streaming.mode.- Der boolesche Wert
channels.slack.streamingist ein Legacy-Laufzeitalias fürchannels.slack.streaming.modeundchannels.slack.streaming.nativeTransport. - Das Legacy-
channels.slack.nativeStreamingist ein Laufzeitalias fürchannels.slack.streaming.nativeTransport. - Führen Sie
openclaw doctor --fixaus, um persistierte Slack-Streaming-Konfigurationen auf die kanonischen Schlüssel umzuschreiben.
Fallback für Tipp-Reaktion
typingReaction fügt der eingehenden Slack-Nachricht eine temporäre Reaktion hinzu, während OpenClaw eine Antwort verarbeitet, und entfernt sie wieder, wenn der Lauf abgeschlossen ist. Das ist vor allem außerhalb von Thread-Antworten nützlich, die eine standardmäßige Statusanzeige „tippt gerade…“ verwenden.
Auflösungsreihenfolge:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack erwartet Shortcodes (zum Beispiel
"hourglass_flowing_sand"). - Die Reaktion erfolgt nach bestem Aufwand, und die Bereinigung wird automatisch versucht, nachdem der Antwort- oder Fehlerpfad abgeschlossen ist.
Medien, Chunking und Zustellung
Eingehende Anhänge
Eingehende Anhänge
Slack-Dateianhänge werden von Slack-gehosteten privaten URLs heruntergeladen (token-authentifizierter Anfragefluss) und in den Medienspeicher geschrieben, wenn der Abruf erfolgreich ist und Größenlimits es zulassen. Datei-Platzhalter enthalten die Slack-
fileId, damit Agenten die Originaldatei mit download-file abrufen können.Downloads verwenden begrenzte Leerlauf- und Gesamt-Timeouts. Wenn das Abrufen von Slack-Dateien stockt oder fehlschlägt, verarbeitet OpenClaw die Nachricht weiter und fällt auf den Datei-Platzhalter zurück.Die Laufzeit-Größenobergrenze für eingehende Dateien ist standardmäßig 20MB, sofern sie nicht durch channels.slack.mediaMaxMb überschrieben wird.Ausgehender Text und Dateien
Ausgehender Text und Dateien
- Text-Chunks verwenden
channels.slack.textChunkLimit(Standard 4000) channels.slack.chunkMode="newline"aktiviert absatzpriorisierte Aufteilung- Dateiübertragungen verwenden Slack-Upload-APIs und können Thread-Antworten (
thread_ts) enthalten - Die Obergrenze für ausgehende Medien folgt
channels.slack.mediaMaxMb, wenn konfiguriert; andernfalls verwenden Channel-Sendungen MIME-Art-Standardwerte aus der Medienpipeline
Zustellungsziele
Zustellungsziele
Bevorzugte explizite Ziele:
user:<id>für DMschannel:<id>für Channels
Befehle und Slash-Verhalten
Slash-Befehle erscheinen in Slack entweder als ein einzelner konfigurierter Befehl oder als mehrere native Befehle. Konfigurieren Siechannels.slack.slashCommand, um Befehlsstandardwerte zu ändern:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true oder commands.native: true in globalen Konfigurationen aktiviert.
- Der native Befehls-Automodus ist für Slack aus, sodass
commands.native: "auto"native Slack-Befehle nicht aktiviert.
- bis zu 5 Optionen: Button-Blöcke
- 6-100 Optionen: statisches Auswahlmenü
- mehr als 100 Optionen: externe Auswahl mit asynchroner Optionsfilterung, wenn Interaktivitäts-Options-Handler verfügbar sind
- überschrittene Slack-Limits: codierte Optionswerte fallen auf Buttons zurück
agent:<agentId>:slack:slash:<userId> und leiten Befehlsausführungen weiterhin mit CommandTargetSessionKey an die Ziel-Konversationssitzung weiter.
Interaktive Antworten
Slack kann von Agenten erstellte interaktive Antwort-Steuerelemente rendern, aber diese Funktion ist standardmäßig deaktiviert. Global aktivieren:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- Dies ist eine Slack-spezifische Benutzeroberfläche. Andere Kanäle übersetzen Slack Block Kit-Direktiven nicht in ihre eigenen Schaltflächensysteme.
- Die interaktiven Callback-Werte sind von OpenClaw generierte opake Tokens, keine direkt vom Agenten verfassten Werte.
- Wenn generierte interaktive Blöcke die Slack Block Kit-Grenzwerte überschreiten würden, fällt OpenClaw auf die ursprüngliche Textantwort zurück, statt eine ungültige Blocks-Payload zu senden.
Exec-Genehmigungen in Slack
Slack kann als nativer Genehmigungsclient mit interaktiven Schaltflächen und Interaktionen dienen, statt auf die Weboberfläche oder das Terminal zurückzufallen.- Exec-Genehmigungen verwenden
channels.slack.execApprovals.*für natives DM-/Kanal-Routing. - Plugin-Genehmigungen können weiterhin über dieselbe Slack-native Schaltflächenoberfläche aufgelöst werden, wenn die Anfrage bereits in Slack ankommt und die Art der Genehmigungs-ID
plugin:ist. - Die Autorisierung der Genehmigenden wird weiterhin erzwungen: Nur Benutzer, die als Genehmigende identifiziert wurden, können Anfragen über Slack genehmigen oder ablehnen.
interactivity in Ihren Slack-App-Einstellungen aktiviert ist, werden Genehmigungsaufforderungen direkt in der Unterhaltung als Block Kit-Schaltflächen gerendert.
Wenn diese Schaltflächen vorhanden sind, sind sie die primäre Genehmigungs-UX; OpenClaw
sollte nur dann einen manuellen /approve-Befehl einfügen, wenn das Tool-Ergebnis sagt, dass Chat-
Genehmigungen nicht verfügbar sind oder die manuelle Genehmigung der einzige Weg ist.
Konfigurationspfad:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(optional; fällt nach Möglichkeit aufcommands.ownerAllowFromzurück)channels.slack.execApprovals.target(dm|channel|both, Standard:dm)agentFilter,sessionFilter
enabled nicht gesetzt oder "auto" ist und mindestens ein
Genehmigender aufgelöst wird. Setzen Sie enabled: false, um Slack ausdrücklich als nativen Genehmigungsclient zu deaktivieren.
Setzen Sie enabled: true, um native Genehmigungen zu erzwingen, wenn Genehmigende aufgelöst werden.
Standardverhalten ohne explizite Slack-Exec-Genehmigungskonfiguration:
approvals.exec-Forwarding ist davon getrennt. Verwenden Sie es nur, wenn Exec-Genehmigungsaufforderungen auch
an andere Chats oder explizite Out-of-Band-Ziele weitergeleitet werden müssen. Gemeinsames approvals.plugin-Forwarding ist ebenfalls
getrennt; Slack-native Schaltflächen können Plugin-Genehmigungen weiterhin auflösen, wenn diese Anfragen bereits
in Slack ankommen.
Gleich-Chat-/approve funktioniert auch in Slack-Kanälen und DMs, die bereits Befehle unterstützen. Siehe Exec-Genehmigungen für das vollständige Genehmigungs-Forwarding-Modell.
Ereignisse und Betriebsverhalten
- Nachrichtenbearbeitungen/-löschungen werden Systemereignissen zugeordnet.
- Thread-Broadcasts (Thread-Antworten mit „Also send to channel“) werden als normale Benutzernachrichten verarbeitet.
- Ereignisse zum Hinzufügen/Entfernen von Reaktionen werden Systemereignissen zugeordnet.
- Ereignisse zu Mitgliederbeitritt/-austritt, Kanalerstellung/-umbenennung und Pin-Hinzufügen/-Entfernen werden Systemereignissen zugeordnet.
channel_id_changedkann Kanal-Konfigurationsschlüssel migrieren, wennconfigWritesaktiviert ist.- Metadaten zu Kanalthema/-zweck werden als nicht vertrauenswürdiger Kontext behandelt und können in den Routing-Kontext injiziert werden.
- Thread-Starter und anfängliches Seeding des Thread-Verlaufskontexts werden, sofern zutreffend, nach konfigurierten Sender-Allowlists gefiltert.
- Blockaktionen und modale Interaktionen geben strukturierte Systemereignisse vom Typ
Slack interaction: ...mit umfangreichen Payload-Feldern aus:- Blockaktionen: ausgewählte Werte, Labels, Picker-Werte und
workflow_*-Metadaten - modale
view_submission- undview_closed-Ereignisse mit gerouteten Kanalmetadaten und Formulareingaben
- Blockaktionen: ausgewählte Werte, Labels, Picker-Werte und
Konfigurationsreferenz
Primäre Referenz: Konfigurationsreferenz - Slack.Slack-Felder mit hoher Aussagekraft
Slack-Felder mit hoher Aussagekraft
- Modus/Auth:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - DM-Zugriff:
dm.enabled,dmPolicy,allowFrom(veraltet:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - Kompatibilitätsschalter:
dangerouslyAllowNameMatching(Break-Glass; deaktiviert lassen, sofern nicht erforderlich) - Kanalzugriff:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - Threading/Verlauf:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - Zustellung:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - Unfurls:
unfurlLinks,unfurlMediazur Steuerung von Link-/Medienvorschauen fürchat.postMessage - Ops/Funktionen:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
Fehlerbehebung
Keine Antworten in Kanälen
Keine Antworten in Kanälen
Prüfen Sie der Reihe nach:
groupPolicy- Kanal-Allowlist (
channels.slack.channels) — Schlüssel müssen Kanal-IDs sein (C12345678), keine Namen (#channel-name). Namensbasierte Schlüssel schlagen untergroupPolicy: "allowlist"stillschweigend fehl, weil Kanal-Routing standardmäßig zuerst per ID erfolgt. So finden Sie eine ID: Rechtsklicken Sie in Slack auf den Kanal → Copy link — derC...-Wert am Ende der URL ist die Kanal-ID. requireMention- kanalbezogene
users-Allowlist
DM-Nachrichten ignoriert
DM-Nachrichten ignoriert
Prüfen Sie:
channels.slack.dm.enabledchannels.slack.dmPolicy(oder veraltetchannels.slack.dm.policy)- Pairing-Genehmigungen / Allowlist-Einträge
- Slack Assistant-DM-Ereignisse: Ausführliche Logs mit
drop message_changedbedeuten in der Regel, dass Slack ein bearbeitetes Assistant-Thread-Ereignis ohne einen wiederherstellbaren menschlichen Absender in den Nachrichtenmetadaten gesendet hat
Socket Mode verbindet nicht
Socket Mode verbindet nicht
Validieren Sie Bot- und App-Tokens sowie die Aktivierung von Socket Mode in den Slack-App-Einstellungen.Wenn
openclaw channels status --probe --json botTokenStatus oder
appTokenStatus: "configured_unavailable" anzeigt, ist das Slack-Konto
konfiguriert, aber die aktuelle Runtime konnte den SecretRef-gestützten
Wert nicht auflösen.HTTP-Modus empfängt keine Ereignisse
HTTP-Modus empfängt keine Ereignisse
Validieren Sie:
- Signatur-Secret
- Webhook-Pfad
- Slack Request URLs (Events + Interactivity + Slash Commands)
- eindeutiger
webhookPathpro HTTP-Konto
signingSecretStatus: "configured_unavailable" in Konto-Snapshots
erscheint, ist das HTTP-Konto konfiguriert, aber die aktuelle Runtime konnte
das SecretRef-gestützte Signatur-Secret nicht auflösen.Native-/Slash-Befehle werden nicht ausgelöst
Native-/Slash-Befehle werden nicht ausgelöst
Prüfen Sie, ob Sie Folgendes beabsichtigt haben:
- nativer Befehlsmodus (
channels.slack.commands.native: true) mit passenden in Slack registrierten Slash-Befehlen - oder einzelner Slash-Befehlsmodus (
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups sowie Kanal-/Benutzer-Allowlists.Referenz für Anhang-Vision
Slack kann heruntergeladene Medien an den Agent-Turn anhängen, wenn Slack-Dateidownloads erfolgreich sind und Größenlimits dies zulassen. Bilddateien können über den Pfad für Medienverständnis oder direkt an ein antwortendes vision-fähiges Modell übergeben werden; andere Dateien bleiben als herunterladbarer Dateikontext erhalten, statt als Bildeingabe behandelt zu werden.Unterstützte Medientypen
| Medientyp | Quelle | Aktuelles Verhalten | Hinweise |
|---|---|---|---|
| JPEG-/PNG-/GIF-/WebP-Bilder | Slack-Datei-URL | Wird heruntergeladen und für vision-fähige Verarbeitung an den Turn angehängt | Limit pro Datei: channels.slack.mediaMaxMb (Standard 20 MB) |
| PDF-Dateien | Slack-Datei-URL | Wird heruntergeladen und als Dateikontext für Tools wie download-file oder pdf bereitgestellt | Slack-Inbound konvertiert PDFs nicht automatisch in Bild-Vision-Eingaben |
| Andere Dateien | Slack-Datei-URL | Wird nach Möglichkeit heruntergeladen und als Dateikontext bereitgestellt | Binärdateien werden nicht als Bildeingabe behandelt |
| Thread-Antworten | Dateien des Thread-Starters | Dateien der Root-Nachricht können als Kontext hydratisiert werden, wenn die Antwort keine direkten Medien enthält | Starter nur mit Dateien verwenden einen Anhang-Platzhalter |
| Nachrichten mit mehreren Bildern | Mehrere Slack-Dateien | Jede Datei wird unabhängig ausgewertet | Slack-Verarbeitung ist auf acht Dateien pro Nachricht begrenzt |
Inbound-Pipeline
Wenn eine Slack-Nachricht mit Dateianhängen eingeht:- OpenClaw lädt die Datei über die private URL von Slack mit dem Bot-Token (
xoxb-...) herunter. - Die Datei wird bei Erfolg in den Medienspeicher geschrieben.
- Heruntergeladene Medienpfade und Inhaltstypen werden dem Inbound-Kontext hinzugefügt.
- Bildfähige Modell-/Tool-Pfade können Bildanhänge aus diesem Kontext verwenden.
- Nicht-Bilddateien bleiben als Dateimetadaten oder Medienreferenzen für Tools verfügbar, die sie verarbeiten können.
Vererbung von Thread-Root-Anhängen
Wenn eine Nachricht in einem Thread eingeht (mit einemthread_ts-Parent):
- Wenn die Antwort selbst keine direkten Medien enthält und die enthaltene Root-Nachricht Dateien hat, kann Slack die Root-Dateien als Thread-Starter-Kontext hydratisieren.
- Direkte Antwortanhänge haben Vorrang vor Anhängen der Root-Nachricht.
- Eine Root-Nachricht, die nur Dateien und keinen Text enthält, wird mit einem Anhang-Platzhalter dargestellt, damit der Fallback ihre Dateien dennoch einschließen kann.
Verarbeitung mehrerer Anhänge
Wenn eine einzelne Slack-Nachricht mehrere Dateianhänge enthält:- Jeder Anhang wird unabhängig durch die Medien-Pipeline verarbeitet.
- Heruntergeladene Medienreferenzen werden im Nachrichtenkontext zusammengeführt.
- Die Verarbeitungsreihenfolge folgt der Dateireihenfolge von Slack in der Event-Payload.
- Ein Fehler beim Download eines Anhangs blockiert die anderen nicht.
Größen-, Download- und Modelllimits
- Größenlimit: Standardmäßig 20 MB pro Datei. Konfigurierbar über
channels.slack.mediaMaxMb. - Downloadfehler: Dateien, die Slack nicht bereitstellen kann, abgelaufene URLs, nicht zugängliche Dateien, zu große Dateien und Slack-Auth-/Login-HTML-Antworten werden übersprungen, statt als nicht unterstützte Formate gemeldet zu werden.
- Vision-Modell: Die Bildanalyse verwendet das aktive Antwortmodell, wenn es Vision unterstützt, oder das unter
agents.defaults.imageModelkonfigurierte Bildmodell.
Bekannte Einschränkungen
| Szenario | Aktuelles Verhalten | Workaround |
|---|---|---|
| Abgelaufene Slack-Datei-URL | Datei wird übersprungen; es wird kein Fehler angezeigt | Laden Sie die Datei erneut in Slack hoch |
| Vision-Modell nicht konfiguriert | Bildanhänge werden als Medienreferenzen gespeichert, aber nicht als Bilder analysiert | Konfigurieren Sie agents.defaults.imageModel oder verwenden Sie ein vision-fähiges Antwortmodell |
| Sehr große Bilder (> 20 MB standardmäßig) | Wird gemäß Größenlimit übersprungen | Erhöhen Sie channels.slack.mediaMaxMb, wenn Slack dies zulässt |
| Weitergeleitete/geteilte Anhänge | Text und von Slack gehostete Bild-/Dateimedien werden nach bestem Aufwand verarbeitet | Teilen Sie sie direkt erneut im OpenClaw-Thread |
| PDF-Anhänge | Werden als Datei-/Medienkontext gespeichert, nicht automatisch durch Bild-Vision geleitet | Verwenden Sie download-file für Dateimetadaten oder das pdf-Tool für die PDF-Analyse |
Zugehörige Dokumentation
- Pipeline für Medienverständnis
- PDF-Tool
- Epic: #51349 — Aktivierung von Slack-Anhang-Vision
- Regressionstests: #51353
- Live-Verifizierung: #51354
Verwandte Themen
Pairing
Koppeln Sie einen Slack-Benutzer mit dem Gateway.
Gruppen
Verhalten von Kanälen und Gruppen-DMs.
Kanal-Routing
Leiten Sie eingehende Nachrichten an Agents weiter.
Sicherheit
Bedrohungsmodell und Härtung.
Konfiguration
Konfigurationslayout und Priorität.
Slash-Befehle
Befehlskatalog und Verhalten.