// dokumentacja openclaw

Integracja OpenClaw z Microsoft Teams — Azure Bot i konfiguracja

Wprowadzenie

OpenClaw oferuje wbudowaną integrację z Microsoft Teams, obsługującą wiadomości tekstowe, załączniki w DM, wysyłanie plików na kanałach (z dodatkowymi uprawnieniami) oraz karty Adaptive Cards. Wtyczka jest dołączona do standardowych wydań OpenClaw.

Wymagania wstępne — Azure Bot

Potrzebujesz Azure Bot z następującymi danymi:

  • App ID — identyfikator aplikacji
  • Client Secret — sekret klienta
  • Tenant ID — identyfikator tenanta

Dla nowych botów zalecany jest tryb „Single Tenant" (po wycofaniu wielotenantowych w 2025 roku).

Minimalna konfiguracja

{
  channels: {
    msteams: {
      enabled: true,
      appId: "<APP_ID>",
      appPassword: "<APP_PASSWORD>",
      tenantId: "<TENANT_ID>",
      webhook: { port: 3978, path: "/api/messages" }
    }
  }
}

Kontrola dostępu

Wiadomości prywatne (DM)

Domyślnie w trybie parowania — nieznani nadawcy są ignorowani do momentu zatwierdzenia. Identyfikacja użytkowników odbywa się przez AAD Object ID, co zapewnia stabilność.

Czaty grupowe i kanały

Czaty grupowe są domyślnie zablokowane — wymagają konfiguracji listy dozwolonych. Można ustawić nadpisania per zespół i per kanał. Domyślnie wymagana jest wzmianka @bot w kanałach.

Pliki i media

Załączniki w różnych kontekstach

  • DM — obrazy i pliki działają natywnie przez Teams Bot API
  • Kanały i grupy — wymagają uprawnień Microsoft Graph do pobierania załączników z SharePoint/OneDrive

Wysyłanie plików

  • Czaty grupowe i kanały wymagają konfiguracji sharePointSiteId oraz uprawnienia Sites.ReadWrite.All w Graph
  • Pliki trafiają do folderu /OpenClawShared/ w SharePoint
  • DM korzystają z mechanizmu FileConsentCard bez dodatkowej konfiguracji

Zaawansowane funkcje

Ankiety i Adaptive Cards

System wysyła ankiety jako karty Adaptive Cards. Użytkownicy mogą wysyłać dowolny JSON Adaptive Card zarówno przez CLI, jak i narzędzia agenta.

Informacje o członkach

Akcja wspierana przez Graph ujawnia szczegóły członków (nazwa wyświetlana, e-mail, rola) z uprawnieniem RSC Member.Read.Group.

Proaktywne wiadomości

Możliwe dopiero po pierwszej interakcji użytkownika, ponieważ Gateway przechowuje referencje konwersacji od tego momentu.

Wymagane uprawnienia

RSC dla kanałów

  • ChannelMessage.Read.Group — odczyt wiadomości kanału
  • ChannelMessage.Send.Group — wysyłanie wiadomości
  • Member.Read.Group — odczyt członków
  • TeamSettings.Read.Group — odczyt ustawień zespołu

Uprawnienia Graph API (opcjonalne, ale zalecane)

  • ChannelMessage.Read.All — załączniki i historia
  • User.Read.All — dynamiczne wzmianki użytkowników
  • Sites.ReadWrite.All — wysyłanie plików na SharePoint

Kluczowe ustawienia

  • dmPolicy — kontrola dostępu DM (pairing/allowlist/open/disabled)
  • groupPolicy — kontrola czatów grupowych (allowlist/open/disabled)
  • requireMention — wymóg wzmianki w kanałach (domyślnie włączony)
  • replyStyle — format odpowiedzi: wątek vs. najwyższy poziom
  • historyLimit — limit ostatnich wiadomości w kontekście (domyślnie 50)
  • textChunkLimit — limit rozmiaru wiadomości wychodzących

Znane ograniczenia

  • Timeouty webhooków przy wolnych odpowiedziach (Teams może ponowić, powodując duplikaty)
  • Obsługa Markdown bardziej ograniczona niż w Slacku czy Discordzie
  • Ograniczone wsparcie kanałów prywatnych
  • DM wymagają wcześniejszej interakcji do proaktywnych wiadomości

Lokalne testowanie

Teams nie może dotrzeć do localhost, dlatego potrzebujesz tunelowania:

  • ngrok: ngrok http 3978
  • Tailscale Funnel: tailscale funnel 3978

Ustaw endpoint wiadomości Azure Bot na URL tunelu.

Rozwiązywanie problemów

  • Brak obrazów — brakujące uprawnienia Graph
  • Brak odpowiedzi na kanałach — wymagane wzmianki
  • Niezgodność wersji manifestu — zaktualizuj manifest aplikacji
  • Błędy uprawnień RSC — przeinstaluj aplikację i w pełni zrestartuj Teams