Ga naar inhoud

Slack-integratie instellen

Deze gids laat je zien hoe je Slack met een Control Center-werkruimte verbindt, door Control Center de app te laten maken of door hem zelf te bouwen.

Voor een begeleide eerste kennismaking zie Slack koppelen aan je werkruimte.

  • De rol owner of admin in de Control Center-werkruimte — een chat-app verbinden is een wijziging van de werkruimte-instellingen
  • De bevoegdheid om apps te maken en te installeren in de Slack-workspace
  • Niets hoeft publiek bereikbaar te zijn: de verbinding gaat naar buiten (Socket Mode), dus de server heeft geen inkomende poort, tunnel of domein nodig
Weg Jij levert Control Center doet
Begeleid Een app-configuratietoken (xoxe-…) Maakt de app met de juiste scopes, gebeurtenissen, Socket Mode en het slash-commando; geeft je de twee stappen waarvoor Slack geen API heeft
Maken in Slack Niets Opent Slack met dezelfde configuratie al ingevuld; jij kiest een workspace en bevestigt
Handmatig De tokens van de afgeronde app Controleert ze en verbindt

Alleen het begeleide traject laat de app ook beheerbaar vanuit Control Center, en dat is wat De chatbot aanpassen mogelijk maakt. Een app die je via Maken in Slack hebt gemaakt, kun je later promoveren naar een beheerde app door een configuratietoken in het verbindingsdialoogvenster te plakken.

Er is bewust geen knop “Control Centers Slack-app installeren”. Een gedistribueerde Slack-app installeren vereist een gedeeld client-secret (Slack heeft geen PKCE), en Socket Mode verdeelt de gebeurtenissen van een app willekeurig over zijn verbindingen — één gedeelde app zou de berichten van jouw werkruimte dus bij de servers van anderen afleveren. Elke werkruimte heeft daarom zijn eigen app, en bij deze drie trajecten gaat het erom hoe weinig werk dat je kost.

  1. Genereer op api.slack.com/apps een paar app-configuratietokens en kopieer het refresh-token (xoxe-…)
  2. Ga in Control Center naar Instellingen → Werkruimte → Algemeen en scrol naar de kaart Chatbruggen
  3. Klik in het Slack-blok op Maak de app voor mij
  4. Plak het token, pas de appnaam, botnaam, beschrijvingen en het slash-commando aan, en klik op App maken
  5. Volg de twee resterende stappen die het dialoogvenster toont, elk als een link naar Slack:
    • Basic Information → App-Level Tokens: genereer een token met de scope connections:write (xapp-…)
    • Install App: installeer de app in de Slack-workspace en kopieer het Bot User OAuth Token (xoxb-…)
  6. Klik op Inloggegevens plakken en ga verder met Verbinden

Het configuratietoken roteert bij elk gebruik. Control Center slaat de geroteerde waarde meteen op, dus je hoeft hem nooit meer te plakken.

Optie B: hem in Slack maken, vooraf ingevuld

Sectie getiteld “Optie B: hem in Slack maken, vooraf ingevuld”

Dezelfde app, zonder configuratietoken — Slack opent zijn eigen aanmaakscherm met het hele manifest al ingevuld.

  1. Ga in Control Center naar Instellingen → Werkruimte → Algemeen en scrol naar de kaart Chatbruggen
  2. Klik in het Slack-blok op Maak de app voor mij
  3. Pas de appnaam, botnaam, beschrijvingen en het slash-commando aan — die gaan mee met de link
  4. Klik op Maken in Slack. Je browser opent de app-aanmaakpagina van Slack met de configuratie al ingevuld
  5. Kies de Slack-workspace en bevestig. De scopes, gebeurtenissen, Socket Mode en het slash-commando staan al goed
  6. Volg terug in Control Center de twee resterende stappen die het dialoogvenster toont:
    • Basic Information → App-Level Tokens: genereer een token met de scope connections:write (xapp-…)
    • Install App: installeer de app in de Slack-workspace en kopieer het Bot User OAuth Token (xoxb-…)
  7. Klik op Inloggegevens plakken en ga verder met Verbinden

Slack meldt niet welke app het heeft gemaakt, dus Control Center leert het app-id niet kennen en de links in stap 6 gaan naar je app-lijst in plaats van direct naar die app. Bot aanpassen heeft een configuratietoken nodig.

Maak een app aan op api.slack.com/apps en richt hem als volgt in.

Socket Mode: schakel het in en laat elke request-URL leeg. Slack weigert een manifest dat zowel Socket Mode als webhookbezorging vraagt.

Bot-token-scopes (OAuth & Permissions):

app_mentions:read
assistant:write
channels:history
chat:write
commands
groups:history
im:history
users:read
users:read.email

Gebeurtenisabonnementen (botgebeurtenissen):

app_home_opened
app_mention
message.channels
message.groups
message.im

message.channels en message.groups zijn wat een antwoord in een Slack-thread die al aan de brug hangt laat werken. Zonder deze twee komt alleen de eerste vermelding ooit aan.

