Latest / M365.FM – podcast o Microsoft 365, Copilot i AI po polsku / Webhooki Microsoft Graph w prostych słowach: powiadomienia w czasie rzeczywistym zamiast ciągłego pollingu (Dubbing AI)
Transcript
- 0:00Gotowi na 10 dni Microsoft 365, Copilota, iAzure oraz ludzi kształtujących przyszłość pracy?
- 0:08W styczniu M365.com powraca i będzie jeszcze większy.
- 0:12Dołącz do nas, by wziąć udział w sesjach na żywo, praktycznych demonstracjach i zdobyć wiedzę od MVP oraz ekspertów z całego świata.
- 0:18Żadnych ogólnych slajdów, żadnych niekończących się modnych haseł.
- 0:22Stawiamy czoła prawdziwym wyzwaniom Copilot Studio, agenci, iFabrik, bezpieczeństwo, ład korporacyjny i automatyzacja.
- 0:29Niezależnie od tego, czy jesteś informatykiem, programistą czy liderem biznesowym, przygotowaliśmy sesję dla Ciebie.
- 0:35Przez 10 pełnych dni możesz zgłębiać różne technologie i łączyć się z globalną społecznością.
- 0:40Oglądaj na żywo i zabierz praktyczne wnioski do swojej organizacji.
- 0:44Styczeń 2027 roku, 10 dni, jedna społeczność Microsoft. Rejestracja jest już otwarta.
- 0:51Wejdź na m365.com.net i zapewnij sobie miejsce już dziś.
- 0:56To m365.com.net.
- 0:59Dołącz teraz na m365.com.net i widzimy się na żywo w styczniu.
- 1:04Witajcie wszyscy w kolejnym odcinku pigułek wiedzy o Microsoft tutaj na M365FM.
- 1:09Nazywam się Milko Peters i będę Waszym gospodarzem.
- 1:12Dzisiejszy temat to coś, o czym słyszał prawie każdy pracujący z Microsoft 365, ale niewielu potrafi jasno wyjaśnić.
- 1:17Czym dokładnie są webhoki grafa?
- 1:19Dlaczego warto się nimi zainteresować zamiast robić wszystko po staremu?
- 1:22Wyobraź sobie, że czekasz na ważny list.
- 1:23Podchodzisz do skrzynki pocztowej.
- 1:25Jest pusta.
- 1:25Wracasz.
- 1:2610 minut później sprawdzasz ponownie.
- 1:28Nadal nic.
- 1:28Robisz tak przez cały dzień, marnując czas i energię.
- 1:30To jest właśnie odpytywanie.
- 1:31Teraz wyobraź sobie inny świat.
- 1:33Listonosz dzwoni do Twoich drzwi w momencie, gdy list dociera.
- 1:35Nie musisz sprawdzać.
- 1:36Czekasz na dzwonek.
- 1:37To jest właśnie webhook.
- 1:39Pod koniec tego odcinka zrozumiesz, czym są webhoki grafa, dlaczego zastępują ciągłe sprawdzanie i jak to wszystko działa w praktyce.
- 1:45Problem odpytywania.
- 1:46Rozbijmy to na części.
- 1:47Aby zrozumieć znaczenie webhooków, musisz zrozumieć, dlaczego odpytywanie jest szkodliwe.
- 1:51Oto jak działa większość dzisiejszych aplikacji.
- 1:53Twoja aplikacja potrzebuje odpowiedzi.
- 1:55Pyta Microsoft Graf.
- 1:56Hej, są nowi użytkownicy?
- 1:57Graf odpowiada.
- 1:58Nie.
- 1:59Więc aplikacja czeka chwilę, a potem pyta ponownie.
- 2:01A teraz są nowi użytkownicy?
- 2:02Nadal nie.
- 2:03W kółko.
- 2:03Ten proces to właśnie odpytywanie.
- 2:05Pomyśl o tym, jak o ciągłym dzwonieniu do przyjaciela z pytaniem, czy ma jakieś nowiny.
- 2:08Dzwonisz, odbiera.
- 2:09Sprawdzasz.
- 2:10On mówi nie.
- 2:10Rozłączasz się.
- 2:11Potem dzwonisz ponownie 5 minut później i znowu.
- 2:13Marnujesz jego czas i swój własny.
- 2:15Prawdopodobnie zaczynasz go irytować.
- 2:17Teraz wyobraź sobie tysiące aplikacji robiących to samo z Microsoft Graf w tym samym czasie.
- 2:20Każda aplikacja odpytująca co kilka minut, zadająca te same pytania, otrzymująca te same odpowiedzi, to generuje spory hałas.
- 2:26Microsoft ma określenie na zbyt agresywne odpytywanie, throttling, albo jak nazywają to niektórzy programiści, więzienie Graf.
- 2:31Kiedy wysyłasz za dużo żądań, Microsoft mówi, dobrze, na razie kończysz.
- 2:35Ograniczają liczbę wywołań, które może wykonać Twoja aplikacja.
- 2:37Gdy zostaniesz ograniczony, wszystko zwalnia.
- 2:39Prawidłowe żądania zaczynają się piętrzyć.
- 2:40Twoja aplikacja przestaje działać poprawnie.
- 2:42Nie masz pojęcia, kiedy zostaniesz wypuszczony.
- 2:44O jakiej liczbie żądań mówimy?
- 2:45Załóżmy, że Twoja aplikacja sprawdza zmiany użytkowników co 5 minut.
- 2:48To daje 12 żądań na godzinę.
- 2:50W ciągu całego dnia to 288 żądań, a to tylko dla jednego zasobu.
- 2:54Jeśli sprawdzasz też grupy, pliki, wiadomości i wydarzenia w kalendarzu, uzbierasz tysiące niepotrzebnych żądań dziennie.
- 3:00Większość z nich nie zwraca nic, zero zmian, ale mimo to wykonałeś wywołanie.
- 3:03I w tym rzecz, nawet jeśli sprawdzasz co 5 minut, nadal nie otrzymujesz aktualizacji w czasie rzeczywistym.
- 3:08Zmiana może nastąpić minutę po Twoim ostatnim odpytaniu.
- 3:11Nie dowiesz się o niej przez kolejne 4 minuty.
- 3:13Marnujesz zasoby i wciąż przegapiasz odpowiedni moment.
- 3:16Teraz zestaw to z podejściem sterowanym zdarzeniami.
- 3:18Zamiast wywoływać Microsoft Graph co kilka minut, czekasz, aż to Microsoft Graph zadzwoni do Ciebie.
- 3:21Konfigurujesz odbiornik.
- 3:23Gdy coś się zmieni, Graph wysyła Ci powiadomienie.
- 3:25Nie wybierasz numeru.
- 3:26Odbierasz, gdy telefon zadzwoni.
- 3:28Czym są WebHooki?
- 3:29Czym więc dokładnie jest WebHook?
- 3:31Oto najprostsza definicja.
- 3:32WebHook to żądanie HTTP wysyłane automatycznie, gdy coś się wydarzy.
- 3:36Nie prosisz o nie, serwer po prostu wypycha je do Ciebie.
- 3:39Pomyśl o tym, jak o dzwonku do drzwi.
- 3:41Nie stoisz przed drzwiami, sprawdzając co kilka minut.
- 3:43Instalujesz dzwonek.
- 3:44Gdy ktoś przyjdzie, dzwoni.
- 3:46Słyszysz dzwonek i otwierasz.
- 3:47Dzwonek czuwa za Ciebie.
- 3:49WebHooki nazywa się czasem odwróconymi API.
- 3:51W przypadku zwykłego API Twoja aplikacja wysyła żądanie, a serwer odpowiada.
- 3:55Twoja aplikacja ma kontrolę.
- 3:56W przypadku WebHooka to serwer wysyła żądanie do Twojej aplikacji.
- 3:59Serwer ma kontrolę, ale wypycha dane zamiast czekać, aż o nie poprosisz.
- 4:02Microsoft Graph również korzysta z WebHooków, ale Microsoft nazywa je powiadomieniami o zmianach.
- 4:07To to samo, tylko inna nazwa.
- 4:09Gdy coś zmienia się w Microsoft 365, Graph wysyła żądanie HTTP POST na podany przez Ciebie adres URL.
- 4:15To żądanie POST zawiera informacje o tym, co się zmieniło.
- 4:17Jest wiele rzeczy, o których możesz otrzymywać powiadomienia.
- 4:20W Twoim dzierżawcy tworzony jest nowy użytkownik, aktualizowany plik w SharePoint, wysyłana wiadomość w Teams, zmienia się wydarzenie w kalendarzu lub grupa zyskuje nowego członka.
- 4:28Każde z tych zdarzeń może wywołać powiadomienie.
- 4:30Oto rzeczywisty przykład.
- 4:32Załóżmy, że prowadzisz firmę z systemem rejestracji czasu pracy.
- 4:34Gdy zatrudniasz nowego pracownika, chcesz automatycznie utworzyć mu konto.
- 4:37Bez WebHooków musiałbyś odpytywać punkt końcowy użytkowników co kilka minut w poszukiwaniu nowych osób.
- 4:41Dzięki WebHookom subskrybujesz zdarzenia tworzenia użytkownika.
- 4:44Gdy ktoś dołącza, Graf wysyła Twojej aplikacji powiadomienie.
- 4:47Twoja aplikacja je odbiera, weryfikuje i tworzy konto w ciągu kilku sekund.
- 4:51Bez odpytywania, bez marnowania zapytań.
- 4:53Inny przykład.
- 4:54Masz bibliotekę dokumentów SharePoint, do której przesyłane są rachunki.
- 4:57Bez WebHooków musiałbyś stale odpytywać bibliotekę.
- 5:00Z WebHookami Graf informuje Cię w momencie dodania pliku.
- 5:03Twoja aplikacja pobiera go, sprawdza czy to rachunek i przetwarza automatycznie.
- 5:06Na tym polega potęga WebHooków.
- 5:08Zamiast ciągłego pytania aplikacji, czy jest coś nowego, pozwalasz systemowi poinformować Cię, gdy coś się wydarzy.
- 5:13Jest to bardziej wydajne, niezawodne i znacznie szybsze.
- 5:16Jak działają WebHooki w Microsoft Graph?
- 5:18Teraz już wiesz, czym są WebHooki i dlaczego odpytywanie jest problematyczne.
- 5:21Przyjrzyjmy się, jak faktycznie działają WebHooki w Microsoft Graph, bo proces jest prostszy niż myślisz.
- 5:26Sprowadza się do trzech rzeczy.
- 5:27Subskrypcji, powiadomienia i Twojego punktu końcowego.
- 5:30Najpierw tworzysz subskrypcję.
- 5:32Mówisz Microsoft Graph, hej, chcę wiedzieć, kiedy ten konkretny element się zmieni.
- 5:36Podajesz Graphowi szczegóły dotyczące tego, co obserwować i gdzie wysyłać powiadomienia.
- 5:39Pomyśl o tym, jak o zapisaniu się na alerty.
- 5:41Mówisz systemowi, co Cię interesuje i podajesz swoje dane kontaktowe.
- 5:44Po drugie, Microsoft Graph obserwuje ten zasób.
- 5:46Monitoruje wszelkie zmiany.
- 5:48Gdy coś się dzieje, jak utworzenie użytkownika, aktualizacja pliku, czy nadejście wiadomości, Graph to zauważa.
- 5:52Po trzecie, Graph wysyła powiadomienie.
- 5:54Wysyła żądanie HTTP POST na podany przez Ciebie adres URL.
- 5:57To żądanie POST zawiera informacje o tym, co uległo zmianie.
- 5:59Twój punkt końcowy je odbiera, a Twoja aplikacja je przetwarza.
- 6:03Zatem ogólny schemat jest prosty.
- 6:04Subskrybujesz, Graph obserwuje, Graph wysyła POST, gdy coś się zmieni.
- 6:08Przyjrzyjmy się nieco dokładniej tym trzem elementom składowym.
- 6:10Subskrypcja to Twoja prośba o otrzymywanie alertów.
- 6:13To tak, jakbyś powiedział, chcę wiedzieć, kiedy nowy użytkownik zostanie dodany do mojego dzierżawcy.
- 6:17Wysyłasz to żądanie do Microsoft Graph, a Graph je zapisuje.
- 6:19Od tego momentu Graph obserwuje zasób w Twoim imieniu.
- 6:22Powiadomienie to sam alert, czyli żądanie HTTP POST, które Graph wysyła do Twojego punktu końcowego.
- 6:27Treść żądania POST zawiera szczegóły zmiany, takie jak zmieniony zasób, typ zmiany oraz czas jej wystąpienia.
- 6:32Twój punkt końcowy to drzwi, które pozostawiasz otwarte.
- 6:34To adres URL na Twoim serwerze, skonfigurowany do odbierania tych żądań POST.
- 6:37Musi on po prostu nasłuchiwać i szybko odpowiadać.
- 6:39To wszystko.
- 6:40Po stronie odbiorczej nie jest wymagana złożona logika.
- 6:42Wystarczy przechwycić powiadomienie, potwierdzić je i przetworzyć.
- 6:45Porównajmy to teraz z odpytywaniem polingiem.
- 6:47Przy odpytywaniu wysyłasz setki żądań GET, z których każdy pyta, czy jest coś nowego?
- 6:50Przez większość czasu odpowiedź brzmi nie.
- 6:52W przypadku webhuków wystarczy jeden POST, czyli powiadomienie.
- 6:55To wszystko.
- 6:56Jedna wiadomość zamiast setek.
- 6:57Różnica w wydajności jest ogromna, a Twój punkt końcowy nie musi być skomplikowany.
- 7:01Musi być po prostu publicznie dostępny, obsługiwać HTTPS i szybko odpowiadać.
- 7:05Za chwilę powiemy, co oznacza szybko.
- 7:08Ale główna idea jest prosta.
- 7:09Twój punkt końcowy nasłuchuje, gra w dzwoni, Ty odpowiadasz i gotowe.
- 7:13Tworzenie subskrypcji.
- 7:15Jak więc faktycznie to skonfigurować?
- 7:17Przejdźmy krok po kroku przez proces tworzenia subskrypcji.
- 7:20Zaczynasz od wysłania żądania HTTP POST na określony adres URL w Microsoft Graph.
- 7:24Tym adresem URL jest httpsgraf.microsoft.com ukośnik v1.0 ukośnik subscriptions.
- 7:29Wysyłasz żądanie bezpośrednio do punktu końcowego subskrypcji.
- 7:32Wewnątrz treści żądania umieszczasz szczegóły tego, co chcesz subskrybować.
- 7:35Musisz podać cztery kluczowe pola.
- 7:37Pierwszym jest adres URL powiadomienia Notification URL.
- 7:39To adres URL twojego punktu końcowego, czyli miejsce, do którego Microsoft Graph będzie wysyłać powiadomienia.
- 7:43Musi on obsługiwać HTTPS i być publicznie dostępny, ponieważ graph musi mieć możliwość połączenia z nim przez internet.
- 7:47Drugim jest zasób Resource.
- 7:49Mówi on usłudze graph, co chcesz obserwować.
- 7:51Określasz ścieżkę zasobu Microsoft Graph.
- 7:53Na przykład Users, jeśli chcesz obserwować zmiany użytkowników lub Mail Folders, Inbox, Messages, jeśli chcesz monitorować nowe e-maile w skrzynce odbiorczej.
- 8:00Zasób informuje graph dokładnie o tym, co cię interesuje.
- 8:02Trzecim jest typ zmiany Change Type.
- 8:04Informuje on graph, o jakich rodzajach zmian chcesz otrzymywać powiadomienia.
- 8:07Możesz określić utworzenie Created, aktualizację Updated, usunięcie Deleted lub dowolną ich kombinację.
- 8:11Jeśli interesuje Cię tylko tworzenie nowych użytkowników, ustawiasz typ zmiany na Created.
- 8:14Jeśli interesują Cię również aktualizacje, ustawiasz Created Updated.
- 8:17Czwartym jest data i godzina wygaśnięcia Expiration Date Time.
- 8:20Jest to moment wygaśnięcia subskrypcji, ponieważ subskrypcje nie trwają wiecznie.
- 8:23Ustawiasz datę i godzinę, po której graph przestanie wysyłać powiadomienia.
- 8:27Maksymalny czas trwania zależy od zasobu, który obserwujesz.
- 8:29Dla użytkowników i grup limit wynosi około 3 dni.
- 8:32Dla elementów dysków SharePoint lub OnDrive może to być nawet 30 dni.
- 8:36Musisz sprawdzić dokumentację dla każdego typu zasobu.
- 8:38Warto też wspomnieć o opcjonalnym polu Stan Klienta.
- 8:41To tajny ciąg znaków, który sam tworzysz.
- 8:43Może to być cokolwiek zechcesz.
- 8:45Losowy ciąg znaków, guj, cokolwiek wybierzesz.
- 8:47Microsoft Graph dołącza tę wartość do każdego powiadomienia wysyłanego do Twojego punktu końcowego,
- 8:51a Ty używasz jej, by zweryfikować, czy powiadomienie faktycznie pochodzi z Twojej subskrypcji.
- 8:55Jeśli ktoś spróbuje wysłać fałszywe powiadomienia do Twojego punktu końcowego,
- 8:58stan klienta się nie zgodzi i możesz je natychmiast odrzucić.
- 9:01To prosty środek bezpieczeństwa, ale bardzo ważny.
- 9:03Tworzenie subskrypcji przypomina zapisanie się na dostawę gazety.
- 9:06Podajesz gazecie swój adres.
- 9:08To jest Twój adres URL powiadomień.
- 9:10Mówisz im, jakie sekcje Cię interesują, to Twój zasób i typ zmiany oraz jak długo ma trwać dostawa.
- 9:16To jest Twój czas wygaśnięcia.
- 9:17Gazeta zajmuje się resztą, ale jest pewien szczegół – subskrypcje wygasają.
- 9:21Nie możesz jej stworzyć i o niej zapomnieć.
- 9:23Gdy minie czas wygaśnięcia, Graph przestaje wysyłać powiadomienia, a Twoja subskrypcja przestaje istnieć.
- 9:29Jeśli chcesz nadal otrzymywać powiadomienia, musisz odnowić subskrypcję przed jej wygaśnięciem,
- 9:33wysyłając żądanie patch do punktu końcowego subskrypcji z nowym czasem wygaśnięcia.
- 9:36Zatem stworzenie subskrypcji to pierwszy krok, ale nie ostatni.
- 9:39Musisz zarządzać jej cyklem życia.
- 9:41Porozmawiamy o tym później.
- 9:43Uścisk dłoni walidacji.
- 9:44Zanim Twoja subskrypcja zacznie działać, jest krok, którego nie możesz pominąć.
- 9:47Microsoft Graph nie przyjmuje po prostu Twojej prośby o subskrypcję i nie zaczyna od razu wysyłać powiadomień.
- 9:52Najpierw musi potwierdzić, że Twój punkt końcowy jest prawdziwy i gotowy na ich odbiór.
- 9:55Oto jak to działa.
- 9:56Gdy wysyłasz żądanie post w celu utworzenia subskrypcji,
- 9:59Microsoft Graph natychmiast wysyła testowy post na Twój adres URL powiadomień.
- 10:02Ten testowy post zawiera parametr zapytania o nazwie token walidacji.
- 10:06To po prostu losowy ciąg znaków.
- 10:07Twój punkt końcowy musi pobrać ten token i odesłać go jako odpowiedź w formacie zwykłego tekstu,
- 10:11a musisz to zrobić w ciągu 10 sekund.
- 10:12Pomyśl o tym jak o kurierze dostarczającym przesyłkę.
- 10:15Puka do Twoich drzwi i pyta, czy to właściwy adres?
- 10:17Może Pan, Pani potwierdzić?
- 10:18Musisz potwierdzić odbiór podpisem.
- 10:20Jeśli tego nie zrobisz, kurier odejdzie.
- 10:21Kurier nie zostawi przesyłki, po prostu odchodzi.
- 10:24Dokładnie tak to wygląda w tym przypadku.
- 10:26Microsoft Graph mówi, mam zamiar wysłać Ci ważne powiadomienia.
- 10:29Udowodnij, że jesteś właściwą osobą pod właściwym adresem.
- 10:32Twój punkt końcowy odpowiada odsyłając token walidacji,
- 10:36który mówi Graph, tak jestem tutaj.
- 10:38Słucham, wyślij mi powiadomienia.
- 10:40W tym miejscu wielu programistów popełnia błąd.
- 10:43Token walidacji musi zostać zwrócony jako zwykły tekst.
- 10:45Nie JSON, nie HTML, lecz zwykły tekst.
- 10:48A odpowiedź musi mieć nagłówek typu zawartości ustawiony na text plain.
- 10:51Jeśli odeślesz go w formacie JSON lub w jakikolwiek sposób zakodowany,
- 10:54walidacja się nie powiedzie.
- 10:55Twoja subskrypcja nie zostanie utworzona.
- 10:57Microsoft Graph zwróci błąd, a Ty będziesz się zastanawiać, co poszło nie tak.
- 11:00Jest jeszcze jeden szczegół techniczny, który warto znać.
- 11:02Usługa walidacji Microsoft Graph nie obsługuje niezawodnie TLS 1.3.
- 11:06Negocjuje ona protokół TLS 1.2.
- 11:08Jeśli więc Twój punkt końcowy akceptuje tylko połączenia TLS 1.3,
- 11:11uścisk dłoni walidacji nie uda się, zanim kod aplikacji w ogóle zadziała.
- 11:14Musisz upewnić się, że Twój punkt końcowy obsługuje TLS 1.2,
- 11:18przynajmniej na potrzeby walidacji.
- 11:19Potem możesz wymusić dowolną wersję TLS dla właściwych powiadomień.
- 11:23Dobra wiadomość jest taka, że ten uścisk dłoni walidacji ma miejsce tylko raz na subskrypcję.
- 11:27Nie jest to coś, co punkt końcowy musi obsługiwać przy każdym powiadomieniu,
- 11:30tylko za pierwszym razem.
- 11:31Gdy Graph potwierdzi, że Twój punkt końcowy jest prawdziwy,
- 11:34ufa mu przez cały okres subskrypcji.
- 11:36Wystarczy więc, że zrobisz to dobrze tylko raz.
- 11:38Obsługa powiadomień i bezpieczeństwo.
- 11:40Gdy uścisk dłoni walidacji przebiegnie pomyślnie,
- 11:43a subskrypcja stanie się aktywna,
- 11:44Microsoft Graph zacznie wysyłać powiadomienia.
- 11:46Jak one właściwie wyglądają w praktyce?
- 11:48Gdy coś się zmieni,
- 11:49Graph wysyła żądanie HTTP POST do Twojego punktu końcowego z obiektem JSON w treści.
- 11:54Obiekt ten zawiera zasób, który uległ zmianie,
- 11:56typ zmiany, czyli utworzenie, aktualizację lub usunięcie oraz znacznik czasu.
- 12:00Zawiera również wartość stanu klienta,
- 12:02którą ustawiłeś podczas tworzenia subskrypcji.
- 12:04To Twój tajny ciąg znaków,
- 12:05sposób na upewnienie się, że wiadomość jest prawdziwa.
- 12:07Oto pierwsza rzecz, którą należy zrobić po otrzymaniu powiadomienia.
- 12:10Zweryfikuj ten stan klienta.
- 12:11Porównaj wartość w powiadomieniu z sekretem,
- 12:13który zapisałeś podczas tworzenia subskrypcji.
- 12:15Jeśli się nie zgadzają, odrzuć ją natychmiast,
- 12:17bo może to być fałszywka, próba oszukania systemu
- 12:20i przetworzenia błędnych danych.
- 12:21Ma to znaczenie, ponieważ Twój punkt końcowy znajduje się w publicznym internecie.
- 12:24Każdy, kto zna Twój adres URL,
- 12:26może wysłać do niego żądanie post.
- 12:27Bez walidacji stanu klienta nie byłbyś w stanie
- 12:29odróżnić prawdziwego powiadomienia Microsoft Graph
- 12:32od fałszywego.
- 12:33To prosta kontrola, ale jest pierwszą linią obrony.
- 12:35Gdy potwierdzisz, że powiadomienie jest autentyczne,
- 12:38musisz zareagować szybko.
- 12:39Microsoft Graph oczekuje odpowiedzi HTTP
- 12:41z poziomu 200 w ciągu 3 sekund.
- 12:43Jeśli zajmie Ci to więcej czasu, Graph to zauważy.
- 12:45A jeśli zdarza się to zbyt często, Graph zacznie traktować Cię inaczej.
- 12:48Oto jak działa ograniczanie przepustowości.
- 12:50Jeśli ponad 10% Twoich odpowiedzi
- 12:52przekracza 3-sekundowe okno w dowolnym 10-minutowym odstępie,
- 12:54Microsoft Graph oznaczy Twój punkt końcowy jako wolny.
- 12:57Gdy tak się stanie, nowe powiadomienia
- 12:58będą opóźnione o 10 minut.
- 13:00Nadal będą docierać, ale stracisz dostarczanie
- 13:02w czasie rzeczywistym.
- 13:03A jeśli sytuacja się pogorszy i ponad 15% Twoich odpowiedzi
- 13:06przekroczy 10 sekund, Graph oznaczy Twój punkt końcowy
- 13:08jako porzucony.
- 13:09W tym stanie powiadomienia są całkowicie odrzucane przez 10 minut.
- 13:12Oto ta przerażająca część.
- 13:13Odrzuconych powiadomień nie da się odzyskać.
- 13:15Przepadają bezpowrotnie i nigdy ich nie odzyskasz.
- 13:17Pomyśl o tym jak o zajętej linii telefonicznej.
- 13:19Jeśli nie odbierzesz szybko, dzwoniący spróbuje ponownie później.
- 13:22Ale jeśli nigdy nie odbierzesz, w końcu dzwoniący się podda.
- 13:24Microsoft Graph jest dzwoniącym,
- 13:26a Twój punkt końcowy to telefon.
- 13:27Odbieraj szybko, inaczej ryzykujesz utratę wiadomości.
- 13:30Jakie są więc najlepsze praktyki w tej kwestii?
- 13:32Potwierdzaj natychmiast i przetwarzaj asynchronicznie.
- 13:34Twój punkt końcowy powinien zweryfikować stan klienta,
- 13:37zaakceptować powiadomienie i zwrócić odpowiedź 200 lub 202
- 13:40tak szybko jak to możliwe.
- 13:41Następnie umieść powiadomienie w kolejce do przetwarzania w tle.
- 13:44Może to być kolejka Azure, Service Bus,
- 13:46a nawet prosta tabela w bazie danych.
- 13:48Chodzi o to, aby szybko wyjść z cyklu odpowiedzi
- 13:50i pozwolić pracownikom w tle zająć się ciężką pracą.
- 13:52I jeszcze jedno przypomnienie o bezpieczeństwie.
- 13:54Twój punkt końcowy musi być HTTPS bez wyjątków.
- 13:56Microsoft Graph nie wyśle powiadomień do punktu końcowego HTTP.
- 13:59Twój punkt końcowy musi być również publicznie dostępny.
- 14:02Jeśli znajduje się za Firewallem lub VPN,
- 14:03Graph nie będzie mógł się z nim połączyć.
- 14:05Do celów deweloperskich możesz użyć narzędzi takich jak Grog,
- 14:07aby stworzyć publiczny tunel do lokalnej maszyny.
- 14:09Jednak na produkcji Twój punkt końcowy
- 14:11musi znajdować się tam, gdzie Graph go znajdzie.
- 14:14Utrzymywanie cyklu życia powiadomień.
- 14:15Masz więc skonfigurowaną subskrypcję,
- 14:17powiadomienia płyną i wszystko wygląda dobrze.
- 14:20Ale oto coś, co zaskakuje wiele osób.
- 14:22Twoja subskrypcja ma datę wygaśnięcia.
- 14:24Nie trwa ona wiecznie.
- 14:25W zależności od monitorowanego zasobu
- 14:27maksymalny czas subskrypcji wynosi zazwyczaj od 3 do 7 dni.
- 14:30Dla niektórych zasobów, takich jak elementy dysków SharePoint,
- 14:32można uzyskać do 30 dni.
- 14:33Chodzi jednak o to, że nie jest to stan permanentny.
- 14:35Nie możesz utworzyć subskrypcji i o niej zapomnieć.
- 14:38Pomyśl o tym, jak o subskrypcji czasopisma.
- 14:40Zapisujesz się, zaczynasz otrzymywać numery
- 14:41i wszystko jest wspaniale.
- 14:43Ale jeśli nie odnowisz subskrypcji,
- 14:44przed jej wygaśnięciem czasopisma przestaną przychodzić.
- 14:46Tutaj jest dokładnie tak samo.
- 14:47Jeśli Twoja subskrypcja wygaśnie,
- 14:48Microsoft Graph przestanie wysyłać powiadomienia.
- 14:50Możesz nawet nie zdać sobie z tego sprawy,
- 14:51dopóki nie zaczniesz się zastanawiać,
- 14:52dlaczego nic się nie dzieje.
- 14:53Dlatego potrzebujesz strategii odnawiania.
- 14:55Sposób odnawiania jest prosty.
- 14:56Wyślij żądanie typu patch do punktu końcowego subskrypcji,
- 14:59używając jej identyfikatora
- 15:00i zaktualizuj datę wygaśnięcia na nową, przyszłą datę.
- 15:02To przedłuża ważność subskrypcji.
- 15:04Możesz to robić dowolną liczbę razy,
- 15:06pod warunkiem, że zrobisz to przed upływem
- 15:07bieżącego terminu ważności.
- 15:09Microsoft Graph pomaga w tym za pomocą tak zwanej
- 15:11powiadomień o cyklu życia.
- 15:13Podczas tworzenia subskrypcji
- 15:14możesz podać osobny adres URL,
- 15:16zwany adresem URL powiadomień o cyklu życia.
- 15:18Microsoft Graph wysyła pod ten adres alerty,
- 15:20gdy wystąpią określone zdarzenia.
- 15:22Na przykład, gdy subskrypcja wkrótce wygaśnie,
- 15:24token dostępu kończy ważność
- 15:25lub zmieniają się uprawnienia Twojej aplikacji.
- 15:27Te powiadomienia o cyklu życia to sygnał ostrzegawczy.
- 15:30Nie musisz zgadywać, kiedy Twoja subskrypcja wygaśnie.
- 15:32Graph informuje Cię,
- 15:33hej, Twoja subskrypcja wygasa za kilka godzin.
- 15:36Warto ją odnowić.
- 15:37To jak otrzymanie przypomnienia od wydawcy czasopisma,
- 15:39że subskrypcja dobiega końca.
- 15:41Bardzo przydatne, jeśli zwracasz na to uwagę.
- 15:43Ale co się stanie, jeśli mimo wszystko coś pójdzie nie tak?
- 15:45Może Twój punkt końcowy przez chwilę nie działa
- 15:47lub powiadomienia zostały utracone,
- 15:48bo reagowałeś zbyt wolno.
- 15:49Co wtedy?
- 15:50Tutaj z pomocą przychodzi Delta Query
- 15:52osobna funkcja Microsoft Graph,
- 15:53która pozwala zapytać,
- 15:54co zmieniło się od ostatniego sprawdzenia.
- 15:56Zwraca ona tylko zmiany, nic poza tym.
- 15:59Oto jak to działa.
- 16:00Gdy uruchamiasz Delta Query dla zasobu po raz pierwszy,
- 16:02powiedzmy dla użytkowników,
- 16:03Graph zwraca wszystkich użytkowników w Twoim dzierżawcy.
- 16:05Ale zwraca też coś dodatkowego,
- 16:06specjalny link zwany Delta Link.
- 16:08Zapisujesz ten link.
- 16:09Przy następnym uruchomieniu tego samego zapytania
- 16:10używasz właśnie tego Delta Linku.
- 16:12I zamiast ponownie pobierać wszystkich użytkowników,
- 16:14otrzymujesz tylko tych,
- 16:14którzy zmienili się od czasu ostatniego żądania.
- 16:16Nowi użytkownicy,
- 16:17zaktualizowani użytkownicy,
- 16:18usunięci użytkownicy.
- 16:19To wszystko.
- 16:20Potraktuj to jak czytanie listy nowości
- 16:22zamiast czytania całej encyklopedii za każdym razem.
- 16:24Znacznie szybciej, znacznie mniej danych.
- 16:26Oto inteligentny wzorzec postępowania.
- 16:28Połącz webhoki z Delta Query.
- 16:29Używaj webhoków do otrzymywania informacji o zmianach,
- 16:31a następnie Delta Query,
- 16:32aby sprawdzić, co dokładnie się zmieniło.
- 16:34Wyjaśnię, dlaczego to ważne.
- 16:35Webhoki są szybkie, ale nie są idealne.
- 16:37Powiadomienia mogą zaginąć,
- 16:38subskrypcje mogą wygasnąć,
- 16:39a twój punkt końcowy może przestać działać.
- 16:41Ale Delta Query jest niezawodne.
- 16:42Możesz go uruchomić w dowolnym momencie,
- 16:44a otrzymasz pełną listę zmian od ostatniego sprawdzenia.
- 16:46Więc nawet jeśli przegapisz powiadomienie,
- 16:48możesz wszystko nadrobić.
- 16:49Oto typowy przebieg procesu.
- 16:51Skonfiguruj subskrypcję webhoka dla zmian użytkowników.
- 16:53Uruchom początkowe zapytanie Delta,
- 16:55aby uzyskać stan bazowy i zapisać link Delta.
- 16:57Gdy nadejdzie webhuk informujący o zmianie użytkownika,
- 16:59uruchom zapytanie Delta za pomocą zapisanego linku.
- 17:01To pozwoli Ci uzyskać dokładną informację o zmianie.
- 17:03Przetwórz ją, a następnie zapisz nowy link Delta z tej odpowiedzi.
- 17:06Przy następnym webhoku powtórz cały proces.
- 17:08A jeśli kiedykolwiek przegapisz powiadomienie lub subskrypcja wygaśnie,
- 17:11po prostu uruchom zapytanie Delta ponownie.
- 17:13Otrzymasz wszystko, co Cię ominęło.
- 17:15To Twoja siatka bezpieczeństwa.
- 17:16Webhoki zapewniają szybkość, a zapytania Delta niezawodność.
- 17:20Razem tworzą potężne połączenie.
- 17:21Przykład z życia wzięty i kolejne kroki.
- 17:24Wyobraź sobie, że jutro do firmy dołącza nowy pracownik.
- 17:26Ktoś z HR tworzy jego konto w Microsoft Entra ID
- 17:29i ta jedna czynność wywołuje reakcję łańcuchową.
- 17:32Jeśli masz skonfigurowaną subskrypcję webhoka dla zmian użytkowników Microsoft Graph,
- 17:36zauważy to natychmiast i wyślę żądanie post do Twojego punktu końcowego.
- 17:39Oto co dzieje się dalej.
- 17:40Twój punkt końcowy otrzymuje powiadomienie,
- 17:42sprawdza stan klienta i jeśli zgadza się z Twoim kluczem,
- 17:44wiesz, że jest ono autentyczne.
- 17:46Zwracasz odpowiedź 202 Accepted w ciągu 3 sekund,
- 17:49potwierdzając otrzymanie powiadomienia,
- 17:51a następnie przejmuje je proces w tle.
- 17:52Proces widzi, że użytkownik został utworzony,
- 17:54ale powiadomienie nie zawiera wszystkich szczegółów,
- 17:56więc uruchamia zapytanie Delta przy użyciu zapisanego linku.
- 17:59Zwraca to pełne dane nowego użytkownika,
- 18:01imię i nazwisko, e-mail, dział, stanowisko,
- 18:03przełożonego, wszystko, czego potrzebujesz.
- 18:05Teraz proces pobiera te informacje
- 18:06i tworzy konto dla nowego pracownika
- 18:08w Twoim zewnętrznym systemie rejestracji czasu pracy.
- 18:10Wysyła e-mail powitalny,
- 18:12dodaje go do odpowiednich list dystrybucyjnych.
- 18:14Wszystko to dzieje się w ciągu sekund
- 18:16od utworzenia konta przez HR w Entra ID.
- 18:18Bez odpytywania, bez ręcznych kroków,
- 18:20bez opóźnień.
- 18:21Pomyśl o alternatywie.
- 18:23Bez webhooków musiałbyś odpytywać punkt końcowy użytkowników
- 18:25co kilka minut, wykonując setki zapytań dziennie,
- 18:27a nawet wtedy nowy użytkownik mógłby pojawić się z opóźnieniem.
- 18:30Dzięki webhookom dzieje się to natychmiast.
- 18:32Jedno powiadomienie, jedno zapytanie Delta, gotowe.
- 18:34To jest prawdziwa wartość.
- 18:35Twój system staje się szybszy, wydajniejszy
- 18:37i mniej narażony na limity przepustowości.
- 18:39Zamiast ciągle pytać graf o aktualizację,
- 18:41pozwalasz, aby graf informował Cię, gdy coś się wydarzy.
- 18:43To fundamentalna zmiana w sposobie budowania integracji.
- 18:45Oto co chcę, żebyś wypróbował.
- 18:47Pomyśl o jednym procesie, który obecnie odpytujesz.
- 18:49Może sprawdzasz nowe wiadomości w skrzynce współdzielonej.
- 18:52Może śledzisz zmiany plików w bibliotece SharePoint.
- 18:55Może monitorujesz aktualizację użytkowników w systemie Hrabia.
- 18:57Czy webhook mógłby zastąpić to odpytywanie?
- 18:59W większości przypadków odpowiedź brzmi tak
- 19:01i nie musisz wszystkiego budować.