הפיכת התראות סטטיות לזרימות עבודה אינטראקטיביות ב-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 בנוחות, בזמן שהתהליכים האוטומטיים רצים בצורה חלקה ברקע.
למי זה מיועד
- מנהלי Teams, Makers ובוני בוטים
- אנשי מקצוע של Power Automate ו-Power Platform
- מפתחים שמחברים זרימות עבודה של Microsoft 365 באמצעות Microsoft Graph או Bot Framework
- מובילי תקשורת, משאבי אנוש ו-IT שרוצים מעורבות גבוהה משמעותית ופחות פוסטים שנתעלמים מהם
מושגי יסוד (בקצרה)
- אבני הבניין של הסכימה:
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של הכרטיס, העבירו את כתובת הזרימה דרך הבוט הביניים או השתמשו בנקודת קצה של 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}" }}רעיון לטיפול בבוט: עם קבלת ה-verb approveRequest, הקצה העורפי שלכם צריך לאמת את ה-ACL של המשתמש, לכתוב את העסקה בצורה מאובטחת אל Dataverse או SharePoint, ואז להשיב ישירות לפעילות הכרטיס עם פריסה מעודכנת – למשל, סימון הסטטוס הכולל כ-Approved והסתרה מלאה של כפתורי הפעולה.
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", לפני שמאפשרים לזרימת העבודה להמשיך.
דפוסי עיצוב שעובדים
- אישורים מהירים: בנו מנגנוני Approve או Reject פשוטים עם שדות הערה חובה, שמעדכנים את הכרטיס בשורה מיד עם השלמת הפעולה.
- כרטיסי מיון: הטמיעו ChoiceSet לניתוב דינמי של פניות תמיכה של IT או HR נכנסות, ואפשרו לבוט לפרסם שאלות המשך אוטומטיות בהתאם לנתיב שנבחר.
- תזכורות ממוקדות: עצבו את הכרטיסים כך שיציגו את הכפתור “Remind assignees” אך ורק אם התנאי
${overdueCount} > 0מתקיים. - רשימות משימות: הצגת המשימות הפעילות שנותרו, תוך הסתרה נקייה של פריטים שכבר הושלמו, באמצעות תנאי
isVisibleמובנה.
בדיקות וכלי עזר
- השתמשו תמיד ב-Adaptive Card Designer הרשמי כדי לתצוגה מקדימה של הפריסות שלכם בלקוח Teams למחשב ובמכשירים ניידים.
- יש לאמת בקפידה את גרסת הסכמה שבחרתם. אם אתם נשענים על פרמטרים מסוג
isVisible, השתמשו בגרסה1.4ומעלה, ולתכונות החדשות ביותר השתמשו בגרסה1.5. - תעדו את מטעני ה-submit הגולמיים במהלך שלבי הפיתוח המקומי, כדי לוודא בקפדנות את מזהי הקלט ואת מבנה הנתונים הכללי.
אפשרויות חיבור (בחרו את ה-Backend שלכם)
- Power Automate: הדרך המהירה ביותר להתחיל. מפו את קלטי הכרטיס הנכנסים ישירות ל-SharePoint, ל-Dataverse, להתראות בדוא"ל או לשרשראות אישורים.
- בוטים (Bot Framework / Teams Toolkit): מעניקים לכם את השליטה הארכיטקטונית המלאה ביותר. השתמשו ב-
Action.Executeכדי לבנות תהליכי עבודה שיחתיים רב-שלביים ומגיבים מאוד. - Azure Functions / Logic Apps: אפשרויות קלות ומצוינות לניהול Webhooks מותאמים אישית ולממשקי API מיוחדים בצד השרת.
מעקות בטיחות ומלכודות
- לכל קלט חייב להיות
id. אם רכיב הקלט שלכם אינו כולל מאפייןidמפורש, לא תקבלו בחזרה שום נתון. - אל תשתמשו ב-OpenUrl יתר על המידה. בכל מקום אפשרי, השאירו את המשתמשים בתוך הקשר האפליקציה של Teams, במקום להפנות אותם לדפי אינטרנט חיצוניים.
- בקרת גישה: יש לאמת תמיד בצד השרת מי לחץ על הכפתור, ולעולם אל תסתמכו על הגדרות נראות שמבוצעות בצד הלקוח בלבד.
- עדכוני מצב: יש לפרסם תמיד מטען כרטיס מרענן לאחר השלמת פעולה, כדי למנוע הגשות כפולות מעצבנות של המשתמשים.
- מובייל קודם: בדקו בקפדנות מחרוזות טקסט ארוכות, את אופן הצגת ChoiceSet ואת התנהגות גלישת הכפתורים בטלפונים ניידים אמיתיים.
- ניהול גרסאות: נעלו את גרסת הסכמה במפורש בתוך התבניות שלכם, כדי להימנע מרגרסיות בלתי צפויות בלקוח בעקבות עדכוני Microsoft.
רשימת בדיקה להטמעה (30–60 דקות)
- בחרו סוג הודעה חוזר אחד בארגון שלכם שיכול להפיק תועלת מאיסוף קלט (כגון בקשת משוב, אישור השתתפות באירוע או מיון פניות תמיכה).
- בנו את פריסת הכרטיס הראשונית בתוך ה-Designer המקוון; הקפידו להוסיף רכיב Input נקי לצד טריגר Action.Submit.
- חברו את הפעולה ישירות לזרימת Power Automate HTTP כדי לתעד את התשובות בצורה מסודרת ב-SharePoint או ב-Dataverse.
- שלבו כללי נראות מותנית כדי להציג פעולות ניהול ייעודיות לתפקיד רק בפני אנשים מורשים.
- הפעילו את תהליך העבודה החדש בצוות קטן וממוקד; שפרו את הניסוח והפריסה בהתאם למשוב, ולאחר מכן הפכו אותו לתבנית להטמעה רחבה יותר בארגון.
שאלות נפוצות
- האם אפשר לעדכן כרטיסים לאחר שליחה? כן, בהחלט. ניתן לפרסם פעילות כרטיס חלופית מלאה, או להשתמש בתגובות בוט מובנות כדי לעדכן את הממשק בתוך השיחה.
- האם אני צריך בוט כדי לאסוף קלט? לא. טריגר HTTP סטנדרטי של Power Automate עובד מצוין לאיסוף נתונים פשוט, אם כי בוטים מאפשרים סיעוף שיחתי עשיר בהרבה.
- איך מגבילים מי יכול לאשר? יש לאמת תמיד בצד השרת את חברותם בקבוצה ב-Microsoft Entra ID או את תפקידי האבטחה לפני עיבוד כל מטען
Action.*נכנס. - האם אפשר לתרגם את הטקסט? כן, ניתן לקשור טקסט באופן דינמי ישירות מהמטען הנכנס, או ליצור תבניות JSON ספציפיות לשפה תוך כדי פעולה.
כשמשנים את נקודת המבט מתקשורת פסיבית לעיצוב פעיל ופונקציונלי, אפשר לשנות מן היסוד את חוויית הארגון שלכם ב-Microsoft Teams. בלי לקפוץ מכשול אחרי מכשול, בלי משוב שאבד ובלי התראות שנותרו ללא מענה. קחו את הדפוסים האלה, הטמיעו אותם בסביבה שלכם והתחילו לבנות חוויות שבאמת מערבות את כוח העבודה שלכם כבר היום. לסקירה שמעית מלאה של המושגים, טיפים מומחים ודיונים ארכיטקטוניים נוספים, כדי לצפות בפרק הפודקאסט הקשור ב-Build Interactive Microsoft Teams Adaptive Cards. בהצלחה בבנייה!