Slash-commando: /cc (elke naam werkt — de brug gebruikt het commando waarmee hij het laatst is aangeroepen).

App Home: schakel het tabblad Messages in en laat het beschrijfbaar, zodat leden de bot een DM kunnen sturen.

Tokens: genereer een app-token met connections:write, installeer daarna de app en kopieer het OAuth-token van de botgebruiker.

  1. Ga naar Instellingen → Werkruimte → Algemeen en scrol naar de kaart Chatbruggen
  2. Klik in het Slack-blok op Slack verbinden
  3. Vul de velden in:
Veld Waarde Waar het in Slack staat
Bot-token xoxb-… OAuth & Permissions → Bot User OAuth Token
App-token xapp-… Basic Information → App-Level Tokens (connections:write)
App-configuratietoken (optioneel) xoxe-… Het paar app-configuratietokens op api.slack.com/apps

Het voorvoegsel van elke waarde wordt aan beide kanten gecontroleerd voordat er iets wordt verstuurd, dus een waarde die in het verkeerde vak is geplakt, wordt hoe dan ook met dezelfde zin geweigerd.

  1. Klik op Verbinden

Control Center controleert het bot-token met auth.test van Slack voordat er iets wordt opgeslagen, zodat een typefout aan jou wordt gemeld in plaats van een socket te worden die stilletjes nooit werkt. Het app-token kan alleen worden bewezen door de socket te openen, dus een verkeerd token verschijnt even later als een verbindingsfout in dezelfde rij.

Zonder het optionele app-configuratietoken werkt de verbinding prima — je kunt de bot alleen niet vanuit Control Center bewerken.

  • Slaat de inloggegevens op in de eigen map van de werkruimte, naast zijn database, alleen leesbaar voor de eigenaar. Ze gaan nooit terug naar een client
  • Opent één Socket Mode-verbinding voor deze werkruimte en ontvangt vanaf dat moment vermeldingen, antwoorden in Slack-threads, DM’s en slash-commando’s
  • Herneemt elke Slack-thread die al aan de brug hing, zodat een nieuwe verbinding bestaande gesprekken voortzet in plaats van ze te laten stranden
  • Kost niets voor werkruimtes zonder chat-app: geen socket, geen timers, geen verkeer

De Slack-rij toont een statuslabel: Live, Verbinden…, Verbindingsfout (met daarnaast de fout van Slack zelf) of Niet verbonden. Zo controleer je de hele keten:

  1. Nodig de bot in Slack uit in een kanaal: /invite @your-bot-name
  2. Vermeld hem met een verzoek
  3. Er verschijnt een antwoord in de Slack-thread en in Control Center verschijnt een bijbehorende ruimte

Elk lid dat de brug wil gebruiken, koppelt daarna zijn eigen account — zie Je Slack-account koppelen.

Boven de gestreamde woorden staat één gegroepeerde kaart met een rij per stap. De voorbereiding is één rij waarvan de titel van Working on it… via Cloning … naar Starting the agent… gaat. Redeneren voegt een rij Thinking… toe; als die stap klaar is, kan er een korte gedachte op staan. Elke tool krijgt zijn eigen rij (Read lib/main.dart). Het antwoord komt als gewone tekst onder de kaart. De kaart wordt voltooid wanneer de beurt eindigt, en krijgt een foutstatus wanneer de run is mislukt, is onderbroken of tegen zijn beurtlimiet aanliep.

De kaart begint op het moment dat de bot de vermelding accepteert — Working on it… — zodat de Slack-thread niet stil blijft terwijl de werkruimte nog wordt opgebouwd. Je eerste vermelding in een Slack-kanaal maakt het gesprek aan, en daarbij worden de repo’s gekloond waarin de agent werkt, dus die voorbereidingsrij leest dan Cloning acme/widgets…, daarna Setting up Reviewer…, dan Starting the agent…, en dan een rij Thinking… zodra de agent echt redeneert. Bij een grote repository duurt die eerste voorbereiding even; aan de kaart zie je dat hij bezig is in plaats van je te negeren. Latere vermeldingen in dezelfde Slack-thread beginnen nog steeds met Working on it… en slaan de kloonstappen over, omdat de werkruimte er al is.

Redeneren als een lap tekst en de uitvoer van tools verlaten Control Center nooit — de gedachte op de rij Thinking… is één korte regel, geen transcript. View in Control Center op de kaart opent het volledige gesprek in de desktopapp — de link gaat naar je eigen Control Center-server, die de browser overdraagt aan de app.

Gebeurt er niets als je erop klikt, dan is de server die het bericht heeft verstuurd niet bereikbaar vanaf de machine waarop je hebt geklikt (een server die alleen op loopback luistert en waarop je vanaf een telefoon klikt, bijvoorbeeld), of Control Center draait daar niet. Een server zonder bereikbaar adres stuurt een kaart zonder knop in plaats van een knop die nergens heen leidt.

