במדריך הזה מתוארות שגיאות נפוצות שקשורות לכרטיס, ואיך אפשר לתקן אותן.
בעזרת הכלי ליצירת כרטיסים תוכלו לעצב ממשקי משתמש ותכונות שליחת הודעות לאפליקציות Chat ולראות תצוגה מקדימה שלהן:
פתיחת הכלי ליצירת כרטיסיםאיך מופיעות שגיאות בכרטיסים
שגיאות בכרטיס יכולות להתבטא בכמה דרכים:
- חלק מכרטיס, כמו ווידג'ט או רכיב, לא מופיע או מעובד בצורה לא צפויה.
- הכרטיס לא מופיע במלואו.
- תיבת דו-שיח נסגרת, לא נפתחת או לא נטענת.
אם נתקלתם בהתנהגות כזו, סימן שיש שגיאה בכרטיס של האפליקציה.
לעיונך: הודעה וכרטיס שפועלים ללא שגיאות
לפני שבודקים דוגמאות לכרטיסים שגויים, כדאי לבדוק קודם את ההודעה והתיבת הדו-שיח האלה לגבי כרטיס תקין. כדי להמחיש כל שגיאה לדוגמה ואת התיקון שלה, קוד ה-JSON של הכרטיס הזה השתנה על ידי הוספת שגיאות.
הודעה על כרטיס ללא שגיאות
זוהי הודעת הכרטיס העובדת ללא שגיאות, עם פרטים ליצירת קשר, כותרת, קטעים וווידג'טים כמו טקסט וסמלי לחצן מעוצבים:
תיבת דו-שיח ללא שגיאות
זוהי תיבת הדו-שיח העובדת ללא שגיאות, שמאפשרת ליצור איש קשר על ידי איסוף מידע ממשתמשים. התיבה כוללת כותרת תחתונה וווידג'טים שניתנים לעריכה, כמו קלט טקסט, מתגים ולחצנים:
שגיאה: חלק מהכרטיס לא מופיע
לפעמים הכרטיסים מוצגים, אבל חלק מהכרטיס שאתם מצפים לראות לא מופיע. הסיבות האפשריות לכך הן:
- חסר שדה JSON נדרש.
- שגיאת איות או שימוש שגוי באותיות רישיות בשדה JSON.
סיבה: חסר שדה JSON נדרש
בשגיאה הזו, חסר שדה JSON חובה, title
. כתוצאה מכך, הכרטיס עבר רינדור, אבל חלקים מהכרטיס שצפויים להופיע לא מופיעים. קשה לחזות איך הכרטיסים יוצגו אם שדות חובה לא ייכללו בהם.
כדי לתקן את השגיאה הזו, צריך להוסיף את שדה ה-JSON הנדרש. בדוגמה הזו, title
.
כדי לבדוק אם שדה JSON נדרש, אפשר לעיין במסמכי העזרה של Cards v2. בדוגמה הזו, אפשר לעיין בתיאור של השדה title
בדף CardHeader
.
להלן שתי דוגמאות:
דוגמה 1: אם מציינים את subtitle
אבל משמיטים את title
הנדרש, הכותרת כולה תופיע ריקה:
הצגת קטע הקוד הלא תקין של כרטיס בפורמט JSON
שגיאה: חסר שדה חובה, title
, ב-header
.
. . . "header": { "subtitle": "Software Engineer" } . . .
הצגת קטע הקוד הנכון של כרטיס JSON
תוקנה: השדה הנדרש, title
, הוא חלק מהמפרט של header
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer" } . . .
דוגמה 2: אם מציינים את הערכים subtitle
, imageUrl
, imageType
ו-imageAltText
אבל משמיטים את הערך הנדרש title
, התמונה תומרן כצפוי אבל הכתוביות לא:
הצגת קטע הקוד הלא תקין של כרטיס בפורמט JSON
שגיאה: חסר שדה חובה, title
, ב-header
.
. . . "header": { "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
הצגת קטע הקוד הנכון של כרטיס JSON
תוקנה: השדה הנדרש, title
, הוא חלק מהמפרט של header
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
סיבה: שגיאות איות או שימוש שגוי באותיות רישיות ב-JSON
בשגיאה הזו, קובץ ה-JSON של הכרטיס כולל את כל השדות הנדרשים, אבל שדה אחד, imageUrl
, כתוב באותיות רישיות באופן שגוי כ-imageURL
(R
רישית L
רישית), וכתוצאה מכך מתקבלת הודעת שגיאה: התמונה שאליה הוא מפנה לא מוצגת.
כדי לתקן את השגיאה הזו ושגיאות דומות, צריך להשתמש בפורמט JSON הנכון. במקרה הזה, imageUrl
נכון. אם יש לכם ספק, כדאי לבדוק את קובץ ה-JSON של הכרטיס בהתאם למסמך העזרה בנושא כרטיס.
הצגת קטע הקוד הלא תקין של כרטיס בפורמט JSON
שגיאה: שגיאת אותיות רישיות בשדה imageURL
. הערך צריך להיות imageUrl
.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageURL": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
הצגת קטע הקוד הנכון של כרטיס בפורמט JSON
תוקן: השדה imageUrl
כתוב באותיות רישיות בצורה נכונה.
. . . "header": { "title": "Sasha", "subtitle": "Software Engineer", "imageUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png", "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", } . . .
שגיאה: כרטיס שלם לא מופיע
לפעמים הכרטיס עצמו לא מופיע. הסיבות האפשריות לכך הן:
- ווידג'ט
ButtonList
שצוין באופן שגוי. - בווידג'ט
CardFixedFooter
יש לחצן שצוין באופן שגוי.
סיבה: הערך של buttonList
או cardFixedFooter
שצוין שגוי
אם הודעת כרטיס או תיבת דו-שיח כוללים ווידג'ט ButtonList
שצוין באופן שגוי או ווידג'ט CardFixedFooter
עם לחצנים שצוינו באופן שגוי, הכרטיס כולו לא יוצג ולא יופיע דבר במקומו. מפרטים שגויים יכולים לכלול שדות חסרים, שדות עם שגיאות איות או שדות עם אותיות רישיות שגויות, או קובץ JSON עם מבנה שגוי, למשל פסיק, מירכאות או סוגריים מסולסלים חסרים.
כדי לתקן את השגיאה הזו, צריך לבדוק את קובץ ה-JSON של הכרטיס בהתאם למסמך העזרה של הכרטיס. באופן ספציפי, כדאי להשוות בין ווידג'טים של ButtonList
לבין המדריך לווידג'טים של ButtonList
.
דוגמה: במדריך לווידג'טים של ButtonList
, העברת פעולת onClick
חלקית בלחצן הראשון מונעת את העיבוד של הכרטיס כולו.
הצגת קטע ה-JSON השגוי של הכרטיס
שגיאה: לא צוינו שדות באובייקט onClick
, ולכן הכרטיס כולו לא מופיע.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
הצגת קטע ה-JSON הנכון של הכרטיס
תוקן: עכשיו יש שדה openLink
באובייקט onClick
, כך שהכרטיס מופיע כצפוי.
. . . { "buttonList": { "buttons": [ { "text": "Share", "onClick": { "openLink": { "url": "https://example.com/share", } } }, { "text": "Edit", "onClick": { "action": { "function": "goToView", "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], }, } . . .
שגיאה: תיבת דו-שיח נסגרת, נתקעת או לא נפתחת
אם תיבת דו-שיח נסגרת באופן בלתי צפוי, לא נטענת או לא נפתחת, סביר להניח שהסיבה לכך היא בעיה בממשק הכרטיס שלה.
אלה הסיבות הנפוצות ביותר:
- בווידג'ט
CardFixedFooter
איןprimaryButton
. - ללחצן בווידג'ט
CardFixedFooter
אין פעולתonClick
, או שפעולת ה-onClick
שצוינה לא נכונה. - בווידג'ט
TextInput
חסר שדהname
.
סיבה: ל-CardFixedFooter
אין primaryButton
בתיבות דו-שיח עם ווידג'ט CardFixedFooter
, צריך לציין primaryButton
עם טקסט וצבע. אם משמיטים את primaryButton
או מגדירים אותו בצורה שגויה, תיבת הדו-שיח לא תופיע במלואה.
כדי לתקן את השגיאה הזו, צריך לוודא שהווידג'ט CardFixedFooter
כולל primaryButton
שצוין בצורה נכונה.
הצגת קטע ה-JSON השגוי של הכרטיס
שגיאה: לא צוין שדה primaryButton
באובייקט fixedFooter
, ולכן תיבת הדו-שיח לא נטענת או נפתחת.
. . . "fixedFooter": { "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
הצגת קטע ה-JSON הנכון של הכרטיס
תוקנה: עכשיו fixedFooter
כולל שדה primaryButton
, כך שהתיבת הדו-שיח פועלת כמצופה.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { . . . }, "secondaryButton": { . . . } } } . . .
סיבה: הגדרה שגויה של onClick
ב-FixedFooter
בתיבות דו-שיח עם ווידג'ט CardFixedFooter
, אם מציינים את ההגדרה onClick
באופן שגוי בלחצן כלשהו או משמיטים אותה, תיבת הדו-שיח נסגרת, לא נטענת או לא נפתחת.
כדי לתקן את השגיאה הזו, צריך לוודא שכל לחצן כולל הגדרה נכונה של onClick
.
הצגת קטע ה-JSON השגוי של הכרטיס
שגיאה: באובייקט primaryButton
יש שדה onClick
עם מערך 'parameters' שכתוב בו שגיאת איות, וכתוצאה מכך תיבת הדו-שיח לא נטענת או נפתחת.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parrammetters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
הצגת קטע ה-JSON הנכון של הכרטיס
תוקנה: באובייקט primaryButton
יש שדה onClick
עם מערך 'parameters' שכתוב בצורה נכונה, ולכן תיבת הדו-שיח פועלת כצפוי.
. . . "fixedFooter": { "primaryButton": { "text": "Submit", "color": { "red": 0, "blue": 1, "green": 0 }, "onClick": { "action": { "function": "setLanguageType", "parameters": [ { "key": "languageType", "value": "C++" } ] } } }, "secondaryButton": { "text": "Cancel", "onClick": { "action": { "function": "reset" } } } } . . .
סיבה: ל-TextInput
אין name
אם תיבת דו-שיח כוללת ווידג'ט TextInput
שלא כולל את השדה name
, תיבת הדו-שיח לא פועלת כצפוי. יכול להיות שהיא תיסגר, תיפתח אבל לא תיטען או לא תיפתח בכלל.
כדי לתקן את השגיאה, צריך לוודא שכל ווידג'ט TextInput
כולל שדה name
מתאים. חשוב לוודא שכל שדה name
בכרטיס הוא ייחודי.
הצגת קטע ה-JSON השגוי של הכרטיס
שגיאה: לא צוין שדה name
באובייקט textInput
, וכתוצאה מכך תיבת הדו-שיח נסגרת, לא נטענת או לא נפתחת.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", } } . . .
הצגת קטע ה-JSON הנכון של הכרטיס
תוקנה: עכשיו textInput
כולל שדה name
, כך שהתיבת הדו-שיח פועלת כמצופה.
. . . { "textInput": { "label": "Name", "type": "SINGLE_LINE", "name": "contactName" } } . . .
פעולות פתיחה, שליחה או ביטול של תיבת דו-שיח נכשלות בארכיטקטורה של אפליקציה אסינכררונית
אם הודעת השגיאה Could not load dialog. Invalid response returned by bot.
מופיעה באפליקציית Chat בזמן העבודה עם תיבות דו-שיח, יכול להיות שהסיבה לכך היא שהאפליקציה משתמשת בארכיטקטורה אסינכררונית, כמו Cloud Pub/Sub או שיטת ה-API Create Message.
כדי לפתוח, לשלוח או לבטל תיבת דו-שיח, צריך לקבל תשובה סינכרונית מאפליקציית Chat עם DialogEventType
.
לכן, לאפליקציות שנוצרו עם ארכיטקטורה אסינכררונית אין תמיכה בתיבת דו-שיח.
כפתרון עקיף, כדאי להשתמש בהודעה בכרטיס במקום בתיבת דו-שיח.
שגיאות אחרות בכרטיסים ובתיבות דו-שיח
אם התיקונים שמפורטים בדף הזה לא פותרים את השגיאה שקשורה לכרטיס באפליקציה, צריך לשלוח שאילתה ליומני השגיאות של האפליקציה. שאילתות ביומני הפעילות יכולות לעזור לכם למצוא שגיאות בקוד האפליקציה או ב-JSON של הכרטיס. בנוסף, היומנים כוללים הודעות שגיאה תיאוריות שיעזרו לכם לתקן אותן.
נושאים קשורים
לקבלת עזרה בתיקון שגיאות באפליקציית Google Chat, אפשר לעיין במאמרים פתרון בעיות באפליקציית Google Chat ותיקון שגיאות וניפוי באגים באפליקציות Chat.