// dokumentacja openclaw

Integracja OpenClaw ze Slack — tworzenie aplikacji i konfiguracja

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:

  1. Utwórz aplikację Slack — skorzystaj z manifestu, który automatycznie skonfiguruje uprawnienia, komendy i subskrypcje zdarzeń
  2. Dodaj tokeny do OpenClaw — potrzebny jest App-Level Token (xapp-...) z uprawnieniem connections:write oraz Bot Token (xoxb-...)
  3. 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, signingSecret i webhookPath

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 allowFrom zawiera "*"
  • 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, dmPolicy i 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.useAccessGroups i listy dozwolonych