Sari la conținut

Configurează integrarea Slack

Acest ghid arată cum să conectezi Slack la un spațiu de lucru Control Center, fie lăsând Control Center să creeze aplicația, fie construind-o tu.

Pentru o primă rulare ghidată, vezi Conectează Slack la spațiul tău de lucru.

  • Rolul owner sau admin în spațiul de lucru Control Center — conectarea unei aplicații de chat este o modificare a setărilor spațiului de lucru
  • Permisiunea de a crea și instala aplicații în spațiul de lucru Slack
  • Nimic accesibil public: conexiunea este spre exterior (Socket Mode), așa că serverul nu are nevoie de port de intrare, tunel sau domeniu
Cale Tu oferi Control Center face
Ghidat Un token de configurare a aplicației (xoxe-…) Creează aplicația cu scope-urile, evenimentele, Socket Mode și comanda slash potrivite; îți înmânează cei doi pași pentru care Slack nu are API
Creează în Slack Nimic Deschide Slack cu aceeași configurație precompletată; alegi un spațiu de lucru și confirmi
Manual Tokenurile aplicației finalizate Le verifică și se conectează

Calea ghidată este singura care lasă aplicația și administrabilă din Control Center, ceea ce face posibilă Personalizează botul de chat. O aplicație creată prin Creează în Slack poate fi promovată ulterior la una administrată, lipind un token de configurare în dialogul de conectare.

Nu există în mod deliberat niciun buton „instalează aplicația Slack a Control Center”. Instalarea unei aplicații Slack distribuite necesită un client secret partajat (Slack nu are PKCE), iar Socket Mode distribuie aleatoriu evenimentele unei aplicații între conexiunile sale — așa că o singură aplicație partajată ar livra mesajele spațiului tău de lucru serverelor altor persoane. Prin urmare, fiecare spațiu de lucru își deține propria aplicație, iar aceste trei căi arată cât de puțină muncă te costă.

  1. Generează o pereche de tokenuri de configurare a aplicației la api.slack.com/apps și copiază tokenul de reîmprospătare (xoxe-…)
  2. În Control Center, mergi la Setări → Spațiu de lucru → General și derulează până la cardul Punți de chat
  3. În blocul Slack, apasă Creează aplicația pentru mine
  4. Lipește tokenul, ajustează numele aplicației, numele botului, descrierile și comanda slash, apoi apasă Creează aplicația
  5. Urmează cei doi pași rămași afișați de dialog, fiecare sub forma unui link către Slack:
    • Basic Information → App-Level Tokens: generează un token cu scope-ul connections:write (xapp-…)
    • Install App: instalează-l în spațiul de lucru și copiază Bot User OAuth Token (xoxb-…)
  6. Apasă Lipește datele de autentificare și continuă cu Conectare

Tokenul de configurare se rotește la fiecare utilizare. Control Center stochează pe parcurs valoarea rotită, așa că nu mai trebuie să o lipești din nou.

Aceeași aplicație, fără token de configurare — Slack îți oferă propriul ecran de creare, cu întregul manifest deja completat.

  1. În Control Center, mergi la Setări → Spațiu de lucru → General și derulează până la cardul Punți de chat
  2. În blocul Slack, apasă Creează aplicația pentru mine
  3. Ajustează numele aplicației, numele botului, descrierile și comanda slash — acestea călătoresc împreună cu linkul
  4. Apasă Creează în Slack. Browserul tău deschide pagina de creare a aplicației din Slack, cu configurația precompletată
  5. Alege spațiul de lucru Slack și confirmă. Scope-urile, evenimentele, Socket Mode și comanda slash sunt deja corecte
  6. Înapoi în Control Center, urmează cei doi pași rămași afișați de dialog:
    • Basic Information → App-Level Tokens: generează un token cu scope-ul connections:write (xapp-…)
    • Install App: instalează-l în spațiul de lucru și copiază Bot User OAuth Token (xoxb-…)
  7. Apasă Lipește datele de autentificare și continuă cu Conectare

Slack nu raportează ce aplicație a creat, așa că Control Center nu află id-ul aplicației, iar linkurile de la pasul 6 duc la lista ta de aplicații, nu direct la acea aplicație. Personalizează botul are nevoie de un token de configurare.

Creează o aplicație la api.slack.com/apps, apoi configureaz-o după cum urmează.

Socket Mode: activează-l și lasă fiecare request URL gol. Slack respinge un manifest care cere atât Socket Mode, cât și livrare prin webhook.

Scope-urile tokenului de bot (OAuth & Permissions):

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

Abonamente la evenimente (evenimente de bot):

app_home_opened
app_mention
message.channels
message.groups
message.im

message.channels și message.groups sunt cele care fac să funcționeze un răspuns într-un fir Slack deja conectat. Fără ele, doar prima mențiune ajunge vreodată.

