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:44Січень 2027 року, 10 днів, одна спільнота Microsoft. Реєстрація вже відкрита.
- 0:51Переходьте на M365Con.net і забронюйте своє місце сьогодні.
- 0:56Це M365Con.net
- 0:59Приєднуйтесь на M365Con.net і побачимось у січні наживо.
- 1:04Тема сьогоднішнього відео знайома майже кожному, хто створює рішення на базі Microsoft 365.
- 1:09Але більшість людей не до кінця розуміють, як це працює за лаштунками.
- 1:13Я говорю про сповіщення про зміни в Microsoft Graph.
- 1:15Що це таке і чому це має вас цікавити?
- 1:18Почнімо з проблеми, яку вони вирішують.
- 1:20Уявіть, що ви створюєте додаток, якому потрібно знати, коли щось змінюється в Microsoft 365.
- 1:24Можливо, прийшов новий лист, хтось оновив файл у SharePoint або до вашого каталогу додали користувача.
- 1:29Як ваш додаток про це дізнається?
- 1:30Справа в тому, що старий метод – це опитування – polling.
- 1:33Ваш додаток надсилає запит до Microsoft Graph кожні кілька хвилин із питанням,
- 1:36чи є щось нове з моєї останньої перевірки.
- 1:38Якщо нічого не змінилося, ви даремно витратили запит.
- 1:40А якщо зміни відбулися через 5 секунд після перевірки,
- 1:43ви дізнаєтеся про них лише в наступному циклі.
- 1:45Ви або перевіряєте занадто часто, марнуючи ресурси та ризикуючи обмеженнями,
- 1:48або занадто рідко пропускаючи важливе.
- 1:50Microsoft дійсно обмежує додатки, які опитують сервіс занадто агресивно.
- 1:53Розробники називають це «в'язницею Graph»,
- 1:55коли ваш додаток блокується через надмірну кількість запитів.
- 1:58Тож виникає питання, чи немає кращого способу.
- 2:01Що, якби замість того, щоб постійно питати про зміни,
- 2:03система сама повідомляла вас, коли вони стаються?
- 2:06Це саме те, що роблять сповіщення про зміни.
- 2:08Що таке сповіщення про зміни в Microsoft Graph?
- 2:11Ось найпростіше визначення.
- 2:13Сповіщення про зміни дозволяють додатку миттєво реагувати на події в Microsoft 365 без постійних перевірок.
- 2:19Уявіть це як датчик руху на вашій поштовій скринці.
- 2:22Замість того, щоб щогодини перевіряти пошту,
- 2:24ви встановлюєте датчик, який сповіщає вас у момент її надходження.
- 2:27Ви припиняєте марнувати час на порожні перевірки і ніколи не пропускаєте доставку.
- 2:30Ось що роблять сповіщення про зміни для вашого додатка.
- 2:32Коли щось змінюється, як-от новий лист, оновлений файл або подія в календарі,
- 2:36Microsoft Graph автоматично надсилає сповіщення вашому застосунку.
- 2:40Опитування не потрібне.
- 2:41Ця система складається з двох частин – підписки та сповіщення, які працюють разом.
- 2:45Підписка – це спосіб сказати Microsoft Graph, за чим ви хочете стежити.
- 2:49Ви повідомляєте «Гей, сповісти мене, коли хтось надійшли нове повідомлення в цю скриньку».
- 2:53Або «Повідом мене, коли файл у цій бібліотеці SharePoint буде оновлено».
- 2:56Ви реєструєте свій інтерес, і Graph бере це до уваги.
- 2:58Сповіщення – це те, що відбувається потім.
- 3:00Коли стається зміна, Graph надсилає HTTP POST, запит на надану вами кінцеву точку.
- 3:04Ваш застосунок отримує цей POST-запит, розуміє, що щось сталося,
- 3:08і вирішує, що робити, отримати нові дані, запустити робочий процес або оновити базу даних.
- 3:12Ось ключова відмінність від опитування.
- 3:15Сповіщення доставляються автоматично.
- 3:16Вашому застосунку не потрібно запитувати «Система надсилає інформацію в момент її виникнення».
- 3:20У цьому і полягає магія.
- 3:22Microsoft Graph підтримує сповіщення про зміни для широкого спектра ресурсів.
- 3:26Повідомлення, події, контакти, користувачі, групи, файли, повідомлення Teams,
- 3:29сповіщення безпеки – майже все, до чого можна отримати доступ через Graph,
- 3:32можна відстежувати на предмет змін.
- 3:33Але як це налаштувати?
- 3:35Як сказати Graph, за чим стежити і куди надсилати сповіщення?
- 3:38Створивши підписку, ви вказуєте Graph, за чим стежити.
- 3:40Отже, що таке підписка?
- 3:42Це просто запит на реєстрацію.
- 3:43Ваш застосунок каже «Сповісти мене, коли станеться ця подія».
- 3:46Ви надсилаєте цей запит до Arie Microsoft Graph.
- 3:48Graph зберігає його і чекає.
- 3:50У цьому запиті вам потрібно надати Graph кілька деталей.
- 3:52По-перше, ресурс, за яким ви хочете стежити, шлях до даних.
- 3:55Наприклад, users, якщо ви відстежуєте зміни в облікових записах користувачів.
- 3:59Або MeetMailFoldersInboxMessages, якщо ви хочете дізнаватися про нові листи.
- 4:03Далі, тип зміни.
- 4:04Ви хочете знати, коли щось створено, оновлено чи видалено.
- 4:07Можна вибрати один тип або запитати про всі три.
- 4:10По-третє, URL-адреса сповіщення.
- 4:12Це адреса вашої кінцевої точки, куди драф має надсилати сповіщення про подію.
- 4:15Це має бути загальнодоступна HTTPS-адреса.
- 4:18Тут немає жодних обхідних шляхів.
- 4:19По-четверте, дата закінчення терміну дії.
- 4:21Підписки не діють вічно.
- 4:22Ви вибираєте майбутню дату і час, коли термін дії підписки спливе.
- 4:25Але різні ресурси мають різний максимальний термін дії.
- 4:28Повідомлення Outlook можуть зберігати підписку до сімох днів.
- 4:30Максимальний термін для повідомлень чату Teams становить три дні.
- 4:32Файли SharePoint можуть зберігатися близько 30 днів.
- 4:35Інформація про присутність.
- 4:36Вона закінчується всього через один годину.
- 4:38Ось конкретний приклад.
- 4:39Припустімо, ви хочете знати, коли хтось у вашій компанії змінює посаду.
- 4:42Ви створюєте підписку на ресурс користувачів із типом зміни Updated.
- 4:46Ви вказуєте URL-адресу для сповіщень і встановлюєте термін дії на кілька днів.
- 4:50Коли хтось оновлює свій профіль Azure AD, граф надсилає POST запит на вашу кінцеву точку з корисним навантаженням сповіщення.
- 4:55Це повідомлення містить ідентифікатор користувача та інформацію про те, що змінилося.
- 4:58Ваш додаток може відреагувати на це, оновити HR-систему, надіслати сповіщення менеджеру або зробити щось інше.
- 5:03Граф відповідає на ваш запит на підписку ідентифікатором підписки.
- 5:06Цей ідентифікатор знадобиться вам пізніше, щоб керувати підпискою, поновлювати, оновлювати або видаляти її.
- 5:11Але тут є нюанс.
- 5:12Перш ніж граф почне надсилати сповіщення, він має переконатися, що ваша кінцева точка працює і готова приймати дані.
- 5:17Для цього потрібне підтвердження в Handshake.
- 5:19Пояснення маркера – підтвердження для рукостискання.
- 5:22Коли ви створюєте підписку, Microsoft Graph не довіряє вашій кінцевій точці на освіт.
- 5:26Спочатку він надсилає тестовий пінг, запит на перевірку.
- 5:29Цей пінг містить маркер підтвердження, випадковий рядок символів.
- 5:32Ваша кінцева точка повинна отримати цей маркер і надіслати його назад у форматі звичайного тексту протягом 10 секунд.
- 5:36Уявіть це як кур'єра, який дзвонить у двері, щоб переконатися, що ви вдома перш ніж залишити посилку.
- 5:41Якщо ніхто не відповідає, кур'єр нічого не залишає.
- 5:43Так само і тут.
- 5:44Якщо ваша кінцева точка не поверне маркер підтвердження, граф не надсилатиме сповіщення.
- 5:48Відповідь має бути у форматі звичайного тексту, не JSON чи XML, лише сам рядок маркера.
- 5:53Помилка у форматі призведе до того, що підтвердження не відбудеться.
- 5:56Це захід безпеки.
- 5:57Він доводить, що ваша кінцева точка працює, активна та перебуває під вашим контролем.
- 6:01Це запобігає ситуації, коли хтось вказує URL-адресу, яка їм не належить, сподіваючись перехопити сповіщення для інших.
- 6:06Немає рукостискання, немає підписки.
- 6:08Граф відхиляє запит на створення, і ви отримуєте помилку.
- 6:11Ви виправляєте кінцеву точку і пробуєте знову.
- 6:13Після успішного підтвердження підписка стає активною, і сповіщення починають надходити.
- 6:17Але ось у чому справа.
- 6:18Вони не надходять вічно.
- 6:20Підтримка з'єднання.
- 6:21Поновлення підписки.
- 6:23Кожна підписка має дату завершення дії.
- 6:25Ви встановлюєте її при створенні.
- 6:27Граф контролює її дотримання.
- 6:28Коли настає цей день, підписка припиняється.
- 6:30Сповіщення більше не надходять.
- 6:32Уявіть це як паркувальний лічильник.
- 6:34Ви вносите час, а коли він закінчується, лічильник видає сигнал про завершення.
- 6:38Різні ресурси мають різні обмеження.
- 6:40Повідомлення Outlook можуть працювати 7 днів, чати Teams – 3 дні, файли SharePoint – близько 30 днів, а інформація про присутність – лише 1 годину.
- 6:47Отже, ваш застосунок не може просто створити підписку і забути про неї.
- 6:50Вам потрібен процес, який підтримує її життєздатність.
- 6:52Поновлення. Це просто.
- 6:53Надішліть запит PATCH з ідентифікатором підписки.
- 6:56Додайте нову дату закінчення терміну дії.
- 7:04Якщо термін дії майже спливає, наприклад, протягом дня оновіть її саме тоді.
- 7:09Таким чином, вам не потрібне окреме фонове завдання лише для керування підписками.
- 7:13Microsoft також додала сповіщення про життєвий цикл.
- 7:15Ці сповіщення попереджають вас до того, як підписка закінчиться.
- 7:18Вони повідомляють, коли термін дії підписки добігає кінця, або коли ваш токен доступу потребує повторної авторизації.
- 7:22Підпишіться на них, і ваш застосунок зможе оновитися до того, як щось зламається.
- 7:25Але що, якщо ваша кінцева точка вийде з ладу, або ви пропустите вікно оновлення?
- 7:29Ось тут і вступає в дію запобіжна сітка.
- 7:31Коли все йде не так, потрібні надійність і запобіжні заходи.
- 7:34Ваша підписка активна, кінцева точка слухає, сповіщення надходять.
- 7:37Все виглядає добре, але що станеться, коли щось зламається?
- 7:40Можливо, ваша кінцева точка вимкнеться для обслуговування, мережева проблема перерви сповіщення,
- 7:44або ви просто пропустите вікно оновлення і підписка закінчиться.
- 7:46Такі речі трапляються.
- 7:47Питання в тому, як відновитися.
- 7:49Microsoft Graph очікує, що ваша кінцева точка вебхука відповідатиме швидко протягом трьох секунд.
- 7:53Якщо це займає більше часу, Graph позначає її як повільну.
- 7:55Якщо понад 10% ваших відповідей перевищують 3 секунди в будь-якому 10-хвилинному інтервалі,
- 7:59Graph затримує ваші сповіщення на 10 хвилин.
- 8:01Він надсилає лише невелику вибірку, щоб перевірити, чи ви відновилися.
- 8:03Ситуація погіршується.
- 8:05Якщо понад 15% ваших відповідей перевищують 10-секундний час очікування повторної спроби,
- 8:08Graph позначає вашу кінцеву точку як відключено.
- 8:10Сповіщення повністю припиняються на 10 хвилин.
- 8:12Вони зникають.
- 8:12Ви не зможете їх повернути.
- 8:14Отже, ваша кінцева точка має бути швидкою та надійною.
- 8:16Це не означає, що ви повинні обробляти кожне сповіщення менш ніж за 3 секунди.
- 8:20Просто швидко підтвердте отримання відповіддю 202 Accepted,
- 8:22а потім обробіть сповіщення асинхронно.
- 8:24Поставте його в чергу.
- 8:25Обробіть пізніше.
- 8:26Головне – це швидка відповідь.
- 8:28Навіть з ідеальною кінцевою точкою щось все одно може піти не так.
- 8:31Підписки закінчуються.
- 8:32Трапляються мережеві збої.
- 8:33У рідкісних випадках сам Microsoft Graph може пропустити сповіщення.
- 8:36Ось чому вам потрібна запобіжна сітка – дельта-запити.
- 8:39Подумайте про це так.
- 8:40Сповіщення про зміни – це пожежна сигналізація.
- 8:42Вони повідомляють вам, що щось відбувається прямо зараз.
- 8:44Дельта-запити – це система спринклерів.
- 8:45Вони вловлюють усе, що пропустила сигналізація.
- 8:47Вони працюють разом.
- 8:48Сповіщення дають вам обізнаність у реальному часі.
- 8:50Дельта-запити дають вам повну картину, яку ви можете звірити в будь-який час.
- 8:53Рекомендований шаблон простий.
- 8:55Використовуйте сповіщення про зміни для миттєвого реагування.
- 8:57Періодично запускайте дельта-запит, можливо, кожні кілька годин або раз на день,
- 9:00щоб не пропустити нічого важливого.
- 9:02Таким чином, навіть якщо сповіщення загубилося або підписка закінчилася,
- 9:05ви ніколи не втратите зміни остаточно.
- 9:07Реальні приклади використання.
- 9:09Що ви можете створити?
- 9:10Отже, що це дає насправді?
- 9:11Дозвольте мені навести кілька реальних прикладів.
- 9:13Візьмемо автоматизацію HR.
- 9:15Уявіть, що завтра хтось приєднується до вашої компанії.
- 9:17Як тільки EntraID створює нового користувача, надсилається сповіщення про зміну.
- 9:21Ваш додаток отримує їхній профіль і створює облікові записи в HR-платформі,
- 9:23системі обліку часу та доступу до будівель, і все це за лічені секунди.
- 9:26Жодних опитувань, жодних затримок.
- 9:27Для сповіщень безпеки, скажімо, якщо обліковий запис користувача деактивується.
- 9:31Сповіщення про зміну запускає робочий процес, який перевіряє підозрілі дії та сповіщає вашу команду безпеки.
- 9:36Раніше ви опитували систему кожні кілька хвилин.
- 9:38Тепер це відбувається миттєво.
- 9:39Обробка контенту працює так само.
- 9:41Коли файл потрапляє в бібліотеку документів SharePoint, ви хочете знати, чи це рахунок фактура.
- 9:45Сповіщення каже вам, що з'явився новий файл.
- 9:47Ваш додаток отримує його, пропускає через щі для класифікації та надсилає у потрібну систему витрат все автоматично.
- 9:52Інформаційні панелі в реальному часі дозволяють бачити аналітику в момент її виникнення, а не за минулі години.
- 9:56Сповіщення про зміни миттєво синхронізують Dataverse із Fabric.
- 9:59Ваші інформаційні панелі Pava BI оновлюються майже в реальному часі.
- 10:02Ось приклад, який мені видається цікавим.
- 10:04Коннектори Co-Pilot.
- 10:05Microsoft додає синхронізацію в реальному часі через веб-хуки, тому агенти ще реагують у ту ж секунду, коли змінюються дані.
- 10:10Коли запис клієнта оновлюється в Dynamics 365, агент Co-Pilot негайно створює подальші дії без очікування.
- 10:17Усі ці приклади мають одну спільну рису.
- 10:19До появи сповіщень про зміни ви створювали заплановані завдання, які опитували систему щогодини чи щодня.
- 10:24Це працювало, але було повільно, неефективно та ненадійно.
- 10:27Сповіщення про зміни докорінно змінюють цю модель.
- 10:29Реальний час, подійний підхід, миттєва реакція, вибір правильного каналу доставки.
- 10:34Не кожному додатку потрібен однаковий спосіб доставки.
- 10:36Давайте розглянемо ваші варіанти.
- 10:37Веб-хуки – це найпростіший варіант.
- 10:39Граф надсилає HTTP-OST на ваш кінцевий вузол, ви його обробляєте і продовжуєте роботу.
- 10:42Для невеликих та середніх обсягів, скажімо, кілька сотень сповіщень на годину, це працює чудово.
- 10:46Але що, якщо ви будуєте щось масштабніше?
- 10:48Тисячі сповіщень на секунду можуть перевантажити один кінцевий вузол.
- 10:59Ваш додаток считує їх у власному темпі з мінімальним ризиком перевантаження.
- 11:02Це підходить для великих корпоративних сценаріїв, як от тисячі сайтів SharePoint або мільйони поштових скриньок.
- 11:06Також є Event Grid – безсерверний варіант.
- 11:08Він надсилає сповіщення до Azure Functions або Logic Apps і автоматично обробляє повторні спроби та черги повідомлень, які не вдалося доставити.