Latest / M365.FM – подкаст про Microsoft 365, Copilot і ШІ українською / Вебхуки Microsoft Graph простими словами: сповіщення в реальному часі замість постійного опитування (ШІ-дубляж)
Transcript
- 0:00Готові до 10-х днів Microsoft 365, Co-Pilot, She, Azure та людей, що формують майбутні роботи.
- 0:07Цього січня M365Con повертається, і ми стаємо ще масштабнішими.
- 0:12Приєднуйтесь до нас на живі сесії, демонстрації реальних кейсів та практичні знання від MVP та експертів галузі з усього світу.
- 0:18Жодних шаблонних слайдів чи нескінченних модних слів.
- 0:21Ми розбираємо реальні виклики Co-Pilot Studio, She-агенти, Fabric, безпека, управління та автоматизація.
- 0:29Незалежно від того, чи ви IT-спеціаліст, розробник або бізнес-лідер, у нас є сесії саме для вас.
- 0:35За 10 повних днів ви зможете дослідити різні технології та налагодити зв'язки з глобальною спільнотою.
- 0:40Дивіться наживо та приносте практичні ідеї у свою організацію.
- 0:45Січень 2027 – 10 днів, одна спільнота Microsoft.
- 0:49Реєстрація вже відкрита.
- 0:51Переходьте на M365Con.net і забезпечте собі місце вже сьогодні.
- 0:56Це M365Con.net
- 0:59Долучайтеся на M365Con.net і побачимося наживо в січні.
- 1:04Всім привіт і ласкаво просимо до чергового епізоду Microsoft Knowledge Nuggets тут на M365FM.
- 1:10Я ваш ведучий Мілко Пітерс.
- 1:12Сьогоднішня тема – це те, про що чув майже кожен, хто працює з Microsoft 365, але мало хто може чітко пояснити.
- 1:17Що ж таке насправді Webhook і Graph?
- 1:19Чому вам варто звернути на них увагу замість того, щоб робити все по-старому?
- 1:21Проблема опитування.
- 1:46Давайте розберемося в цьому.
- 1:47Щоб зрозуміти, чому вебхоки важливі, потрібно зрозуміти, чому опитування шкодить.
- 1:51Ось як працює більшість застосунків сьогодні.
- 1:53Вашому застосунку потрібна відповідь.
- 1:55Він запитує Microsoft Graph «Гей, є нові користувачі?»
- 1:57Граф відповідає «Ні».
- 1:59Отже, ваш застосунок трохи чекає, а потім знову запитує «Є нові користувачі зараз?»
- 2:02Знову «Ні».
- 2:03Знову і знову цей процес і є опитуванням.
- 2:05Подумайте про це, як про постійні дзвінки другу, щоб дізнатися, чи є якісь новини.
- 2:08Ви набираєте, вони беруть слухавку, ви запитуєте, вони кажуть «Ні», викладайте слухавку.
- 2:11Потім ви дзвоните знову через п'ять хвилин і знову.
- 2:13Ви спалюєте їхній час і свій власний.
- 2:15Ви, мабуть, їх дратуєте.
- 2:17А тепер уявіть тисячі застосунків, які роблять це до Microsoft Graph одночасно.
- 2:20Кожен додаток опитує кожні кілька хвилин, ставлячи одні й ті самі питання, отримуючи ті самі відповіді.
- 2:24Це створює багато зайвого шуму.
- 2:26Microsoft має назву для надто агресивного опитування «Тротлінг» або, як кажуть деякі розробники, «В'язниця Граф».
- 2:31Коли ви надсилаєте за багато запитів, Microsoft каже «Гаразд, ви на деякий час відпочинете».
- 2:35Вони обмежують кількість викликів вашого додатка.
- 2:37Як тільки вас обмежили, все сповільнюється.
- 2:39Легітимні запити накопичуються.
- 2:40Ваш додаток перестає працювати належним чином.
- 2:42Ви гадки не маєте, коли вас випустять.
- 2:44Про яку кількість запитів йдеться?
- 2:45Припустімо, ваш додаток опитує сервери кожні 5 хвилин щодо змін користувачів.
- 2:48Це виходить 12 запитів на годину.
- 2:50За повну добу це 288 запитів, і це лише для одного ресурсу.
- 2:54Якщо ви також опитуєте групи, файли, повідомлення та події календаря,
- 2:57ви накопичуєте тисячі непотрібних запитів на день.
- 3:00Більшість з них нічого не повертають, жодних змін, але ви все одно зробили виклик.
- 3:03І ось у чому річ, навіть якщо ви опитуєте кожні 5 хвилин,
- 3:06ви все одно не отримуєте оновлень у реальному часі.
- 3:08Зміна може статися через одну хвилину після вашого останнього опитування.
- 3:11Ви не дізнаєтеся про це ще 4 хвилини.
- 3:13Ви марнуєте ресурси і все одно втрачаєте час.
- 3:15Тепер порівняйте це з подійно орієнтованим підходом.
- 3:18Замість того, щоб викликати Microsoft Graph кожні кілька хвилин,
- 3:20ви чекаєте, поки Microsoft Graph викличе вас.
- 3:21Ви налаштовуєте слухач.
- 3:22Коли щось змінюється, Graph надсилає вам сповіщення.
- 3:25Ви не телефонуєте самі.
- 3:26Ви піднімаєте слухавку, коли телефон дзвонить.
- 3:28Що таке вебхуки?
- 3:29Отже, що саме являє собою вебхук?
- 3:31Ось найпростіше визначення.
- 3:32Вебхук – це HTTP запит, який надсилається автоматично, коли щось стається.
- 3:36Ви не просите про це, сервер просто надсилає його вам.
- 3:39Уявіть це як дверний дзвінок.
- 3:40Ви не стоїте на дворі, перевіряючи кожні кілька хвилин.
- 3:43Ви встановлюєте дверний дзвінок.
- 3:44Коли хтось приходить, вони дзвонять.
- 3:46Ви чуєте дзвінок і відчиняєте.
- 3:47Дзвінок стежить за вас.
- 3:49Вебхуки іноді називають зворотними ARRI.
- 3:51Зі звичайним ARRI ваш додаток робить запит, і сервер відповідає.
- 3:55Ваш додаток контролює процес.
- 3:56З вебхуком сервер надсилає запит вашому додатку.
- 3:59Сервер контролює процес, але надсилає дані, замість того, щоб чекати, поки ви запитаєте.
- 4:02Microsoft Graph також використовує вебхуки, але Microsoft називає їх сповіщеннями про зміни.
- 4:07Це те саме, просто інша назва.
- 4:09Коли щось змінюється в Microsoft 365, Graph надсилає HTTP POST на надану вам URL-адресу.
- 4:15Цей POST містить інформацію про те, що саме змінилося.
- 4:17Існує багато речей, про які ви можете отримувати сповіщення.
- 4:20У вашому клієнті створюється новий користувач, оновлюється файл у SharePoint,
- 4:24надсилається повідомлення в Teams, змінюється подія в календарі або до групи додається новий учасник.
- 4:28Усе це може ініціювати сповіщення.
- 4:30Ось реальний приклад.
- 4:31Припустимо, ви керуєте компанією із системою обліку робочого часу.
- 4:34Коли з'являється новий співробітник, ви хочете автоматично створити для нього обліковий запис.
- 4:37Без вебхуків вам доводиться опитувати кінцеву точку користувачів кожні кілька хвилин, перевіряючи, чи не з'явилися нові люди.
- 4:41З вебхуками ви підписуєтеся на події створення користувачів.
- 4:44Коли хтось приєднується, граф надсилає вашому додатку сповіщення.
- 4:47Ваш додаток отримує його, перевіряє та створює обліковий запис усе за лічені секунди.
- 4:51Жодних опитувань, жодних марних запитів.
- 4:53Інший приклад.
- 4:54Ви маєте бібліотеку документів SharePoint, куди завантажуються квитанції.
- 4:57Без вебхуків ви постійно опитуєте бібліотеку.
- 5:00З вебхуками граф повідомляє вам, щойно файл додано.
- 5:03Ваш додаток отримує його, перевіряє, чи це квитанція, і обробляє її автоматично.
- 5:06У цьому і полягає сила вебхуків.
- 5:08Замість того, щоб ваш додаток постійно запитував, є щось нове.
- 5:11Ви дозволяєте системі повідомляти вас, коли щось стається.
- 5:13Це ефективніше, надійніше та значно швидше.
- 5:16Як працюють вебхуки Microsoft Graph?
- 5:18Тепер ви знаєте, що таке вебхуки та чому опитування є проблемою.
- 5:27Підписки, сповіщення та вашої кінцевої точки.
- 5:30По-перше, ви створюєте підписку.
- 5:32Ви кажете Microsoft Graph «Гей, я хочу знати, коли зміниться цей конкретний об'єкт».
- 5:36Ви надаєте граф деталі того, за чим стежити та куди надсилати звіти.
- 5:39Уявіть це як підписку на сповіщення.
- 5:41Ви повідомляєте системі, що вас цікавить, і надаєте свою контактну інформацію.
- 5:44По-друге, Microsoft Graph стежить за цим ресурсом.
- 5:46Він відстежує зміни.
- 5:47Коли щось трапляється, наприклад, створено користувача,
- 5:50оновлено файл або отримано повідомлення, граф помічає це.
- 5:52По-третє, граф надсилає сповіщення.
- 5:54Він відправляє HTTP POST на надану вами URL-адресу.
- 5:57Цей POST містить інформацію про те, що саме змінилося.
- 6:00Ваша кінцева точка отримує його, і ваш додаток обробляє це.
- 6:02Отже, загальний процес простий.
- 6:04Ви підписуєтеся, граф стежить, граф надсилає POST, коли щось змінюється.
- 6:08Давайте розберемо ці три компоненти трохи детальніше.
- 6:10Підписка – це ваш запит на отримання сповіщення.
- 6:13Це ніби сказати «Я хочу знати, коли в моєму клієнті буде додано нового користувача».
- 6:16Ви надсилаєте цей запит до Microsoft Graph, і граф зберігає його.
- 6:19З цього моменту граф стежить за ситуацією від вашого імені.
- 6:22Сповіщення – це власне попередження HTTP POST-запит, який граф надсилає на вашу кінцеву точку.
- 6:26Тіло POST-запиту містить деталі про зміни, який ресурс змінився, який тип зміни стався і коли це було.
- 6:31Ваша кінцева точка – це двері, які ви залишаєте відчиненими.
- 6:34Це URL-адреса на вашому сервері, налаштована для отримання таких POST-запитів.
- 6:37Вона має просто слухати та швидко відповідати.
- 6:39Ось і все.
- 6:40На стороні отримувача непотрібна складна логіка.
- 6:42Просто отримайте сповіщення, підтвердьте його і обробіть.
- 6:45Тепер порівняйте це з опитуванням Paulin.
- 6:47При опитуванні ви робите сотні DT-запитів, запитуючи, чи є щось нове.
- 6:51Найчастіше відповідь – ні.
- 6:52З вебхуками є лише один POST-запит з повіщення.
- 6:55Ось і все.
- 6:56Одне повідомлення замість сотень.
- 6:57Різниця в ефективності величезна і ваша кінцева точка не повинна бути складною.
- 7:01Вона має бути загальнодоступною, працювати через HTTPS і швидко відповідати.
- 7:05Ми трохи згодом поговоримо про те, що означає «швидко».
- 7:08Але основна ідея проста.
- 7:09Ваша точка слухає, граф викликає, ви відповідаєте і готово.
- 7:14Створення підписки.
- 7:15Отже, як саме це налаштувати?
- 7:17Давайте покроково розглянемо створення підписки.
- 7:20Ви починаєте з надсилання HTTP POST-запиту на конкретну URL-адресу в Microsoft Graph.
- 7:24Ця адреса – HTTPS2.2скіснірискиграф.microsoft.com.косариска.v1.0.косариска.сабскріпшнс.
- 7:29Ви надсилаєте запит безпосередньо на кінцеву точку підпису.
- 7:32У тілі цього запиту ви вказуєте деталі того, на що хочете підписатися.
- 7:35Є чотири ключові поля, які потрібно надати.
- 7:37Перше – це URL-сповіщення – Notification URL.
- 7:39Це URL вашої кінцевої точки – місце, куди Microsoft Graph надсилатиме сповіщення.
- 7:43Він має бути HTTPS і загальнодоступним, оскільки Graph повинен мати доступ до нього з інтернету.
- 7:47Друге – це ресурс Razos.
- 7:49Це вказує Graph, за чим саме ви хочете стежити.
- 7:51Ви вказуєте шлях до ресурсу Microsoft Graph.
- 7:53Наприклад, Uses, якщо хочете відстежувати зміни користувачів,
- 7:56або Me, MailFolders, Inbox, Messages, якщо хочете стежити за новими листами ухідних.
- 8:00Ресурс чітко пояснює Graph, що саме вас цікавить.
- 8:02Третє – це тип зміни Change Type.
- 8:04Це повідомляє Graph, про які саме типи змін вас сповіщати.
- 8:07Ви можете вказати створено Created, оновлено Updated, видалено Deleted або будь-яку комбінацію.
- 8:11Отже, якщо вас цікавить лише створення нових користувачів,
- 8:13ви встановлюєте тип зміни на Created.
- 8:14Якщо вас цікавлять і оновлення, ви встановлюєте Created, Updated.
- 8:17Четверте – це дата та час завершення, Expiration Date Time.
- 8:20Це час, коли термін дії підписки закінчується, оскільки вони не вічні.
- 8:23Ви встановлюєте дату і час, і після цього Graph припиняє надсилати сповіщення.
- 8:27Максимальна тривалість залежить від ресурсу, за яким ви стежите.
- 8:37Також варто згадати необов'язкове поле «Стан клієнта – Client State».
- 8:41Це секретний рядок, який ви створюєте самі.
- 8:43Це може бути будь-що на ваш вибір.
- 8:45Випадковий рядок – ідентифікатор – GUID, що завгодно.
- 8:48Microsoft Graph додає це значення до кожного сповіщення,
- 8:50яке надсилає на ваш кінцевий пункт, і ви використовуєте його,
- 8:52щоб перевірити, чи дійсно сповіщення надійшло від вашої підписки.
- 8:55Якщо хтось спробує надіслати підроблені сповіщення на ваш кінцевий пункт,
- 8:58стан клієнта не збігатиметься, і ви зможете одразу їх відхилити.
- 9:01Це простий захід безпеки, але він важливий.
- 9:03Створення підписки схоже на оформлення передплати на газету.
- 9:06Ви надаєте газеті свою адресу.
- 9:08Це ваша URL-адреса для сповіщень.
- 9:10Ви вказуєте, які розділи хочете отримувати,
- 9:12це ваш ресурс і тип змін, а також зазначаєте, як довго має тривати доставка.
- 9:16Це ваш час закінчення терміну дії.
- 9:17Газета бере на себе все інше.
- 9:19Але є нюанс – підписки мають термін дії.
- 9:21Ви не можете створити її і забути про це.
- 9:24Коли час закінчення терміну дії минає,
- 9:26граф припиняє надсилати сповіщення, і ваша підписка зникає.
- 9:29Якщо ви хочете й надалі отримувати сповіщення,
- 9:31потрібно поновити підписку до закінчення її терміну,
- 9:33надіславши запит PATCH до кінцевого пункту підписки з новим часом закінчення.
- 9:36Отже, створення підписки – це перший крок, але не останній.
- 9:39Вам потрібно керувати життєвим циклом.
- 9:41Ми поговоримо про це докладніше пізніше.
- 9:43Процес перевірки – handshake.
- 9:44Перш ніж ваша підписка запрацює, є один крок, який не можна пропускати.
- 9:48Microsoft Graph не просто приймає запит на підписку і починає надсилати сповіщення.
- 9:51Спочатку він має переконатися, що ваш кінцевий пункт справжній і готовий їх отримувати.
- 9:55Ось як це працює.
- 9:56Коли ви надсилаєте POST-запит для створення підписки,
- 9:59Microsoft Graph негайно надсилає тестовий запит на вашу URL-адресу для сповіщень.
- 10:02Цей тестовий запит містить параметр запиту, який називається токеном перевірки validation token.
- 10:06Це просто випадковий рядок.
- 10:07Ваш кінцевий пункт повинен отримати цей токен і надіслати його назад як відповідь у форматі звичайного тексту,
- 10:11при чому зробити це потрібно протягом 10 секунд.
- 10:12Уявіть це як кур'єра, що доставляє посилку.
- 10:15Він приходить до ваших дверей і запитує, чи це правильна адреса.
- 10:17Чи можете ви це підтвердити?
- 10:18Ви повинні розписатися за неї.
- 10:20Якщо ви цього не зробите, він піде геть.
- 10:21Кур'єр не залишить посилку.
- 10:23Він просто піде.
- 10:24Саме це відбувається тут.
- 10:25Microsoft Graph ніби каже, я збираюся надіслати вам важливі сповіщення.
- 10:29Доведіть, що ви та сама особа за правильною адресою.
- 10:32Ваша кінцева точка відповідає, повертаючи маркер перевірки, який каже Graph, так, я тут.
- 10:38Я слухаю.
- 10:39Надсилайте мені сповіщення.
- 10:40Ось тут багато розробників припускаються помилок.
- 10:43Маркер перевірки має бути повернутий як звичайний текст, не JSON, не HTML, а саме звичайний текст.
- 10:48І відповідь повинна містити заголовок Content Type, встановлений на Text Plain.
- 10:51Якщо ви відправите його загорнутим у JSON або будь-яким чином закодованим, перевірка не пройде.
- 10:55Ваша підписка не буде створена.
- 10:57Microsoft Graph поверне помилку, і ви будете думати, що пішло не так.
- 11:00Є ще одна технічна деталь, про яку варто знати.
- 11:02Сервіс перевірки Microsoft Graph ненадійно підтримує TLS 1.3.
- 11:06Він працює з TLS 1.2.
- 11:08Тож, якщо ваша кінцева точка приймає лише TLS 1.3,
- 11:11рукостискання перевірки не відбудеться ще до запуску вашого коду.
- 11:14Ви повинні переконатися, що ваша кінцева точка підтримує TLS 1.2, принаймні для етапу перевірки.
- 11:19Після цього ви можете використовувати будь-яку версію TLS для безпосереднього отримання сповіщень.
- 11:23Хороша новина в тому, що це рукостискання перевірки відбувається лише один раз на підписку.
- 11:27В вашій кінцевій точці не потрібно обробляти це щоразу, коли надходить сповіщення лише вперше.
- 11:31Як тільки граф підтверджує справжність вашої кінцевої точки, він довіряє їй протягом усього терміну дії підписки.
- 11:36Отже, вам потрібно зробити це правильно лише один раз.
- 11:38Обробка сповіщень та безпека.
- 11:40Після успішного рукостискання перевірки та активації підписки Microsoft Graph починає надсилати сповіщення.
- 11:46Отже, як це виглядає на практиці?
- 11:48Коли щось змінюється, Graph надсилає HTTP OST на вашу кінцеву точку з JSON-об'єктом у тілі запиту.
- 11:54Цей об'єкт містить ресурс, який змінився тип зміни створення, оновлення чи видалення та мітку часу.
- 12:00Він також містить значення клієнтського стану, Client State, яке ви вказали при створенні підписки.
- 12:04Це ваш секретний рядок, спосіб переконатися, що повідомлення справжнє.
- 12:07Тож ось перше, що потрібно зробити при надходженні сповіщення.
- 12:10Перевірте цей клієнтський стан.
- 12:11Порівняйте значення у сповіщенні з секретом, який ви зберегли під час створення підписки.
- 12:15Якщо вони не збігаються, негайно відкиньте його, оскільки це може бути підробка,
- 12:18хтось намагається змусити вашу систему обробити невірні дані.
- 12:21Це важливо, оскільки ваша кінцева точка знаходиться у відкритому доступі в інтернеті.
- 12:24Будь-хто, хто знає вашу URL-адресу, може надіслати на неї піовості запит.
- 12:27Без перевірки клієнтського стану у вас не було б способу відрізнити справжнє сповіщення Microsoft Graph від підробки.
- 12:33Це проста перевірка, але це ваш перший рубіж оборони.
- 12:35Після того, як ви підтвердили справжність сповіщення, вам потрібно швидко відповісти.
- 12:39Microsoft Graph очікує HTTP відповідь 200-го рівня протягом 3 секунд.
- 12:43Якщо ви витрачаєте більше часу, Graph це помічає.
- 12:45І якщо це стається надто часто, Graph починає ставитися до вас інакше.
- 12:48Ось як працює обмеження швидкості.
- 12:50Якщо понад 10% ваших відповідей перевищують 3-секундне вікно за будь-який 10-хвилинний період,
- 12:54Microsoft Graph позначає вашу кінцеву точку як повільну.
- 12:56Коли це стається, нові сповіщення затримуються на 10 хвилин.
- 13:00Вони все одно надходять згодом, але ви втрачуєте доставку в реальному часі.
- 13:03А якщо ситуація погіршується і понад 15% ваших відповідей перевищують 10 секунд,
- 13:07Graph позначає вашу кінцеву точку як відкинуту.
- 13:09У такому стані сповіщення повністю відкидаються протягом 10 хвилин.
- 13:18Якщо ви не відповідаєте швидко, той, хто дзвонить, спробує знову пізніше.
- 13:22Але якщо ви ніколи не відповідаєте, зрештою той, хто дзвонить, здається.
- 13:24Microsoft Graph – це той, хто дзвонить, а ваша кінцева точка – це телефон.
- 13:27Відповідайте швидко або ризикуєте втратити повідомлення.
- 13:30Отже, яка тут найкраща практика?
- 13:32Підтверджуйте негайно та обробляйте асинхронно.
- 13:34Ваша кінцева точка має перевірити стан клієнта,
- 13:37прийняти сповіщення та повернути відповідь 200 або 202 якнайшвидше.
- 13:41Потім додайте сповіщення в чергу для фонової обробки.
- 13:44Черга Azure – сервісна шина або навіть проста таблиця бази даних.
- 13:47Суть у тому, щоб швидко вийти з циклу відповіді
- 13:49та дозволити вашим фоновим процесам виконати основну роботу.
- 13:52І ще одне нагадування про безпеку –
- 13:54ваша кінцева точка має бути HTTPS без винятків.
- 13:56Microsoft Graph не надсилатиме сповіщення на HTTP кінцеву точку.
- 13:59І ваша кінцева точка має бути публічно доступною.
- 14:02Якщо вона забрань мауером або VPN, Graph не зможе до неї дістатися.
- 14:04Для розробки ви можете використовувати такі інструменти, як Engrok,
- 14:07для створення публічного тунелю до вашої локальної машини.
- 14:09Але в робочому середовищі ваша кінцева точка має розміщуватися там,
- 14:12де граф може її знайти.
- 14:13Підтримка життєвого циклу сповіщень.
- 14:16Отже, ви налаштували підписку, сповіщення надходять, і все виглядає добре.
- 14:19Але ось що застає багатьох людей з ненацька.
- 14:22Ваша підписка має термін дії.
- 14:24Вона не триває вічно.
- 14:25Залежно від ресурсу, за яким ви стежите,
- 14:27максимальна тривалість підписки зазвичай становить від 3 до 7 днів.
- 14:30Для деяких ресурсів, як от файли на диску в SharePoint,
- 14:32можна отримати до 30 днів.
- 14:34Але головне, вона не є постійною.
- 14:36Ви не можете створити підписку і забути про неї.
- 14:38Уявіть це як підписку на журнал.
- 14:40Ви підписалися, почали отримувати номери, і все чудово.
- 14:43Але якщо ви не поновите підписку до того, як вона закінчиться,
- 14:45номери перестануть надходити.
- 14:46Те саме і тут.
- 14:47Якщо ваша підписка закінчується, Microsoft Graph припиняє надсилати сповіщення.
- 14:50І ви можете цього не помітити, поки не здивуєтеся, чому нічого не відбувається.
- 14:53Отже, вам потрібна стратегія оновлення.
- 14:55Спосіб оновлення простий.
- 14:56Надійшліть PATCH запит до кінцевої точки підписки,
- 14:59використовуючи ідентифікатор підписки, іонові дату та час закінчення на нову майбутню дату.
- 15:02Це подовжує термін дії підписки.
- 15:04Ви можете робити це скільки завгодно разів,
- 15:06головне – до моменту закінчення поточного терміну дії.
- 15:08Microsoft Graph допомагає вам у цьому за допомогою так званих сповіщень про життєвий цикл.
- 15:13При створенні підписки ви можете вказати окрему URL-адресу,
- 15:15яка називається URL-адресою сповіщень про життєвий цикл.
- 15:18Microsoft Graph надсилає сповіщення на цю адресу, коли відбуваються певні події.
- 15:22Наприклад, коли ваша підписка ось-ось закінчиться,
- 15:24термін дії маркера доступу добігає кінця або змінюється дозволи вашого застосунку.
- 15:27Ці сповіщення про життєвий цикл дають вам попередження.
- 15:30Вам не потрібно вгадувати, коли закінчиться ваша підписка.
- 15:32Graph каже вам, гей, ваша підписка закінчується за кілька годин.
- 15:35Можливо, вам варто її оновити.
- 15:37Це як отримати нагадування від видавця журналу про те, що ваша передплата скоро закінчиться.
- 15:41Дуже корисно, якщо ви звертаєте на це увагу.
- 15:43Але що робити, якщо все пішло не так?
- 15:45Можливо, ваша кінцева точка тимчасово вимкнулася,
- 15:47або сповіщення були втрачені через вашу повільну роботу.
- 15:49Що тоді? Ось тут на допомогу приходить дельта-запит, окрема функція Microsoft Graph,
- 15:53яка дозволяє запитати, що змінилося з моменту останньої перевірки.
- 15:56І він повертає лише зміни, нічого більше.
- 15:59Ось як це працює.
- 16:00Коли ви вперше запускаєте дельта-запит до ресурсу, наприклад, до користувачів,
- 16:03Graph повертає всіх користувачів вашого тенента.
- 16:04Але він також повертає дещо додаткове спеціальне посилання,
- 16:06яке називається дельта-посиланням.
- 16:08Ви зберігаєте це посилання.
- 16:09Наступного разу, коли ви запустите той самий запит, ви використаєте це дельта-посилання.
- 16:12І замість того, щоб знову отримувати всіх користувачів,
- 16:14ви отримаєте лише тих, хто змінився з моменту вашого останнього запиту.
- 16:16Нові користувачі, оновлені користувачі, видалені користувачі.
- 16:19Це все.
- 16:20Сприймайте це як читання списку новин замість того,
- 16:22щоб щоразу перечитувати всю енциклопедію.
- 16:24Набагато швидше і значно менше даних.
- 16:26А тепер про розумний шаблон.
- 16:28Поєднуйте вебхуки з дельта-запитами.
- 16:29Використовуйте вебхуки, щоб дізнатися, коли щось змінилося,
- 16:31а потім використовуйте дельта-запит, щоб з'ясувати, що саме змінилося.
- 16:34Дозвольте пояснити, чому це важливо.
- 16:36Вебхуки швидкі, але вони не ідеальні.
- 16:37Сповіщення можуть губитися, підписки можуть закінчуватися,
- 16:39а ваша кінцева точка може вимкнутися.
- 16:41Але дельта-запит надійний.
- 16:42Ви можете запустити його будь-коли, і він надасть повний список змін
- 16:44з моменту вашої останньої перевірки.
- 16:46Отже, навіть якщо ви пропустите сповіщення,
- 16:48ви зможете наздогнати втрачене.
- 16:49Ось типовий робочий процес.
- 16:50Налаштуйте підписку на вебхук для відстеження змін користувачів.
- 16:53Виконайте початковий дельта-запит, щоб отримати базовий стан
- 16:55і зберегти дельта-посилання.
- 16:57Коли надходить вебхук про зміну користувача,
- 16:58виконайте дельта-запит, використовуючи збережене дельта-посилання.
- 17:01Це надасть вам точну інформацію про зміни.
- 17:03Обробіть їх, а потім збережіть нове дельта-посилання з цієї відповіді.
- 17:06Наступного разу, коли надійде вебхук, повторіть цей процес.
- 17:09І якщо ви раптом пропустите сповіщення або ваша підписка закінчиться,
- 17:12просто виконайте дельта-запит знову.
- 17:13Ви отримаєте все, що пропустили.
- 17:15Це як запобіжна сітка.
- 17:16Вебхуки забезпечують швидкість, а дельта-запит – надійність.
- 17:19Разом вони складають потужну комбінацію.
- 17:21Приклад із реального життя та наступні кроки.
- 17:24Уявіть, що завтра до вашої компанії приєднується новий співробітник.
- 17:27Хтось із відділу кадрів створює обліковий запис у Microsoft EntraID,
- 17:30і ця дія запускає ланцюгову реакцію.
- 17:32Якщо ви налаштували підписку на вебхоп для змін користувачів,
- 17:35Microsoft Graph миттєво помітиться і надійшли POST-запит на ваш кінцевий вузол.
- 17:39Ось що відбувається далі.
- 17:40Ваш кінцевий вузол отримує сповіщення, перевіряє стан клієнта,
- 17:43і якщо він збігається з вашим секретним ключем, ви знаєте, що це легітимно.
- 17:46Ви повертаєте відповідь 202 Accepted протягом трьох секунд,
- 17:49підтверджуючи отримання сповіщення, а потім ваш фоновий процес підхоплює його.
- 17:53Він бачить, що користувача було створено, але сповіщення не містить усіх деталей,
- 17:56тому він виконує дельтазапит, використовуючи збережене дельтапосилання.
- 17:59Це повертає повну інформацію про нового користувача, ім'я, імейл, відділ, посаду, керівника, все, що вам потрібно.
- 18:05Тепер ваш процес бере цю інформацію і створює обліковий запис для нового співробітника у вашій сторонній системі обліку часу.
- 18:10Він надсилає вітальний лист.
- 18:12Він додає користувача до відповідних списків розсилки.
- 18:14Все це відбувається за лічені секунди після того, як відділ кадрів створив обліковий запис у EntraID.
- 18:18Жодних опитувань, жодних ручних дій, жодних затримок.
- 18:21Подумайте про альтернативу.
- 18:23Без вебхуків вам довелося б опитувати кінцевий вузол користувачів кожні кілька хвилин,
- 18:26роблячи сотні запитів на день, і навіть тоді ви могли б дізнатися про нового користувача лише через кілька хвилин.
- 18:30З вебхуками це відбувається миттєво.
- 18:32Одне сповіщення, один дельтазапит. Готово.
- 18:34У цьому й полягає справжня цінність.
- 18:35Ваша система стає швидшою, ефективнішою і менш схильною до обмежень швидкості.
- 18:39Замість того, щоб постійно запитувати граф про оновлення,
- 18:41ви дозволяєте граф повідомляти вас, коли щось стається.
- 18:43Це фундаментальна зміна в тому, як ви будуєте інтеграції.
- 18:45Тож ось що я хочу, щоб ви спробували.
- 18:47Подумайте про один процес, який ви зараз опитуєте.
- 18:49Можливо, ви перевіряєте наявність нових листів у спільній поштовій скринці.
- 18:52Можливо, ви відстежуєте зміни файлів у бібліотеці SharePoint.
- 18:55Можливо, ви моніторите оновлення користувачів для вашої HR-системи.
- 18:57Чи може WebHub замінити таке опитування?
- 18:59У більшості випадків відповідь так, і вам не потрібно будувати все самому.