Comandă slash: /cc (orice nume funcționează — puntea folosește comanda cu care a fost invocată ultima dată).

App Home: activează fila Messages și lasă-o editabilă, ca membrii să îi poată scrie botului în mesaj direct.

Tokenuri: generează un token la nivel de aplicație cu connections:write, apoi instalează aplicația și copiază tokenul OAuth de utilizator bot.

  1. Mergi la Setări → Spațiu de lucru → General și derulează până la cardul Punți de chat
  2. În blocul Slack, apasă Conectează Slack
  3. Completează câmpurile:
Câmp Valoare Unde se află în Slack
Token OAuth de utilizator bot xoxb-… OAuth & Permissions → Bot User OAuth Token
Token la nivel de aplicație xapp-… Basic Information → App-Level Tokens (connections:write)
Token de reîmprospătare a configurației aplicației (opțional) xoxe-… Perechea de tokenuri de configurare a aplicației de pe api.slack.com/apps

Prefixul fiecărei valori este verificat pe ambele părți înainte de a se trimite ceva, așa că o valoare lipită în caseta greșită este refuzată cu aceeași propoziție în ambele cazuri.

  1. Apasă Conectează

Control Center verifică tokenul de bot cu auth.test de la Slack înainte de a stoca ceva, așa că o greșeală de tastare îți este raportată, în loc să devină un socket care nu funcționează niciodată în tăcere. Tokenul la nivel de aplicație poate fi dovedit doar deschizând socketul, așa că unul prost apare o clipă mai târziu ca eroare de conexiune pe același rând.

Fără tokenul opțional de configurare a aplicației, conexiunea funcționează fără probleme — pur și simplu nu poți edita botul din Control Center.

  • Stochează credențialele în directorul propriu al spațiului de lucru, lângă baza de date, lizibile doar de proprietar. Ele nu ajung niciodată înapoi la un client
  • Deschide o conexiune Socket Mode pentru acest spațiu de lucru și începe să primească mențiuni, răspunsuri în fire Slack, mesaje directe și comenzi slash
  • Reactivează fiecare fir Slack conectat anterior, așa că o reconectare continuă conversațiile existente în loc să le abandoneze
  • Nu costă nimic pentru spațiile de lucru care nu au aplicație de chat: niciun socket, niciun cronometru, niciun trafic

Rândul Slack afișează o etichetă de stare: Live, Se conectează…, Eroare de conexiune (cu eroarea proprie a Slack alături) sau Neconectat. Pentru o verificare de la un capăt la altul:

  1. În Slack, invită botul într-un canal: /invite @your-bot-name
  2. Menționează-l cu o cerere
  3. Apare un răspuns în firul Slack și apare un spațiu corespunzător în Control Center

Fiecare membru care vrea să folosească puntea își leagă apoi propriul cont — vezi Leagă contul tău Slack.

Deasupra cuvintelor transmise în flux stă un singur card grupat, cu un rând per pas. Configurarea inițială este un rând al cărui titlu trece de la Working on it… la Cloning …, apoi la Starting the agent…. Raționamentul adaugă un rând Thinking…; când acel pas se termină, pe el poate apărea un gând scurt. Fiecare instrument are propriul rând (Read lib/main.dart). Răspunsul sosește ca text obișnuit sub card. Cardul devine complet când tura se termină și în eroare când rularea a eșuat, a fost întreruptă sau și-a atins limita de ture.

Cardul pornește în momentul în care botul acceptă mențiunea — Working on it… —, așa că firul Slack nu tace cât timp spațiul de lucru este încă în construcție. Prima ta mențiune într-un canal Slack creează conversația, care clonează repo-urile în care lucrează agentul, așa că acel rând de configurare afișează apoi Cloning acme/widgets…, apoi Setting up Reviewer…, apoi Starting the agent…, iar apoi un rând Thinking… de îndată ce agentul chiar raționează. Pe un depozit mare, acea primă configurare durează ceva; cardul este felul în care îți dai seama că lucrează, în loc să te ignore. Mențiunile ulterioare din același fir Slack se deschid tot cu Working on it…, apoi sar peste pașii de clonare, pentru că spațiul de lucru există deja.

Raționamentul ca un perete de text și ieșirea instrumentelor nu părăsesc niciodată Control Center — gândul de pe rândul Thinking… este o linie scurtă, nu un transcript. View in Control Center de pe card deschide conversația completă în aplicația de desktop — linkul duce la propriul tău server Control Center, care predă browserul aplicației.

Dacă nu se întâmplă nimic când apeși pe el, serverul care a trimis mesajul nu este accesibil de pe mașina de pe care ai apăsat (de exemplu, un server doar pe loopback, apăsat de pe un telefon) sau Control Center nu rulează acolo. Un server fără o adresă accesibilă trimite un card fără buton, în loc de unul care nu duce nicăieri.

