Перетворюємо статичні сповіщення на інтерактивні робочі процеси в Teams
By Mirko Peters ·
Раді вас знову бачити! Якщо ви схожі на мене, то щодня тонете в морі статичних сповіщень. Дзвінок, сигнал, лічильник непрочитаних зростає: хтось опублікував оновлення, попросив перевірити документ або залишив загальне повідомлення в каналі Microsoft Teams. І що ми зазвичай робимо? Читаємо, можливо, забуваємо, а то й гірше: доводиться відкривати окрему вкладку браузера, входити в ще один застосунок
Automatically translated with AI from the original post. Read the English original
Ласкаво просимо назад, усі! Якщо ви схожі на мене, то, напевно, щодня тонете в морі безперервних сповіщень. Пінг, сигнал, лічильник непрочитаних росте: хтось опублікував оновлення, попросив перевірити документ або залишив загальне повідомлення в каналі Microsoft Teams. І що ми зазвичай робимо? Читаємо, можливо, забуваємо про це або, що гірше, відкриваємо окрему вкладку браузера, входимо в інший застосунок і клацаємо по інтерфейсу лише для того, щоб надіслати невеликий відгук або схвалити просте прохання. Це створює багато тертя, знижує залученість користувачів і повністю виводить команду з робочого ритму.
Саме тому ми беремося за це масштабне вузьке місце в продуктивності. Ми хочемо показати, як перетворити ці нудні статичні сповіщення на повноцінні інтерактивні Adaptive Cards. Уявіть: збір відгуків, запуск надійних фонових процесів, розгалуження розмов із ботами та динамічна персоналізація вмісту на льоту, і все це без того, щоб користувачі коли-небудь залишали застосунок Microsoft Teams. Щоб почути повне обговорення та всі наші поглиблені аудіофрагменти, обов’язково послухайте супровідний подкаст: Build Interactive Microsoft Teams Adaptive Cards. А тепер заглибимося в архітектуру, фрагменти коду та точні шаблони, які вам потрібно освоїти вже сьогодні.
Вам уже набридли статичні сповіщення? У цьому посібнику та в пов’язаному подкасті ми перетворюємо звичайні Adaptive Cards на потужні інтерактивні сценарії. Ви навчитеся без зусиль збирати відгуки, запускати складні робочі процеси, розгалужувати діалоги за допомогою розумних ботів і динамічно персоналізувати контент. Окрім того, ми надаємо JSON для копіювання та вставлення, поради щодо розгортання і перевірені шаблони, які допоможуть користувачам комфортно залишатися в Teams, поки автоматизовані процеси працюють у фоновому режимі.
Ви остаточно втомилися від статичних сповіщень? У цьому посібнику, а також у пов’язаному епізоді подкасту ми перетворюємо стандартні Adaptive Cards на потужні інтерактивні сценарії. Ви навчитеся без зусиль збирати відгуки, запускати складні робочі процеси, розгалужувати розмови за допомогою розумних ботів і динамічно персоналізувати вміст. Окрім цього, ми надаємо готовий JSON для копіювання, поради щодо розгортання та перевірені шаблони, які допоможуть користувачам комфортно залишатися в Teams, поки ваші автоматизовані процеси працюють у фоновому режимі.
Адміністратори Teams, мейкери та розробники ботів
- Фахівці з Power Automate і Power Platform
- Розробники, які інтегрують робочі процеси Microsoft 365 через Microsoft Graph або Bot Framework
- Керівники комунікацій, HR та ІТ, яким потрібна значно вища залученість і менше ігнорованих публікацій
- Керівники комунікацій, HR та ІТ, яким потрібна значно вища залученість і значно менше ігнорованих публікацій
Основні поняття (коротко)
- Будівельні блоки схеми:
typeвизначає картку або елемент,bodyвизначає, що користувачі насправді бачать, аactionsвизначають, що користувачі можуть зробити. - Інтерактивність:
Action.Submitнадсилає необроблені дані безпосередньо до вашого потоку або серверної частини бота,Action.Executeобробляє контекстні дії бота, аAction.OpenUrlзагалом слід залишати лише як крайній варіант. - Поля введення: Використовуйте елементи
Input.Text,Input.Number,Input.ChoiceSetіInput.Date, щоб збирати чисті дані. - Динамічний UX: Використовуйте шаблони через синтаксис
${...}, прив’язку даних і умовні властивостіisVisible, щоб адаптувати досвід під користувача.
Готові стартові фрагменти для копіювання
1) Збір відгуків всередині Teams
Почнемо з базового фрагмента. Ця картка показує коротке повідомлення про оновлення політики, поле для коментарів і розширений вибір варіантів для оцінки настрою користувачів.
{ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "text": "Policy Update: Quick Feedback", "weight": "Bolder", "size": "Large" }, { "type": "Input.Text", "id": "policyFeedback", "placeholder": "Share your thoughts..." }, { "type": "Input.ChoiceSet", "id": "sentiment", "style": "expanded", "choices": [ { "title": "👍 Helpful", "value": "positive" }, { "title": "😐 Neutral", "value": "neutral" }, { "title": "👎 Needs work", "value": "negative" } ] } ], "actions": [ { "type": "Action.Submit", "title": "Send", "data": { "kind": "policy-feedback" } } ]}Що відбувається: щойно користувач натискає Send, Teams автоматично збирає policyFeedback, обраний sentiment і вашу власну властивість data.kind та надсилає все це напряму до підключеного бота або автоматизованого потоку.
2) Запуск потоку Power Automate (тригер HTTP)
- Налаштуйте стандартний робочий процес Power Automate з тригером When an HTTP request is received.
- У визначенні
Action.Submitвашої картки передайте URL потоку через проміжного бота або використайте вхідну точку webhook. Тіло отриманого потоку автоматично включатиме всі визначені вами ідентифікатори вхідних полів разом із вашими власними властивостямиdata.
Приклад очікуваного навантаження:
{ "kind": "policy-feedback", "policyFeedback": "Please clarify WFH days.", "sentiment": "neutral", "from": { "aadObjectId": "user-guid", "name": "Adele V." }}3) Розгалуження через бота з використанням Action.Execute
{ "type": "Action.Execute", "title": "Approve", "verb": "approveRequest", "data": { "requestId": "${request.id}" }}Ідея обробника в боті: після отримання дієслова approveRequest ваш бекенд має перевірити ACL користувача, безпечно записати транзакцію в Dataverse або SharePoint, а потім відповісти безпосередньо на активність картки оновленим макетом, наприклад позначивши загальний статус як «Схвалено» і повністю приховавши кнопки дій.
4) Умовна видимість і персоналізація
{ "type": "Container", "items": [ { "type": "TextBlock", "text": "Hello, ${user.displayName}!" }, { "type": "TextBlock", "text": "Task: ${task.title}" } ], "isVisible": "${task.status != 'completed'}"}5) Безпечніший вибір (захист від помилкового введення)
{ "type": "Input.ChoiceSet", "id": "priority", "value": "normal", "choices": [ { "title": "Low", "value": "low" }, { "title": "Normal", "value": "normal" }, { "title": "High (requires reason)", "value": "high" } ], "wrap": true}У логіці обробника на бекенді можна легко задати правило перевірки, яке вимагає текстового обґрунтування, якщо користувач встановлює priority == "high", перш ніж дозволити подальшу обробку робочого процесу.
Патерни дизайну, які працюють
- Мікросхвалення: створюйте прості механізми «Схвалити» або «Відхилити» з обов’язковими полями коментарів, які одразу оновлюють картку на місці після завершення дії.
- Сортування звернень: використовуйте ChoiceSet для динамічного спрямування вхідних звернень до ІТ або HR, щоб бот міг надсилати автоматичні уточнювальні запитання залежно від обраного маршруту.
- Цільові нагадування: проєктуйте картки так, щоб кнопка «Remind assignees» відображалася лише тоді, коли умова
${overdueCount} > 0є істинною. - Чек-листи: показуйте активні невиконані завдання, а вже виконані елементи непомітно приховуйте за допомогою вбудованих умов
isVisible.
Тестування й інструменти
- Завжди користуйтеся офіційним Adaptive Card Designer, щоб переглянути макети в настільному клієнті Teams і на мобільних пристроях.
- Уважно перевіряйте версію схеми: якщо ви використовуєте параметри
isVisible, застосовуйте версію1.4або новішу, а для найновіших можливостей —1.5. - Під час локальної розробки журналюйте необроблені дані, які надсилаються після відправлення форми, щоб ретельно перевірити ідентифікатори полів і загальну структуру даних.
Варіанти інтеграції (оберіть серверну частину)
- Power Automate: найшвидший спосіб почати роботу. Зіставляйте вхідні поля картки безпосередньо з SharePoint, Dataverse, сповіщеннями електронною поштою або ланцюжками погоджень.
- Боти (Bot Framework / Teams Toolkit): дають максимальний архітектурний контроль. Використовуйте
Action.Execute, щоб створювати чутливі багатокрокові діалогові сценарії. - Azure Functions / Logic Apps: чудові легкі варіанти для керування власними webhook-ами та спеціалізованими серверними API.
Запобіжники та підводні камені
- Кожне поле введення потребує
id. Якщо елемент введення не має явного атрибутаid, ви не отримаєте жодних даних. - Не зловживайте OpenUrl. Коли це можливо, залишайте користувачів у контексті застосунку Teams, а не відправляйте їх на зовнішні веб-сторінки.
- Контроль доступу: завжди перевіряйте на сервері, хто натиснув кнопку, і ніколи не покладайтеся лише на налаштування видимості на боці клієнта.
- Оновлення стану: після кожної дії надсилайте оновлений вміст картки, щоб запобігти повторним відправленням, які дратують користувачів.
- Спочатку мобільні пристрої: ретельно тестуйте довгі текстові рядки, поведінку ChoiceSet і перенесення кнопок на реальних телефонах.
- Версіонування: явно фіксуйте версію схеми в шаблонах, щоб уникнути несподіваних регресій у клієнтах через оновлення Microsoft.
Контрольний список впровадження (30–60 хвилин)
- Оберіть один повторюваний тип повідомлень у вашій організації, який міг би виграти від збору відповідей (наприклад, запит відгуку, підтвердження участі в заході або сортування звернень у службу підтримки).
- Створіть базовий макет картки в онлайн-Designer; обов’язково додайте просте поле Input разом із дією Action.Submit.
- Прив’яжіть цю дію безпосередньо до потоку Power Automate HTTP, щоб акуратно записувати відповіді в SharePoint або Dataverse.
- Додайте правила умовної видимості, щоб показувати адміністративні дії для конкретних ролей лише уповноваженим особам.
- Випробуйте новий робочий процес у невеликій, сфокусованій команді; удосконалюйте тексти та макет на основі відгуків, а потім створіть із нього шаблон для ширшого впровадження в організації.
Поширені запитання
- Чи можна оновлювати картки після відправлення? Так, звісно. Можна надіслати повністю замінену картку або використати вбудовані відповіді бота, щоб оновити інтерфейс прямо в повідомленні.
- Чи потрібен бот для збору даних? Ні. Звичайний тригер Power Automate HTTP чудово підходить для простого збору даних, хоча боти забезпечують значно багатші розгалуження діалогу.
- Як обмежити, хто може погоджувати? Завжди перевіряйте на сервері членство в групі Microsoft Entra ID або ролі безпеки перед обробкою будь-яких вхідних payload-ів
Action.*. - Чи можна локалізувати текст? Так, можна динамічно підставляти текст безпосередньо з вхідних даних або створювати локалізовані JSON-шаблони на льоту.
Якщо змінити погляд із пасивної комунікації на активний, функціональний дизайн, можна суттєво змінити те, як ваша організація сприймає Microsoft Teams. Більше без зайвих кроків, без загублених відгуків і без проігнорованих сповіщень. Візьміть ці патерни, впровадьте їх у своєму середовищі та починайте створювати сценарії, які справді залучають співробітників уже сьогодні. Щоб переглянути повний аудіоогляд цих концепцій, експертні поради та подальші архітектурні обговорення, обов’язково послухайте відповідний епізод подкасту: Build Interactive Microsoft Teams Adaptive Cards. Успішної розробки!