Plak de nieuwe waarde opnieuw in het verbindingsdialoogvenster en klik op Verbinden. Verbinden vervangt welke verbinding er ook voor deze werkruimte liep, dus de socket wordt met de nieuwe inloggegevens opnieuw opgezet.

De twee verplichte tokens moeten bij elke verbinding aanwezig zijn. Het optionele app-configuratietoken behoudt zijn opgeslagen waarde als je het vak leeg laat, dus het roteren van een bot-token kost je nooit de mogelijkheid om de app te bewerken.

Klik in de Slack-rij op Verbinding verbreken (alleen beheerders). De socket sluit en de inloggegevens worden vergeten.

Koppelingen van ruimtes en gebruikers blijven bewust bewaard: dezelfde app opnieuw verbinden herstelt elke Slack-thread die aan de brug hing. Het zijn rijen van de werkruimte zelf, dus het verwijderen van de werkruimte haalt ze toch weg.

Lees de fout die naast het label staat. Een geweigerd inloggegeven (invalid_auth, not_authed, token_revoked, account_inactive) is definitief — de brug stopt met opnieuw proberen en wacht op nieuwe tokens, want een ingetrokken token voor altijd blijven proberen levert alleen maar een snelheidslimiet op. Plak de tokens opnieuw in het verbindingsdialoogvenster.

Een fout missing_scope betekent dat de app is geïnstalleerd met minder scopes dan de brug nodig heeft. Voeg de ontbrekende scope toe, installeer de app in Slack opnieuw en verbind daarna opnieuw.

Alles wat tijdelijk is (een weggevallen socket, een hapering bij Slack) verbindt vanzelf opnieuw, met exponentiële backoff die is afgetopt op 30 seconden, en de gewone socketrotatie van Slack voert die backoff niet op.

  • Zit de bot in het kanaal? Slack bezorgt kanaalberichten alleen aan apps die lid zijn. Voer /invite @your-bot-name uit
  • Ben je gekoppeld? Een niet-gekoppeld lid krijgt in die Slack-thread een antwoord dat uitlegt hoe het moet koppelen. Zie Je Slack-account koppelen
  • Ben je lid van de werkruimte met een schrijvende rol? Een viewer of guest krijgt te horen dat zijn rol alleen-lezen is. De brug begint nooit werk namens iemand die hij niet kan herleiden
  • Heeft de werkruimte agenten? Zonder agenten wordt het bericht opgeslagen, maar is er niemand die het kan beantwoorden

In een kanaal antwoordt hij wel, maar gewone berichten negeert hij

Sectie getiteld “In een kanaal antwoordt hij wel, maar gewone berichten negeert hij”

Dat is de bedoeling. Buiten een DM handelt de brug alleen bij een bericht dat de bot vermeldt, of bij een antwoord in een Slack-thread die hij al bezit. Al het andere is het gesprek van anderen.

Antwoorden komen als één groot bericht binnen in plaats van als stream

Sectie getiteld “Antwoorden komen als één groot bericht binnen in plaats van als stream”

De rij zegt “Live streamen staat uit voor deze Slack-app — antwoorden komen als één bericht.” De streamende antwoorden van Slack vereisen de functie Agents & AI Apps in een betaald abonnement; als Slack die weigert, vraagt de brug er voor de rest van het leven van die verbinding niet meer om en plaatst hij in plaats daarvan hele antwoorden. Er gaat niets verloren — het volledige transcript staat altijd in Control Center.

Streamen heeft ook een anker in een Slack-thread nodig, dus een antwoord dat geen Slack-thread heeft om in te groeien, wordt in zijn geheel geplaatst. De taakkaart komt hoe dan ook aan: bij een heel antwoord lift hij mee op hetzelfde bericht, al voltooid.

De taakkaarten van Slack horen bij hetzelfde nieuwe oppervlak Agents & AI Apps als streamen, en Slack weigert pas op het moment van de aanroep. Gebeurt dat, dan behoudt Control Center het antwoord en laat het de kaart weg voor de rest van het leven van die verbinding — een antwoord zonder statusregel is beter dan een statusregel zonder antwoord.

“Control Center heeft een app-configuratietoken nodig om de bot te bewerken”

Sectie getiteld ““Control Center heeft een app-configuratietoken nodig om de bot te bewerken””

De rij Bot aanpassen is uitgeschakeld omdat de verbinding geen app-configuratietoken heeft. Dat is te verwachten bij een app die je handmatig hebt gemaakt of via Maken in Slack — Slack heeft Control Center nooit verteld welke app het is. Genereer een tokenpaar op api.slack.com/apps en verbind opnieuw met het refresh-token ingevuld.

Slack stelt een maximum van 40.000 tekens per bericht, dus de brug kapt af bij 39.000 en hangt er een verwijzing naar Control Center achter — een ingekort antwoord is beter dan een antwoord dat Slack botweg weigert. De volledige tekst staat altijd in het transcript van de ruimte.