Wprowadzenie
Integracja OpenClaw ze Slackiem obsługuje wiadomości bezpośrednie i kanały przez aplikacje Slack. Domyślnie działa w trybie Socket Mode, ale dostępny jest też tryb HTTP z webhookami. Wtyczka jest gotowa do użytku produkcyjnego.
Szybka konfiguracja — Socket Mode
Konfiguracja wymaga trzech kroków:
- Utwórz aplikację Slack — skorzystaj z manifestu, który automatycznie skonfiguruje uprawnienia, komendy i subskrypcje zdarzeń
- Dodaj tokeny do OpenClaw — potrzebny jest App-Level Token (
xapp-...) z uprawnieniemconnections:writeoraz Bot Token (xoxb-...) - Uruchom Gateway —
openclaw gateway
Zmienne środowiskowe SLACK_APP_TOKEN i SLACK_BOT_TOKEN służą jako wartości domyślne dla domyślnego konta.
Tryb HTTP
Alternatywą dla Socket Mode jest tryb HTTP wykorzystujący webhooks. Wymaga on:
- Signing Secret — do weryfikacji podpisów żądań
- Webhook path — unikalna ścieżka dla każdego konta (aby uniknąć konfliktów rejestracji)
- Parametry
botToken,signingSecretiwebhookPath
Manifest aplikacji
Manifest Socket Mode zawiera konfigurację wyświetlaną nazwę „OpenClaw", włącza funkcje bota z trybem „zawsze online", konfiguruje komendę /openclaw oraz wymagane zakresy OAuth. Subskrybowane zdarzenia obejmują wzmianki, operacje na kanałach, wiadomości we wszystkich typach konwersacji oraz zdarzenia reakcji i przypiętych wiadomości.
Manifest HTTP Mode ma podobną strukturę, ale zawiera dodatkowo adresy Request URL w konfiguracji komend slash i subskrypcji zdarzeń, a także konfigurację interaktywności.
Opcjonalny zakres: niestandardowa tożsamość
Zakres chat:write.customize pozwala wychodzącym wiadomościom wyświetlać tożsamość aktywnego agenta (niestandardowa nazwa i emoji ikona) zamiast domyślnej tożsamości aplikacji.
Kontrola dostępu
Polityka DM
- pairing (domyślny) — wymaga zatwierdzenia kodu:
openclaw pairing approve slack KOD - allowlist — dostęp tylko dla zatwierdzonych użytkowników
- open — nieograniczony dostęp, gdy
allowFromzawiera"*" - disabled — DM wyłączone
Grupowe DM (MPIM) są domyślnie wyłączone, ale można je włączyć z opcjonalną listą dozwolonych.
Polityka kanałów
- open — dostęp do wszystkich kanałów
- allowlist — tylko wskazane ID kanałów
- disabled — kanały zablokowane
Używaj stabilnych ID kanałów. Rozwiązywanie nazw/ID odbywa się przy starcie. Domyślnie wymagana jest jawna wzmianka @app w kanałach.
Wątki i sesje
Typy sesji: wiadomości bezpośrednie (direct), kanały (channel), rozmowy wieloosobowe (group). DM domyślnie korzystają z głównej sesji agenta. Klucze sesji kanałów mają format agent:<agentId>:slack:channel:<channelId>.
Historia wątków domyślnie obejmuje zakres thread bez dziedziczenia od rodzica. Limit początkowej historii (initialHistoryLimit) wynosi 20 wiadomości — ustaw 0, aby wyłączyć.
Tryby odpowiedzi w wątkach
- off — bez wątkowania
- first — tylko pierwszy komunikat ląduje w wątku
- all — wszystkie odpowiedzi w wątkach
- batched — wątkowanie przy zgrupowanych wiadomościach
Obsługiwane tagi ręczne: [[reply_to_current]] i [[reply_to:<id>]]. Uwaga: ustawienie replyToMode="off" wyłącza wszystkie wątki, włącznie z jawnymi tagami — w odróżnieniu od Telegrama.
Streaming tekstu
Tryby podglądu na żywo:
- off — brak podglądu
- partial (domyślny) — aktualizacja wiadomości podglądu najnowszym wyjściem
- block — fragmentaryczne aktualizacje dodawane jako nowe bloki
- progress — status, potem końcowy tekst
Natywny streaming tekstu przez nativeTransport wymaga dostępnych wątków odpowiedzi. Najwyższy poziom DM Slacka domyślnie nie jest wątkowany, co blokuje podgląd w wątkach — chyba że replyToMode wymusza odpowiedzi w wątkach.
Reakcje potwierdzające i pisanie
Ack Reaction — reakcja emoji wysyłana podczas przetwarzania wiadomości. Slack wymaga formatu shortcode (np. "eyes"). Pusty string wyłącza reakcję.
Typing Reaction — tymczasowa reakcja emoji dodawana na czas przetwarzania, następnie usuwana. Działa w trybie best-effort z automatycznym czyszczeniem.
Interaktywne odpowiedzi
Domyślnie wyłączone. Włącz globalnie lub per konto przez channels.slack.capabilities.interactiveReplies: true. Agent może emitować dyrektywy specyficzne dla Slacka:
[[slack_buttons: Zatwierdź:approve, Odrzuć:reject]]
[[slack_select: Wybierz cel | Canary:canary, Produkcja:production]]
Dyrektywy kompilują się do Slack Block Kit z callbackami kliknięć i wyborów. Zbyt duże bloki automatycznie cofają się do zwykłego tekstu.
Komendy slash
Natywne komendy Slacka są domyślnie wyłączone. Włącz je przez channels.slack.commands.native: true. Przy rejestracji komend pamiętaj, że Slack rezerwuje /status — zamiast tego zarejestruj /agentstatus. Menu argumentów natywnych automatycznie dostosowują rendering: do 5 opcji → przyciski, 6-100 → menu static select, powyżej 100 → external select z filtrowaniem.
Zatwierdzenia wykonania (Exec Approvals)
Slack działa jako natywny klient zatwierdzeń z interaktywnymi przyciskami. Konfiguracja obejmuje enabled, approvers i target (dm, channel lub both). Automatycznie włącza się, gdy lista zatwierdzających jest możliwa do rozwiązania.
Rozwiązywanie problemów
- Brak odpowiedzi na kanałach — sprawdź
groupPolicy, listę dozwolonych kanałów,requireMention - Ignorowane DM — zweryfikuj
dm.enabled,dmPolicyi zatwierdzenia parowania - Problemy z Socket Mode — sprawdź oba tokeny (bot i app) oraz ustawienia Socket Mode w konfiguracji aplikacji Slack
- Błędy HTTP Mode — zwaliduj signing secret, webhook path i adresy Request URL
- Komendy nie działają — sprawdź tryb natywnych komend vs. komenda slash, oraz
commands.useAccessGroupsi listy dozwolonych