Paweł Łukasiewicz: programista blogger
Paweł Łukasiewicz
2025-05-18
Paweł Łukasiewicz
2025-05-18
Udostępnij Udostępnij Kontakt
🔗 Integracja z Microsoft 365

czyli jak nauczyć AI ogarniać Outlooka, Teamsy i pliki z OneDrive


Zarządzanie spotkaniami, przeglądanie plików, wysyłanie maili…
Czy nie brzmi to jak coś, co powinno robić AI za nas?
Dzięki Semantic Kernel i gotowym pluginom Microsoft 365 – może właśnie tak być.
W dzisiejszym wpisie pokażę Ci, jak szybko połączyć się z Outlookiem, Teamsami i OneDrive – i zbudować agenta, który naprawdę odciąży Twój dzień.


🧩 Co to za pluginy?

W ramach Semantic Kernel dostajesz gotowe pluginy integrujące się z usługami Microsoft 365.
Dzięki temu możesz używać AI do:

🔧 Plugin📋 Funkcjonalność
OutlookPluginodczyt, tworzenie i wysyłka maili, zarządzanie kalendarzem
OneDrivePluginprzeglądanie i pobieranie plików z chmury
TeamsPluginwysyłka wiadomości do kanałów, pobieranie historii konwersacji

🔐 Kwestia dostępu: logowanie i uprawnienia

Zanim agent zacznie działać, musisz skonfigurować uwierzytelnianie użytkownika.
W typowym scenariuszu:
🔸 aplikacja rejestruje się w Azure AD
🔸 użytkownik loguje się przez przeglądarkę (OAuth2)
🔸 uzyskujemy token dostępu, którym posługuje się plugin

👉 Użyj helpera Microsoft365Connector:

var connector = new Microsoft365Connector( clientId: "...", tenantId: "...", clientSecret: "..." ); 

Następnie wywołujesz AuthenticateAsync() i przekazujesz token do pluginu.


✉️ OutlookPlugin w akcji

Po dodaniu pluginu:

var outlookPlugin = new OutlookPlugin(connector.GraphServiceClient); 

kernel.ImportPlugin(outlookPlugin, "Outlook"); 

Możesz użyć prompta, np.:

var result = await kernel.InvokePromptAsync("Outlook.SendEmail", new() 
    { 
        ["subject"] = "Raport tygodniowy", 
        ["body"] = "Hej, przesyłam podsumowanie działań z zeszłego tygodnia.", 
        ["to"] = "szef@firma.com" 
    }
); 

I gotowe — mail wychodzi automatycznie.


🗂️ OneDrivePlugin – praca z plikami

Podgląd plików w chmurze? Żaden problem:

var oneDrivePlugin = new OneDrivePlugin(connector.GraphServiceClient); 
kernel.ImportPlugin(oneDrivePlugin, "OneDrive"); 

var files = await kernel.InvokePromptAsync("OneDrive.ListFiles", new() { ["folderPath"] = "/Projekty/AI" }); 

Masz też funkcje do:

  • pobierania zawartości pliku,

  • szukania po nazwie,

  • pobierania metadanych.


💬 TeamsPlugin – kontakt przez kanały

Chcesz, żeby Twój agent zostawił wiadomość w kanale Teamsów?

var teamsPlugin = new TeamsPlugin(connector.GraphServiceClient); 
kernel.ImportPlugin(teamsPlugin, "Teams"); 

await kernel.InvokePromptAsync("Teams.SendMessageToChannel", 
    new() { 
            ["teamName"] = "Zespół AI", 
            ["channelName"] = "dziennik", 
            ["message"] = "Agent zakończył przetwarzanie danych. Logi gotowe." 
        }
); 

Możesz też pobierać ostatnie wiadomości, tworzyć nowe kanały, itd.


🔄 Łączenie pluginów z pamięcią i planowaniem

Największą siłą integracji z M365 jest połączenie z innymi elementami Semantic Kernel.
Możesz:

  • zapisywać kalendarz jako pamięć agenta

  • planować wysyłkę maili w zależności od kontekstu

  • odczytywać dane z plików OneDrive i analizować je promptami

Przykład?
Agent, który:

  1. przeszukuje pliki w folderze "Raporty",

  2. generuje z nich streszczenie,

  3. wysyła je w mailu z podsumowaniem.

Brzmi jak przyszłość? To tylko kilka linijek kodu.


🧪 Co trzeba wiedzieć przed wdrożeniem?

UwagaOpis
🔐 Azure ADmusisz zarejestrować aplikację, uzyskać client ID i dodać uprawnienia Graph API
👤 Kontekst użytkownikaagent działa w imieniu zalogowanego usera – jego kalendarz, pliki, kanały
🧭 Uprawnienianiektóre akcje wymagają dodatkowego consentu lub admin approval
📅 Szybkość działaniaGraph API ma limity – warto dodać cache lub retry

✅ Podsumowanie

Integracja z Microsoft 365 to idealny przykład tego, jak Semantic Kernel może wyjść poza czysty prompt engineering i wejść w świat prawdziwych narzędzi pracy.
Dzięki gotowym pluginom:

  • Twój agent może pisać maile i przeglądać kalendarz 📨

  • analizować pliki z OneDrive 📂

  • i komunikować się przez Teams 🗨️

A to dopiero początek.


W kolejnym wpisie przyjrzymy się temu jak Semantic Kernel wygląda w porównaniu do LangChain - to drobny ukłon w stronę osób programujących w Pythonie.