Lipește din nou valoarea nouă în dialogul de conectare și apasă Conectează. Conectarea înlocuiește orice conexiune care rula pentru acest spațiu de lucru, așa că socketul este refăcut cu noile credențiale.

Cele două tokenuri obligatorii trebuie să fie prezente la fiecare conectare. Tokenul opțional de configurare a aplicației își păstrează valoarea stocată când lași caseta goală, așa că rotirea unui token de bot nu te costă niciodată capacitatea de a edita aplicația.

Apasă Deconectează pe rândul Slack (doar administratorii). Socketul se închide și credențialele sunt uitate.

Legăturile de spații și de utilizatori supraviețuiesc în mod deliberat: reconectarea aceleiași aplicații restaurează fiecare fir Slack conectat. Ele sunt rânduri limitate la spațiul de lucru, așa că ștergerea spațiului de lucru le elimină oricum.

Citește eroarea afișată lângă etichetă. O credențială respinsă (invalid_auth, not_authed, token_revoked, account_inactive) este definitivă — puntea nu mai reîncearcă și așteaptă tokenuri noi, pentru că a reîncerca la nesfârșit un token revocat doar te supune la rate-limit. Lipește din nou tokenurile în dialogul de conectare.

O eroare missing_scope înseamnă că aplicația este instalată cu mai puține scope-uri decât are nevoie puntea. Adaugă scope-ul lipsă, reinstalează aplicația în Slack, apoi reconectează.

Orice problemă trecătoare (un socket căzut, o bâlbâială a Slack) se reconectează singură, cu backoff exponențial plafonat la 30 de secunde, iar rotația obișnuită de socket a Slack nu escaladează acel backoff.

  • Este botul în canal? Slack livrează mesajele de canal doar aplicațiilor care sunt membre. Rulează /invite @your-bot-name
  • Ești legat? Un membru nelegat primește un răspuns în acel fir Slack, care explică cum să se lege. Vezi Leagă contul tău Slack
  • Ești membru al spațiului de lucru cu un rol de scriere? Unui viewer sau guest i se spune că rolul lui este doar de citire. Puntea nu începe niciodată o muncă în numele cuiva pe care nu îl poate atribui
  • Are spațiul de lucru vreun agent? Fără agenți, mesajul este stocat, dar nu are cine să răspundă la el

Este intenționat. În afara unui mesaj direct, puntea acționează doar asupra unui mesaj care menționează botul sau a unui răspuns într-un fir Slack pe care îl deține deja. Orice altceva este conversația altor persoane.

Răspunsurile sosesc ca un singur mesaj mare, în loc să fie transmise în flux

Secțiune intitulată „Răspunsurile sosesc ca un singur mesaj mare, în loc să fie transmise în flux”

Rândul spune „Streamingul live este oprit pentru această aplicație Slack — răspunsurile sosesc ca un singur mesaj.” Răspunsurile în streaming ale Slack au nevoie de funcția Agents & AI Apps pe un plan plătit; când Slack o refuză, puntea nu mai cere acest lucru pentru restul vieții acelei conexiuni și postează în schimb răspunsuri întregi. Nu se pierde nimic — transcriptul complet este mereu în Control Center.

Streamingul are nevoie și de un punct de ancorare în firul Slack, așa că un răspuns care nu are un fir Slack în care să crească este postat întreg. Cardul de sarcină sosește oricum în ambele cazuri: la un răspuns întreg, el călătorește pe același mesaj, deja complet.

Cardurile de sarcină ale Slack fac parte din aceeași suprafață nouă Agents & AI Apps ca streamingul, iar Slack refuză doar în momentul apelului. Când o face, Control Center păstrează răspunsul și renunță la card pentru restul vieții acelei conexiuni — un răspuns fără linie de stare întrece o linie de stare fără răspuns.

„Control Center are nevoie de un token de configurare a aplicației ca să editeze botul”

Secțiune intitulată „„Control Center are nevoie de un token de configurare a aplicației ca să editeze botul””

Rândul Personalizează botul este dezactivat pentru că această conexiune nu are un token de configurare a aplicației. Acest lucru este normal pentru o aplicație creată manual sau prin Creează în Slack — Slack nu i-a spus niciodată Control Center care este aplicația. Generează o pereche de tokenuri pe api.slack.com/apps și reconectează cu tokenul de reîmprospătare completat.

Slack plafonează un singur mesaj la 40.000 de caractere, așa că puntea trunchiază la 39.000 și adaugă o trimitere la Control Center — un răspuns scurtat întrece unul pe care Slack îl respinge de tot. Textul complet este mereu în transcriptul spațiului.