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
sharePointSiteIdoraz uprawnieniaSites.ReadWrite.Allw 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łuChannelMessage.Send.Group— wysyłanie wiadomościMember.Read.Group— odczyt członkówTeamSettings.Read.Group— odczyt ustawień zespołu
Uprawnienia Graph API (opcjonalne, ale zalecane)
ChannelMessage.Read.All— załączniki i historiaUser.Read.All— dynamiczne wzmianki użytkownikówSites.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 poziomhistoryLimit— 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