Slack-Integration einrichten
Diese Anleitung zeigt dir, wie du Slack mit einem Arbeitsbereich von Control Center verbindest, entweder indem Control Center die App anlegt oder indem du sie selbst baust.
Für einen geführten ersten Durchlauf siehe Slack mit deinem Arbeitsbereich verbinden.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Die Rolle
owneroderadminim Arbeitsbereich von Control Center — eine Chat-App zu verbinden ändert die Einstellungen des Arbeitsbereichs - Die Berechtigung, im Slack-Workspace Apps anzulegen und zu installieren
- Nichts muss öffentlich erreichbar sein: Die Verbindung geht nach außen (Socket Mode), der Server braucht also keinen eingehenden Port, keinen Tunnel und keine Domain
Drei Wege zur App
Abschnitt betitelt „Drei Wege zur App“| Weg | Du lieferst | Control Center erledigt |
|---|---|---|
| Geführt | Ein App-Konfigurationstoken (xoxe-…) |
Legt die App mit den richtigen Scopes, Ereignissen, Socket Mode und dem Slash-Befehl an; gibt dir die beiden Schritte, für die Slack keine API hat |
| In Slack erstellen | Nichts | Öffnet Slack mit derselben schon ausgefüllten Konfiguration; du wählst einen Workspace und bestätigst |
| Von Hand | Die Tokens der fertigen App | Prüft sie und verbindet |
Nur der geführte Weg lässt die App danach auch aus Control Center verwaltbar, und genau das schaltet Den Chatbot anpassen frei. Eine App über In Slack erstellen lässt sich später zu einer verwalteten machen, indem du im Verbindungsdialog ein Konfigurationstoken einfügst.
Es gibt absichtlich keine Schaltfläche „Control Centers Slack-App installieren“. Eine verteilte Slack-App zu installieren braucht ein gemeinsames Client-Secret (Slack hat kein PKCE), und Socket Mode verteilt die Ereignisse einer App zufällig über ihre Verbindungen — eine gemeinsame App würde die Nachrichten deines Arbeitsbereichs also an die Server anderer Leute liefern. Jeder Arbeitsbereich besitzt deshalb seine eigene App, und bei den drei Wegen geht es darum, wie wenig Arbeit dich das kostet.
Option A: Control Center die App anlegen lassen
Abschnitt betitelt „Option A: Control Center die App anlegen lassen“- Erzeuge auf api.slack.com/apps ein Paar App-Konfigurationstoken und kopiere das Refresh-Token (
xoxe-…) - Geh in Control Center zu Einstellungen → Arbeitsbereich → Allgemein und weiter zur Karte Chat-Brücken
- Klicke im Slack-Block auf App für mich erstellen
- Füge das Token ein, passe App-Name, Bot-Name, Beschreibungen und Slash-Befehl an, und klicke auf App erstellen
- Folge den beiden restlichen Schritten, die der Dialog zeigt, jeder ein Link nach Slack:
- Basic Information → App-Level Tokens: erzeuge ein Token mit dem Scope
connections:write(xapp-…) - Install App: installiere die App im Workspace und kopiere das Bot User OAuth Token (
xoxb-…)
- Basic Information → App-Level Tokens: erzeuge ein Token mit dem Scope
- Klicke auf Zugangsdaten einfügen und weiter mit Verbinden
Das Konfigurationstoken rotiert bei jeder Verwendung. Control Center speichert den rotierten Wert gleich mit, du musst es also nie wieder einfügen.
Option B: in Slack anlegen, vorausgefüllt
Abschnitt betitelt „Option B: in Slack anlegen, vorausgefüllt“Dieselbe App, kein Konfigurationstoken — Slack öffnet dir seinen eigenen Erstellbildschirm, das Manifest ist schon ausgefüllt.
- Geh in Control Center zu Einstellungen → Arbeitsbereich → Allgemein und weiter zur Karte Chat-Brücken
- Klicke im Slack-Block auf App für mich erstellen
- Passe App-Name, Bot-Name, Beschreibungen und Slash-Befehl an — die gehen mit dem Link mit
- Klicke auf In Slack erstellen. Dein Browser öffnet die Erstellseite von Slack mit der vorausgefüllten Konfiguration
- Wähle den Slack-Workspace und bestätige. Scopes, Ereignisse, Socket Mode und Slash-Befehl stimmen schon
- Zurück in Control Center folgst du den beiden restlichen Schritten, die der Dialog zeigt:
- Basic Information → App-Level Tokens: erzeuge ein Token mit dem Scope
connections:write(xapp-…) - Install App: installiere die App im Workspace und kopiere das Bot User OAuth Token (
xoxb-…)
- Basic Information → App-Level Tokens: erzeuge ein Token mit dem Scope
- Klicke auf Zugangsdaten einfügen und weiter mit Verbinden
Slack meldet nicht, welche App es angelegt hat, Control Center erfährt die App-ID also nicht, und die Links in Schritt 6 führen zu deiner App-Liste, nicht direkt zu dieser App. Bot anpassen braucht ein Konfigurationstoken.
Option C: die App selbst bauen
Abschnitt betitelt „Option C: die App selbst bauen“Lege eine App auf api.slack.com/apps an und richte sie so ein.
Socket Mode: schalte ihn ein und lass jede Request URL leer. Slack lehnt ein Manifest ab, das Socket Mode und Webhook-Zustellung zugleich verlangt.
Bot Token Scopes (OAuth & Permissions):
app_mentions:readassistant:writechannels:historychat:writecommandsgroups:historyim:historyusers:readusers:read.emailEvent Subscriptions (Bot-Ereignisse):
app_home_openedapp_mentionmessage.channelsmessage.groupsmessage.immessage.channels und message.groups sorgen dafür, dass eine Antwort in einem Slack-Thread ankommt, den die Brücke schon führt. Ohne sie trifft nur die erste Erwähnung ein.
Slash-Befehl: /cc (jeder Name geht — die Brücke nimmt den Befehl, mit dem sie zuletzt aufgerufen wurde).
App Home: aktiviere den Tab Messages und lass ihn beschreibbar, damit Mitglieder dem Bot eine Direktnachricht schicken können.
Tokens: erzeuge ein App-Level-Token mit connections:write, installiere dann die App und kopiere das Bot User OAuth Token.
Verbinden
Abschnitt betitelt „Verbinden“- Geh zu Einstellungen → Arbeitsbereich → Allgemein und weiter zur Karte Chat-Brücken
- Klicke im Slack-Block auf Slack verbinden
- Fülle die Felder aus:
| Feld | Wert | Wo es in Slack liegt |
|---|---|---|
| Bot-Token | xoxb-… |
OAuth & Permissions → Bot User OAuth Token |
| App-Token | xapp-… |
Basic Information → App-Level Tokens (connections:write) |
| App-Konfigurationstoken (optional) | xoxe-… |
Das Paar der App-Konfigurationstoken auf api.slack.com/apps |
Das Präfix jedes Werts wird auf beiden Seiten geprüft, bevor irgendetwas gesendet wird. Ein Wert im falschen Feld wird beiderseits mit demselben Satz abgelehnt.
- Klicke auf Slack verbinden
Control Center prüft das Bot-Token mit Slacks auth.test, bevor etwas gespeichert wird, sodass ein Tippfehler dir gemeldet wird, statt zu einem Socket zu werden, der still nie funktioniert. Das App-Level-Token lässt sich nur beweisen, indem der Socket aufgeht. Ein falsches erscheint deshalb einen Moment später als Verbindungsfehler in derselben Zeile.
Ohne das optionale App-Konfigurationstoken funktioniert die Verbindung — den Bot kannst du dann nicht aus Control Center bearbeiten.
Was das Verbinden bewirkt
Abschnitt betitelt „Was das Verbinden bewirkt“- Speichert die Zugangsdaten im eigenen Verzeichnis des Arbeitsbereichs, neben seiner Datenbank, nur für den Eigentümer lesbar. An einen Client gehen sie nie zurück
- Öffnet eine Socket-Mode-Verbindung für diesen Arbeitsbereich und empfängt Erwähnungen, Antworten in Slack-Threads, Direktnachrichten und Slash-Befehle
- Nimmt jeden Slack-Thread, den die Brücke schon führte, wieder auf, sodass eine neue Verbindung bestehende Unterhaltungen fortsetzt, statt sie hängen zu lassen
- Kostet nichts für Arbeitsbereiche ohne Chat-App: kein Socket, keine Timer, kein Verkehr
Die Slack-Zeile zeigt ein Status-Kennzeichen: Live, Verbinden…, Verbindungsfehler (daneben der Fehler von Slack selbst) oder Nicht verbunden. So prüfst du den Weg durch:
- Lade den Bot in Slack in einen Channel ein:
/invite @your-bot-name - Erwähne ihn mit einer Anfrage
- Eine Antwort im Slack-Thread erscheint, und in Control Center erscheint ein passender Bereich
Jedes Mitglied, das die Brücke nutzen will, verknüpft danach das eigene Konto — siehe Dein Slack-Konto verknüpfen.
Wie eine Antwort in Slack aussieht
Abschnitt betitelt „Wie eine Antwort in Slack aussieht“Über den gestreamten Worten sitzt eine gruppierte Karte mit einer Zeile je Schritt. Die Einrichtung ist eine Zeile, deren Titel von Working on it… über Cloning … zu Starting the agent… wechselt. Das Nachdenken fügt eine Zeile Thinking… an; ist der Schritt fertig, kann darauf ein kurzer Gedanke stehen. Jedes Tool ist eine eigene Zeile (Read lib/main.dart). Die Antwort kommt als gewöhnlicher Text unter der Karte. Die Karte gilt als abgeschlossen, wenn der Zug endet, und als fehlerhaft, wenn der Lauf fehlgeschlagen ist, unterbrochen wurde oder sein Zug-Limit erreicht hat.
Die Karte geht in dem Moment auf, in dem der Bot die Erwähnung annimmt — Working on it… —, damit der Slack-Thread nicht stumm bleibt, während der Bereich noch aufgebaut wird. Deine erste Erwähnung in einem Slack-Channel legt die Unterhaltung an, und dabei werden die Repos geklont, in denen der Agent arbeitet. Die Einrichtungszeile liest dann Cloning acme/widgets…, danach Setting up Reviewer…, dann Starting the agent…, und eine Zeile Thinking…, sobald der Agent wirklich nachdenkt. Bei einem großen Repository dauert diese erste Einrichtung eine Weile; an der Karte erkennst du, dass die Anfrage läuft und nicht liegen geblieben ist. Spätere Erwähnungen im selben Slack-Thread beginnen weiter mit Working on it… und überspringen die Klon-Schritte, weil der Bereich schon da ist.
Das Nachdenken als Textwand und die Ausgabe der Tools verlassen Control Center nie — der Gedanke auf der Zeile Thinking… ist eine kurze Zeile, kein Transkript. View in Control Center auf der Karte öffnet die ganze Unterhaltung in der Desktop-App — der Link geht an deinen eigenen Server von Control Center, und der übergibt den Browser an die App.
Passiert beim Klick nichts, ist der Server, der die Nachricht geschickt hat, von dem Rechner aus nicht erreichbar, auf dem du geklickt hast (ein Server, der nur auf Loopback hört, angeklickt von einem Smartphone, zum Beispiel), oder Control Center läuft dort nicht. Ein Server ohne erreichbare Adresse schickt eine Karte ohne Schaltfläche, statt einer, die ins Leere führt.
Ein Token rotieren
Abschnitt betitelt „Ein Token rotieren“Füge den neuen Wert im Verbindungsdialog neu ein und klicke auf Slack verbinden. Verbinden ersetzt die laufende Verbindung dieses Arbeitsbereichs, der Socket wird also mit den neuen Zugangsdaten neu aufgebaut.
Die beiden Pflicht-Tokens müssen bei jedem Verbinden da sein. Das optionale App-Konfigurationstoken behält seinen gespeicherten Wert, wenn du das Feld leer lässt, das Rotieren eines Bot-Tokens kostet dich also nicht die Möglichkeit, die App zu bearbeiten.
Trennen
Abschnitt betitelt „Trennen“Klicke in der Slack-Zeile auf Trennen (nur für Admins). Der Socket schließt sich, und die Zugangsdaten werden verworfen.
Verknüpfungen von Bereichen und Nutzern bleiben absichtlich erhalten: Dieselbe App neu zu verbinden stellt jeden angebundenen Slack-Thread wieder her. Es sind Zeilen des Arbeitsbereichs, das Löschen des Arbeitsbereichs entfernt sie also ohnehin.
Fehlersuche
Abschnitt betitelt „Fehlersuche“Die Zeile zeigt „Verbindungsfehler“
Abschnitt betitelt „Die Zeile zeigt „Verbindungsfehler““Lies den Fehler neben dem Kennzeichen. Ein abgelehntes Zugangsdatum (invalid_auth, not_authed, token_revoked, account_inactive) ist endgültig — die Brücke versucht es nicht weiter und wartet auf neue Tokens, denn ein widerrufenes Token endlos erneut zu versuchen bringt nur ein Rate-Limit. Füge die Tokens im Verbindungsdialog neu ein.
Ein Fehler missing_scope heißt, die App ist mit weniger Scopes installiert, als die Brücke braucht. Ergänze den fehlenden Scope, installiere die App in Slack neu und verbinde dann erneut.
Alles Vorübergehende (ein abgerissener Socket, eine kurze Störung bei Slack) verbindet sich von selbst neu, mit exponentiellem Backoff, gedeckelt bei 30 Sekunden, und die übliche Socket-Rotation von Slack setzt diesen Backoff nicht hoch.
Der Bot antwortet nicht auf eine Erwähnung
Abschnitt betitelt „Der Bot antwortet nicht auf eine Erwähnung“- Ist der Bot im Channel? Slack liefert Channel-Nachrichten nur an Apps, die Mitglied sind. Führe
/invite @your-bot-nameaus - Bist du verknüpft? Ein nicht verknüpftes Mitglied bekommt in diesem Slack-Thread eine Antwort, die erklärt, wie die Verknüpfung geht. Siehe Dein Slack-Konto verknüpfen
- Bist du Mitglied des Arbeitsbereichs mit einer schreibenden Rolle? Einem
vieweroderguestwird gesagt, die Rolle sei nur lesend. Die Brücke startet nie Arbeit für jemanden, den sie nicht zuordnen kann - Hat der Arbeitsbereich Agenten? Ohne Agenten wird die Nachricht gespeichert, aber niemand kann sie beantworten
Im Channel kommt eine Antwort, normale Nachrichten werden ignoriert
Abschnitt betitelt „Im Channel kommt eine Antwort, normale Nachrichten werden ignoriert“Das ist Absicht. Außerhalb einer Direktnachricht handelt die Brücke nur bei einer Nachricht, die den Bot erwähnt, oder bei einer Antwort in einem Slack-Thread, den sie schon führt. Alles andere ist das Gespräch anderer Leute.
Antworten kommen als eine große Nachricht statt als Stream
Abschnitt betitelt „Antworten kommen als eine große Nachricht statt als Stream“Die Zeile sagt „Live-Streaming ist für diese Slack-App aus — Antworten kommen als eine Nachricht.“ Die Streaming-Antworten von Slack brauchen die Funktion Agents & AI Apps in einem bezahlten Tarif; lehnt Slack sie ab, fragt die Brücke für den Rest der Lebensdauer dieser Verbindung nicht mehr an und postet stattdessen ganze Antworten. Verloren geht nichts — das volle Transkript liegt immer in Control Center.
Streaming braucht außerdem einen Anker im Slack-Thread. Eine Antwort ohne Slack-Thread, in den sie hineinwachsen kann, wird im Ganzen gepostet. Die Aufgabenkarte kommt so oder so an: Bei einer ganzen Antwort sitzt sie in derselben Nachricht, schon abgeschlossen.
Über der Antwort fehlt die Karte
Abschnitt betitelt „Über der Antwort fehlt die Karte“Die Aufgabenkarten von Slack gehören zur selben neuen Oberfläche Agents & AI Apps wie das Streaming, und Slack lehnt erst beim Aufruf ab. Tut es das, behält Control Center die Antwort und lässt die Karte für den Rest der Lebensdauer dieser Verbindung weg — eine Antwort ohne Statuszeile ist besser als eine Statuszeile ohne Antwort.
„Control Center braucht ein App-Konfigurationstoken, um den Bot zu bearbeiten“
Abschnitt betitelt „„Control Center braucht ein App-Konfigurationstoken, um den Bot zu bearbeiten““Die Zeile Bot anpassen ist deaktiviert, weil die Verbindung kein App-Konfigurationstoken hat. Das ist bei einer von Hand gebauten App oder einer App über In Slack erstellen zu erwarten — Slack hat Control Center nie gesagt, welche App es ist. Erzeuge auf api.slack.com/apps ein Token-Paar und verbinde neu, mit ausgefülltem Refresh-Token.
Eine lange Antwort ist abgeschnitten
Abschnitt betitelt „Eine lange Antwort ist abgeschnitten“Slack deckelt eine einzelne Nachricht bei 40.000 Zeichen, die Brücke schneidet deshalb bei 39.000 ab und hängt einen Verweis auf Control Center an — eine gekürzte Antwort ist besser als eine, die Slack rundweg ablehnt. Der volle Text steht immer im Transkript des Bereichs.