לעורר עניין בקרב המשתמשים באמצעות הפעולה ב-Google Assistant

1. סקירה כללית

‫Actions on Google היא פלטפורמה למפתחים שמאפשרת ליצור תוכנה להרחבת הפונקציונליות של Google Assistant, העוזרת האישית הווירטואלית של Google, ביותר ממיליארד מכשירים, כולל רמקולים חכמים, טלפונים, מכוניות, טלוויזיות, אוזניות ועוד. המשתמשים יכולים לנהל שיחה עם Assistant כדי לבצע פעולות, כמו קניית מצרכים או הזמנת נסיעה. (רשימה מלאה של הפעולות האפשריות זמינה בספריית הפעולות). מפתחים יכולים להשתמש ב-Actions on Google כדי ליצור ולנהל בקלות אינטראקציות יעילות ונעימות בין משתמשים לבין שירותים של צד שלישי.

זהו מודול מתקדם של Codelab, שמיועד לקוראים שכבר צברו ניסיון מסוים בפיתוח פעולות ל-Google Assistant. אם אין לכם ניסיון קודם בפיתוח פעולות ב-Actions on Google, מומלץ מאוד לעיין בפלטפורמה באמצעות סדנאות התכנות המבואיות שלנו ( רמה 1, רמה 2 ו- רמה 3). המודולים המתקדמים האלה יציגו לכם סדרה של תכונות שיכולות לעזור לכם להרחיב את הפונקציונליות של הפעולה ולהגדיל את קהל המשתמשים.

דרך חשובה למדוד את הצלחת הפעולה היא התעניינות המשתמשים, או עד כמה הפעולה יעילה בהחזרת משתמשים אחרי האינטראקציה הראשונה שלהם. כדי להקל על המשתמשים, אתם יכולים להטמיע בפעולה כמה תכונות שיאפשרו למשתמשים לחזור לשיחה.

ב-codelab מוסבר על תכונות שמעודדות מעורבות משתמשים ועל שיטות מומלצות לשימוש ב-Actions on Google.

a3fc0061bd01a75.png 961ef6e27dc73da2.png

מה תפַתחו

תשפרו תכונה שכבר פותחה על ידי הפעלת האפשרות:

  • שליחת עדכון יומי למשתמשים, שיוכלו להקיש עליו כדי לדבר עם הפעולה שלכם
  • שליחת התראות פוש למשתמשים עם קישור חזרה לפעולה שלכם
  • יצירת קישור שמעביר משתמשים לפעולה שלכם מדפדפן אינטרנט בנייד

מה תלמדו

  • מהי התעניינות המשתמשים ולמה היא חשובה להצלחת פעולה
  • איך משנים פעולה כדי להגביר את ההתעניינות של המשתמשים
  • באילו תכונות של מעורבות משתמשים כדאי להשתמש בסוגים שונים של פעולות
  • איך משתמשים ב-Actions API כדי לשלוח התראות דרך Assistant

מה נדרש

אתם צריכים את הכלים הבאים:

  • סביבת פיתוח משולבת (IDE) או עורך טקסט לפי בחירתכם, כמו WebStorm,‏ Atom או Sublime
  • טרמינל להרצת פקודות של מעטפת עם Node.js,‏ npm ו-git מותקנים
  • דפדפן אינטרנט, כמו Google Chrome
  • סביבת פיתוח מקומית עם ממשק שורת הפקודה של Firebase
  • מכשיר נייד (Android או iOS) עם Assistant (צריך להיכנס ל-Assistant עם אותו חשבון Google שבו תשתמשו כדי ליצור את הפרויקט הזה).

מומלץ מאוד להכיר את JavaScript (ES6), אבל זה לא חובה כדי להבין את קוד ה-webhook.

2. הגדרת הפרויקט

בקטע הזה מוסבר איך להוסיף תכונות של התעניינות המשתמשים לפעולה שלמה שנבנתה בעבר.

הסבר על הדוגמה

הדוגמה ב-codelab הזה היא פעולה פשוטה למכון כושר פיקטיבי בשם Action Gym. הפעולה מספקת מידע על מכון הכושר, כולל רשימה של שיעורים שמשתנים מדי יום. פעולה אינפורמטיבית כזו מתאימה לכל התכונות של מעורבות המשתמשים, כי רשימת הכיתות המתחלפת מספקת מידע שימושי שונה בכל יום.

בתרשים הבא מוצג תהליך השיחה של הדוגמה Action Gym:

e2d6e4ad98948cf3.png

תבצעו שינויים קלים בתיבת הדו-שיח כדי להתאים אותה טוב יותר לתכונות האינטראקטיביות שאתם מוסיפים. עם זאת, העיצוב הכללי של השיחה לא ישתנה באופן משמעותי.

הורדת קובצי הבסיס

מריצים את הפקודה הבאה כדי לשכפל את מאגר GitHub של ה-codelab:

git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs

הגדרת הפרויקט והסוכן

כדי להגדיר את פרויקט הפעולות ואת נציג Dialogflow, מבצעים את השלבים הבאים:

  1. פותחים את מסוף הפעולות.
  2. לוחצים על פרויקט חדש.
  3. מקלידים שם פרויקט, כמו engagement-codelab.
  4. לוחצים על Create Project.
  5. במקום לבחור קטגוריה, גוללים למטה לקטע אפשרויות נוספות ולוחצים על הכרטיס שיחה.
  6. לוחצים על יצירת פעולה כדי להרחיב את האפשרויות ובוחרים באפשרות הוספת פעולות.
  7. לוחצים על הוספת הפעולה הראשונה.
  8. בתיבת הדו-שיח יצירת פעולה, בוחרים באפשרות כוונות מותאמות אישית ולוחצים על יצירה כדי להפעיל את מסוף Dialogflow.
  9. בדף ליצירת סוכן במסוף Dialogflow, לוחצים על יצירה.
  10. לוחצים על סמל גלגל השיניים 6bf56243a8a11a3b.png בתפריט הניווט שמימין.
  11. לוחצים על ייצוא וייבוא ואז על שחזור מקובץ ZIP.
  12. מעלים את קובץ agent.zip מהספרייה /user-engagement-codelab-nodejs/start/ שהורדתם קודם.
  13. מקלידים RESTORE ולוחצים על שחזור.
  14. לוחצים על סיום.

פריסת מילוי ההזמנה

אחרי שהפרויקט של הפעולות והסוכן של Dialogflow מוכנים, פורסים את קובץ index.js המקומי באמצעות Firebase Functions CLI.

בספרייה /user-engagement-codelab-nodejs/start/functions/ של שיבוט קובצי הבסיס, מריצים את הפקודות הבאות:

firebase use <PROJECT_ID>
npm install
firebase deploy

אחרי כמה דקות, אמורה להופיע ההודעה Deploy complete!‎, שמעידה על כך שהפריסה של ה-webhook ב-Firebase הושלמה בהצלחה.

אחזור כתובת ה-URL של הפריסה

צריך לספק ל-Dialogflow את כתובת ה-URL של פונקציית הענן. כדי לאחזר את כתובת ה-URL הזו, צריך לבצע את השלבים הבאים:

  1. פותחים את מסוף Firebase.
  2. בוחרים את פרויקט Actions מתוך רשימת האפשרויות.
  3. בסרגל הניווט הימני, עוברים אל פיתוח > פונקציות. אם מוצגת בקשה לבחור את הגדרות שיתוף הנתונים, אפשר להתעלם מהאפשרות הזו וללחוץ על אעשה זאת מאוחר יותר.
  4. בכרטיסייה לוח בקרה אמור להופיע ערך של 'השלמת בקשה' עם כתובת URL בקטע הפעלה. שומרים את כתובת ה-URL הזו. תצטרכו להעתיק אותה ל-Dialogflow בקטע הבא.

1741a329947975db.png

הגדרת webhook URL ב-Dialogflow

עכשיו צריך לעדכן את נציג Dialogflow כדי להשתמש ב-webhook לצורך ביצוע הפעולה. לשם כך, בצע את הצעדים הבאים:

  1. פותחים את מסוף Dialogflow (אפשר לסגור את מסוף Firebase).
  2. בתפריט הניווט הימני, לוחצים על ניהול מלאי.
  3. מפעילים את Webhook.
  4. מדביקים את כתובת ה-URL שהעתקתם מלוח הבקרה של Firebase אם היא עדיין לא מופיעה.
  5. לוחצים על שמירה.

אימות ההגדרה של הפרויקט

המשתמשים צריכים להיות מסוגלים להפעיל את הפעולה שלכם כדי לקבל מידע על Action Gym, כולל תגובה טקסטואלית עם שעות הפתיחה ותגובה טקסטואלית עם רשימת מערכת השעות לכל יום בשבוע.

כדי לבדוק את הפעולה בסימולטור הפעולות:

  1. בתפריט הניווט הימני של מסוף Dialogflow, לוחצים על שילובים > Google Assistant.
  2. מוודאים שהאפשרות תצוגה מקדימה אוטומטית של שינויים מופעלת ולוחצים על בדיקה כדי לעדכן את פרויקט הפעולות.
  3. סימולטור הפעולות טוען את פרויקט הפעולות שלכם. כדי לבדוק את הפעולה, מקלידים Talk to my test app בשדה Input ולוחצים על Enter.
  4. אמורה להופיע תגובה שמברכת אתכם על ההצטרפות ל-Action Gym. כדאי לפעול לפי ההנחיות כדי להמשיך את השיחה, ולוודא שכל קלט מקבל תשובה.

60acf1ff87b1a87f.png

3. הוספת מינויים לעדכונים יומיים

דרך נפוצה לעודד מעורבות של משתמשים היא להציע להם מידע כשהוא הכי שימושי. כדי לעשות את זה, אנחנו מציעים למשתמשים להירשם לעדכונים יומיים לגבי כוונה מסוימת. כך הם מקבלים התראה מ-Assistant עם קישור ישיר למימוש של הכוונה הזו.

בשלב הזה נסביר על מינויים לעדכונים יומיים, ואיך להוסיף אותם ל-intent של רשימת הכיתות בפעולה. אחרי שמבצעים את ההוראות האלה, השיחה עם הפעולה תיראה כמו בתרשים הבא:

f48891c8118f7436.png

איך זה ישמור על רמת העניין של המשתמשים?

משתמשי סמארטפונים מכירים כנראה את ההתראות בטלפון, שמספקות מידע ועדכונים ספציפיים לאפליקציה. מינויים לעדכונים יומיים הם דרך פשוטה להגיע למשתמשים במכשירים ניידים מחוץ ל-Assistant, בתנאי שהכוונה שלשמה אתם שולחים עדכונים ממשיכה לספק ערך למשתמש על בסיס יומי.

עדכונים יומיים יכולים להיות כלי שימושי לעידוד השימוש, אבל לא צריך להשתמש בהם בכל פעולה. כדאי להביא בחשבון את הטיפים האלה כשמחליטים אם להוסיף לפעולה מינויים לעדכונים יומיים:

  • חשוב לוודא שהעדכונים היומיים יציגו למשתמש מידע שונה ומועיל בכל יום. אם בכל פעם שמקישים על עדכון יומי מופיעה אותה הנחיה, סביר להניח שהמשתמש יבטל את המינוי אחרי כמה ימים.
  • חשוב לוודא שהדיאלוג הגיוני למשתמש אם הוא עובר ישירות לכוונת העדכון היומי. המשתמש לא בהכרח יתחיל את השיחה מההתחלה, ולכן לא כדאי לצפות שיהיה לו הרבה הקשר.
  • כדאי להציג למשתמש את היתרון של הפעולה לפני שמציעים לו להירשם לקבלת עדכונים יומיים. כשמציעים למשתמש להירשם לניוזלטר, הוא צריך לחשוב לעצמו "אני רוצה לקבל את התוכן הזה כל יום".
  • אל תציפו את המשתמש בהצעות חוזרות להירשם למינוי. מציעים למשתמש מינוי לעדכון יומי מיד אחרי שמראים לו למה הוא נרשם, ולא מציקים לו לגבי זה במקומות אחרים.
  • אחרי שהכוונה לעדכן מופעלת, כדאי לשמור על שיחה קצרה. רוב העדכונים היומיים צריכים לכלול רק תגובה אחת ואז להיסגר בלי לדרוש קלט מהמשתמש.

הפעלת עדכונים יומיים

אפשר להוסיף הרשמה לעדכונים יומיים לכוונת ההצטרפות, כדי שהמשתמש יתחיל את השיחה, או לכוונת הצטרפות ספציפית יותר כדי ליצור קישור עומק למקום מסוים בשיחה. בסדנת הקוד הזו, כוונת המשתמש Class List היא הכי הגיונית, כי הדיאלוג ישתנה מדי יום, והמשתמשים עשויים למצוא את התזכורת לגבי השיעורים שזמינים כמועילה.

כדי להפעיל עדכונים יומיים של כוונת הרכישה Class List:

  1. במסוף הפעולות, לוחצים על הכרטיסייה פיתוח ובוחרים באפשרות פעולות בסרגל הניווט הימני.
  2. לוחצים על רשימת הכיתות ברשימה פעולות.
  3. בקטע מעורבות המשתמשים, משנים את המצב של האפשרות האם תרצו להציע למשתמשים עדכונים יומיים?.
  4. מגדירים שם תוכן תיאורי שמתאר את העדכון היומי. ההקשר יהיה 'באיזו שעה תרצה שאשלח לך את', לכן חשוב לוודא שהשם תיאורי ושהוא נשמע נכון כשמקריאים אותו בקול. בדוגמה הזו, מגדירים את שם התוכן לערך list of upcoming Action Gym classes.
  5. לוחצים על שמירה בראש הדף.

c00885cc30e14d68.png

הגדרת Dialogflow

כדי ליצור כוונות לתהליך ההרשמה לעדכון היומי, פועלים לפי השלבים הבאים במסוף Dialogflow:

הצגת בקשה למשתמש להירשם למינוי

  1. מגדירים כוונה חדשה לטיפול בבקשת המשתמש להירשם לעדכונים יומיים. במסוף Dialogflow, לוחצים על הלחצן + לצד Intents (כוונות) בחלונית הניווט הימנית כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Setup Updates.
  3. בקטע Training phrases (ביטויי אימון), מוסיפים את הביטויים הבאים של משתמשים:
  • Send daily reminders
  • Reminder
  • Remind me
  • Updates
  • Upcoming classes
  1. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  2. לוחצים על שמירה בראש הדף.

5c70faa02151da0.png

טיפול בהחלטה של המשתמש

  1. מגדירים כוונה חדשה לטיפול בתגובת המשתמש להנחיה להירשמה לעדכונים יומיים. לוחצים על הלחצן + לצד Intents (כוונות) בסרגל הניווט הימני כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Confirm Updates.
  3. בקטע אירועים, מוסיפים את actions_intent_REGISTER_UPDATE. האירוע הזה ב-Dialogflow יופעל כשהמשתמש יסיים את תהליך ההרשמה לקבלת עדכון יומי, בין אם הוא נרשם בסופו של דבר או לא.
  4. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  5. לוחצים על שמירה בראש הדף.

b871c2bdadac8abc.png

יישום של מילוי ההזמנה

כדי להטמיע את הביצוע ב-webhook, צריך לבצע את השלבים הבאים:

טעינת פניות קשורות

b2f84ff91b0e1396.png בקובץ index.js, מעדכנים את הפונקציה require() כדי להוסיף את החבילה RegisterUpdate מהחבילה actions-on-google, כך שהייבוא ייראה כך:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
} = require('actions-on-google');

עדכון הצ'יפים של ההצעות

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הערך DAILY לרשימה של שמות הצ'יפים החכמים להצעות, כך שההגדרה של Suggestion תיראה כך:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
};

הוספת ביצוע של כוונות חדשות

כשהמשתמש אומר שהוא רוצה להירשם למינוי, מתחילים את תהליך ההרשמה למינוי לעדכונים יומיים על ידי קריאה ל-RegisterUpdate helper עם כוונת היעד של העדכון (Class List) והסוג (DAILY). אחרי שתהליך ההרשמה למינוי מסתיים, Assistant מפעילה את האירוע actions_intent_REGISTER_UPDATE עם ארגומנט status שמתאר אם ההרשמה למינוי הצליחה או לא. הצגת הנחיות למשתמש בהתאם לסטטוס המינוי.

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הקוד הבא:

index.js

// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Class List',
    frequency: 'DAILY',
  }));
});

// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
     conv.ask(`Gotcha, I'll send you an update everyday with the ` +
     'list of classes. Can I help you with anything else?');
  } else {
    conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
  }
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
  }
});

הצעת הנחיות חלופיות למשתמש

בסוף התשובה של רשימת הכיתה מוצע מינוי לעדכון יומי, אבל זה יוצר בעיה. מכיוון שאותה תגובה תופעל כשהמשתמש יקיש על ההתראה על העדכון היומי, הוא עדיין יתבקש להירשם לעדכונים יומיים, גם אם הוא הגיע מהעדכון עצמו. איך אפשר למנוע מהמשתמש לחשוב שהוא צריך להירשם מחדש?

למזלנו, הארגומנטים של האובייקט conv כוללים מידע על המקום שבו המשתמש התחיל את השיחה. אפשר לבדוק את הארגומנטים של conv כדי לראות אם הם מכילים קטע UPDATES, שמציין שהמשתמש התחיל את השיחה מהתראה על עדכון יומי, ולשנות את התשובה בהתאם. אפשר גם להשתמש בענף השיחה הזה כדי לסגור את הדיאלוג מיד אחרי שמספקים את רשימת הכיתות, בהתאם לשיטה המומלצת שלנו לשמירה על עדכון יומי קצר.

b2f84ff91b0e1396.png בקובץ index.js, מחליפים את הקוד הבא:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  const classesMessage =
  `On ${day} we offer the following classes: ${classes}. ` +
  `Can I help you with anything else?`;
  conv.ask(classesMessage);
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS]));
  }
});

עם הנתונים הבאים:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

בדיקה של העדכונים היומיים

בטרמינל, מריצים את הפקודה הבאה כדי לפרוס את קוד ה-webhook המעודכן ב-Firebase:

firebase deploy

כדי לבדוק את ההנחיה המותאמת אישית בסימולטור הפעולות, פועלים לפי השלבים הבאים:

  1. במסוף Actions, עוברים אל Test (בדיקה).
  2. מקלידים Talk to my test app בשדה קלט ולוחצים על Enter.
  3. מקלידים Learn about classes ומקישים על Enter. התשובה של הפעולה שלכם צריכה להציע עכשיו לשלוח תזכורות יומיות.
  4. מקלידים Send daily reminders ומקישים על Enter.
  5. מקלידים את השעה שבה רוצים לראות את העדכון ולוחצים על Enter. לצורך בדיקה, נסו להשיב 3-5 דקות אחרי השעה הנוכחית.

83a15ecac8c71787.png

במכשיר הנייד, אמורה להתקבל התראה מ-Assistant בערך בזמן שציינתם לעדכונים. שימו לב: יכול להיות שיעברו כמה דקות עד שההתראה הזו תופיע. מקישים על ההתראה וקישור עומק אמור להעביר אתכם ישירות אל כוונת רשימת הכיתות ב-Assistant, כך שתוצג לכם רשימה של שיעורים קרובים:

8582482eafc67d5b.png

4. הוספת התראות

אפשרות נוספת ליצירת אינטראקציה עם משתמשים מחוץ לפעולה היא להפעיל את Actions API כדי לשלוח התראות פוש למשתמשים. בניגוד לעדכונים היומיים, העדכונים האלה לא מתוזמנים אוטומטית על ידי Assistant, כך שאתם יכולים לשלוח אותם מתי שתרצו.

בשלב הזה נסביר איך להטמיע התראות Push בפעולה שלכם על ידי הוספה של כוונת Class Canceled חדשה ושליחה של התראות למשתמשים כדי ליידע אותם על ביטול שיעור. תצטרכו גם להגדיר את שלושת הרכיבים הבאים שנדרשים לשליחת התראות:

  • חשבון Actions API – אתם שולחים התראות למשתמש על ידי שליחת בקשת POST ל-API, ולכן תצטרכו להגדיר חשבון שירות ופרטי כניסה כדי ליצור אינטראקציה עם ה-API הזה.
  • כלי העזרה להרשאות – אתם צריכים את הרשאת המשתמש כדי לגשת למזהה המשתמש שנדרש לשליחת התראות פוש. בדוגמה הזו, תשתמשו בפונקציה של ספריית לקוח כדי לקרוא לכלי העזר להרשאות ולבקש את המזהה הזה.
  • אחסון – כדי לשלוח התראות פוש למשתמש מחוץ לשיחה, צריך לאחסן את מזהי המשתמשים במקום שניתן לשלוף אותם ממנו לפי הצורך. בדוגמה הזו, תגדירו מסד נתונים של Firestore לאחסון מידע על כל משתמש.

אחרי שתפעלו לפי ההוראות האלה, תוסיפו את תיבת הדו-שיח הבאה לשיחה של הפעולה:

7c9d4b633c547823.png

איך זה ישמור על רמת העניין של המשתמשים?

משתמשי סמארטפונים מכירים כנראה את ההתראות בטלפון, שמספקות מידע ועדכונים ספציפיים לאפליקציה. התראות פוש הן דרך גמישה להגיע למשתמשים במכשירים ניידים מחוץ ל-Assistant, בתנאי שניתן למשתמשים נימוק טוב להפעלת ההתראות. המשתמשים כבר יודעים שהם יקבלו התראות מדי יום, כי העדכונים מתבצעים מדי יום. אבל כשמדובר בהתראות פוש, המשתמשים לא יודעים אם הם מסכימים לקבל התראות בתדירות נמוכה או שיוצגו להם כמה התראות ביום.

התראות פוש יכולות להיות כלי שימושי לעידוד מעורבות, אבל לא צריך לשלב אותן בכל פעולה. כדאי להביא בחשבון את הטיפים הבאים כשמחליטים אם להוסיף התראות פוש לפעולה:

  • תכננו כמה לוחות זמנים לדוגמה להפעלת התראות. אם אתם מתכננים לשלוח רק התראה אחת ביום, כדאי להשתמש במקום זאת בעדכונים יומיים.
  • חשוב לוודא שההתראות הפוש יספקו מידע שימושי בכל פעם שהן יתקבלו. ההתראות יכולות גם לכלול קישורי עומק לאחד מה-Intents של הפעולה, לכן חשוב לוודא שה-Intent שימושי ורלוונטי.
  • חשוב להיות ברורים כשמבקשים ממשתמש להירשם לקבלת התראות פוש. הם צריכים להבין מה צפוי להם בכל התראה בדחיפה, ולקבל מושג לגבי התדירות שבה ההתראות נשלחות.

הפעלת Actions API

  1. פותחים את מסוף Google Cloud ובוחרים את שם פרויקט ה-Actions בתפריט הנפתח.

d015c1515b99e3db.png

  1. בתפריט הניווט (☰), עוברים אל APIs & Services > Library.
  2. מחפשים את Actions API ולוחצים על Enable (הפעלה).

6d464f49c88e70b4.png

יצירה של חשבון שירות

כדי לשלוח בקשות ל-Actions API, צריך ליצור חשבון שירות לצורך אימות. כדי ליצור ולהתקין מפתח של חשבון שירות עבור Actions API:

  1. בתפריט הניווט (☰) של מסוף Google Cloud, עוברים אל APIs & Services > Credentials.
  2. לוחצים על Create credentials > Service account key (יצירת פרטי כניסה > מפתח לחשבון שירות).
  3. בתפריט הנפתח Service account, בוחרים באפשרות New Service Account (חשבון שירות חדש).
  4. ממלאים את הפרטים הבאים:
  • שם חשבון השירות: service-account
  • תפקיד: פרויקט > בעלים
  • מזהה חשבון השירות: service-account (תמיד מופיע אחרי @<project_id>.iam.gserviceaccount.com)
  • סוג המפתח: JSON
  1. לוחצים על יצירה.
  2. מעבירים את קובץ ה-JSON שהורדתם לספרייה /user-engagement-codelab/start/functions/ של הפרויקט.
  3. משנים את השם של קובץ ה-JSON ל-service-account.json.

d9bd79d35691de3a.png

הפעלת Firestore

כדי לשלוח התראות מחוץ לשיחה, צריך דרך לאחסן מזהי משתמשים שאפשר להפנות אליהם מקוד ההתראות. בדוגמה הזו, אנחנו משתמשים במסד נתונים של Firestore כדי לאחסן את מזהי המשתמשים של משתמשים שנרשמו למינוי.

כדי ליצור מסד נתונים של Firestore לפעולה:

  1. ב מסוף Firebase, בוחרים את שם הפרויקט של Actions.
  2. בתפריט הניווט הימני, עוברים אל פיתוח > מסד נתונים ולוחצים על יצירת מסד נתונים.
  3. בוחרים באפשרות התחלה במצב בדיקה.
  4. לוחצים על Enable.

6dfc386413954caa.png

הגדרת Dialogflow

כדי ליצור את תהליך ההצטרפות לקבלת התראות פוש, פועלים לפי השלבים הבאים במסוף Dialogflow:

הצגת בקשה למשתמש להירשם למינוי

  1. מגדירים כוונה חדשה לטיפול בבקשת המשתמש להירשם לקבלת התראות לגבי שיעורים שבוטלו. במסוף Dialogflow, לוחצים על הלחצן + לצד Intents (כוונות) בחלונית הניווט הימנית כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Setup Push Notifications.
  3. בקטע Training phrases (ביטויי אימון), מוסיפים את הביטויים הבאים של משתמשים:
  • Subscribe to notifications
  • Send notification
  • Notify me
  • Send class notifications
  • Cancelled notifications
  1. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  2. לוחצים על שמירה בראש הדף.

3d99bc41d0492552.png

טיפול בהחלטה של המשתמש

  1. מגדירים כוונת משתמש חדשה לטיפול בתגובה של המשתמש לבקשת ההרשמה לקבלת התראות Push. לוחצים על הלחצן + לצד Intents (כוונות) בסרגל הניווט הימני כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Confirm Push Notifications.
  3. בקטע אירועים, מוסיפים את actions_intent_PERMISSION. האירוע הזה ב-Dialogflow יופעל כשהמשתמש יסיים את תהליך ההרשמה לקבלת הודעות פוש, בין אם הוא נרשם בסופו של דבר ובין אם לא.
  4. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  5. לוחצים על שמירה בראש הדף.

d37f550c5e07cb73.png

טיפול בהתראות פוש

אתם יכולים לקשר את ההתראות הפוש שלכם לכוונה ספציפית, כך שמשתמשים שמקישים על התראת הפוש יקבלו קישור עומק ישירות לכוונה הזו בפעולה שלכם. בדוגמה הזו, מוסיפים כוונה חדשה להתראות פוש שמספקת פרטים על שיעורים שבוטלו.

כדי להוסיף כוונה שתופעל כשמשתמש יקיש על התראה בדחיפה:

  1. במסוף Dialogflow, לוחצים על הלחצן + לצד Intents (כוונות) בחלונית הניווט הימנית כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Class Canceled.
  3. בקטע Training phrases (ביטויי אימון), מוסיפים את Cancelations כuser expression (ביטוי משתמש).
  4. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  5. לוחצים על שמירה בראש הדף.

940379556f559631.png

שליחת התראות לבדיקה באמצע השיחה

בסביבת הייצור, צריך להשתמש בסקריפט נפרד מקוד ההשלמה של הפעולה כדי לשלוח התראות פוש. בדוגמה הזו, יוצרים כוונה שאפשר להפעיל כדי לשלוח התראה בזמן שמדברים עם הפעולה. הכוונה הזו מיועדת למטרות ניפוי באגים בלבד. בפועל, לא מומלץ לטפל בהתראות פוש באמצעות ההשלמה או להפעיל אותן כחלק מהשיחה של הפעולה.

כדי ליצור כוונה לבדיקת התראות פוש:

  1. למטרות בדיקה וניפוי באגים, מגדירים כוונה חדשה שמאפשרת לשלוח הודעות פוש למשתמשים שנרשמו. במסוף Dialogflow, לוחצים על הלחצן + לצד Intents (כוונות) בחלונית הניווט הימנית כדי ליצור כוונה חדשה.
  2. נותנים לכוונת הרכישה החדשה את השם Test Notification.
  3. בקטע Training phrases (ביטויי אימון), מוסיפים את Test notification כuser expression (ביטוי משתמש).
  4. בקטע Fulfillment, מעבירים את המתג של האפשרות Enable webhook call for this intent (הפעלת קריאה ל-webhook עבור הכוונה הזו).
  5. לוחצים על שמירה בראש הדף.

6967f5a997643eb8.png

הפעלת התראות

כדי להפעיל התראות פוש על כוונת המשתמש Class Canceled:

  1. בסרגל הניווט של מסוף Dialogflow, עוברים אל Integrations (שילובים).
  2. בכרטיס Google Assistant, לוחצים על הגדרות שילוב.
  3. מוסיפים את Class Canceled כ-Intent של הפעלה מרומזת. השלב הזה נחוץ כדי ש-Dialogflow יזהה שהמשתמשים יכולים להתחיל את השיחה עם כוונת המשתמש Class Canceled (על ידי הקשה על התראה).
  4. לוחצים על סגירה.

1ac725231ed279a1.png

  1. במסוף הפעולות, לוחצים על הכרטיסייה פיתוח ובוחרים באפשרות פעולות בסרגל הניווט הימני.
  2. לוחצים על השיעור בוטל ברשימה פעולות.
  3. בקטע User engagement (מעורבות משתמשים), משנים את המצב של האפשרות Would you like to send push notifications? (האם תרצה לשלוח התראות פוש?).
  4. מגדירים שם תוכן תיאורי שמתאר את ההתראה בדחיפה. ההקשר יהיה 'Is it ok if I send push notifications for ?' (האם אפשר לשלוח התראות פוש עבור ?), לכן חשוב לוודא שהכותרת תיאורית ושהיא נשמעת נכון כשמקריאים אותה בקול רם. בדוגמה הזו, מגדירים את שם התוכן לערך class cancelations.
  5. לוחצים על שמירה בראש הדף.

4304c7cd575f6de3.png

יישום של מילוי ההזמנה

כדי להטמיע את הביצוע ב-webhook, צריך לבצע את השלבים הבאים:

טעינת פניות קשורות

b2f84ff91b0e1396.png בקובץ index.js, מעדכנים את הפונקציה require() כדי להוסיף את החבילה UpdatePermission מהחבילה actions-on-google, כך שהייבוא ייראה כך:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
  UpdatePermission,
} = require('actions-on-google');

עדכון הצ'יפים של ההצעות

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הערך NOTIFICATIONS לרשימה של שמות הצ'יפים החכמים להצעות, כך שההגדרה של Suggestion תיראה כך:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
  NOTIFICATIONS: 'Get notifications',
};

הגדרת ייבוא חדש

כדי להתחבר למסד הנתונים של Firestore, מוסיפים את חבילת firebase-admin ומוסיפים קבועים לשדות שמאוחסנים במסד הנתונים. בנוסף, מייבאים את החבילות google-auth-library ו-request כדי לטפל באימות ובבקשות ל-Actions API.

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הקוד הבא ליבוא:

index.js

// Firebase admin import
const admin = require('firebase-admin');

// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();

// Firestore constants
const FirestoreNames = {
 INTENT: 'intent',
 USER_ID: 'userId',
 USERS: 'users',
};

// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');

הצעה להגדרת התראות על ביטול שיעורים

b2f84ff91b0e1396.png בקובץ index.js, מחליפים את הקוד הבא:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

עם הנתונים הבאים:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
    };
  };
});

הוספת ביצוע של כוונות חדשות

כשהמשתמש אומר שהוא רוצה להירשם לקבלת התראות פוש, מתקשרים אל העוזר UpdatePermission כדי לבקש מהמשתמש הרשאה. אם הפעולה הזו תצליח, הארגומנט PERMISSION יתווסף לארגומנטים של האובייקט conv, ותוכלו לבדוק אותו כדי לשנות את כיוון השיחה.

אחרי שקיבלתם את הרשאת המשתמש, אתם יכולים לקחת את מזהה המשתמש מהארגומנטים של אובייקט conv ולשמור אותו במסד הנתונים. בהמשך תשלחו את מזהה המשתמש הזה אל Actions API, שבאמצעותו Assistant קובעת למי לשלוח את ההתראה.

לבסוף, מוסיפים את הפעולה ל-intent‏ Class Canceled שמופעל בהקשה על ההתראה. בדוגמה הזו, התשובה היא מחרוזת placeholder, אבל בגרסה מוכנה לייצור של הפעולה הזו, סקריפט ההתראה יספק מידע דינמי יותר לגבי הכיתה שבוטלה.

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הקוד הבא:

index.js

// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
 conv.ask('Update permission for setting up push notifications');
 conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});

// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
 if (conv.arguments.get('PERMISSION')) {
   let userId = conv.arguments.get('UPDATES_USER_ID');
   if (!userId) {
     userId = conv.request.conversation.conversationId;
   }
   // Add the current conversation ID and the notification's
   // target intent to the Firestore database.
   return db.collection(FirestoreNames.USERS)
   .add({
     [FirestoreNames.INTENT]: 'Class Canceled',
     [FirestoreNames.USER_ID]: userId,
   })
   .then(() => {
     conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
     'Can I help you with anything else?');
   });
 } else {
   conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
     'Can I help you with anything else?');
 }
 if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
  }
});

// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
 conv.ask('Classname at classtime has been canceled.');
});

הוספת התראות לבדיקה

כדי לשלוח התראה בדחיפה למשתמש, שולחים בקשת POST אל Actions API עם מזהה המשתמש, כותרת ההתראה וכוונת היעד. בדוגמה הזו, הפעלת הכוונה Test Notification תבצע איטרציה במסד הנתונים שלכם ב-Firestore ותשלח התראות פוש לכל משתמש שנרשם לקבלת התראות.

חשוב לזכור שבדוגמה הזו, אתם כוללים את הקוד ששולח את ההתראה בדחיפה ב-webhook fulfillment ומפעילים את הקוד הזה על ידי הפעלת כוונת בדיקה בשיחה. בפעולות שאתם מתכוונים לפרסם, קוד ההתראה בדחיפה צריך להיות בסקריפט נפרד מההשלמה.

b2f84ff91b0e1396.png בקובץ index.js, מוסיפים את הקוד הבא:

index.js

// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
 // Use the Actions API to send a Google Assistant push notification.
 let client = auth.fromJSON(require('./service-account.json'));
 client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
 let notification = {
   userNotification: {
     title: 'Test Notification from Action Gym',
   },
   target: {},
 };
 client.authorize((err, tokens) => {
   if (err) {
     throw new Error(`Auth error: ${err}`);
   }
   // Iterate through Firestore and send push notifications to every user
   // who's currently opted in to canceled class notifications.
   db.collection(FirestoreNames.USERS)
       .where(FirestoreNames.INTENT, '==', 'Class Canceled')
       .get()
       .then((querySnapshot) => {
         querySnapshot.forEach((user) => {
           notification.target = {
             userId: user.get(FirestoreNames.USER_ID),
             intent: user.get(FirestoreNames.INTENT),
           };
           request.post('https://actions.googleapis.com/v2/conversations:send', {
             'auth': {
               'bearer': tokens.access_token,
             },
             'json': true,
             'body': {'customPushMessage': notification, 'isInSandbox': true},
           }, (err, httpResponse, body) => {
             if (err) {
               throw new Error(`API request error: ${err}`);
             }
             console.log(`${httpResponse.statusCode}: ` +
               `${httpResponse.statusMessage}`);
             console.log(JSON.stringify(body));
           });
         });
       })
       .catch((error) => {
         throw new Error(`Firestore query error: ${error}`);
       });
 });
 conv.ask('A notification has been sent to all subscribed users.');
});

בדיקת ההתראות

בטרמינל, מריצים את הפקודה הבאה כדי לפרוס את קוד ה-webhook המעודכן ב-Firebase:

firebase deploy

כדי לבדוק את ההתראות בסימולטור הפעולות:

  1. במסוף Actions, עוברים לכרטיסייה Test.
  2. מקלידים Talk to my test app בשדה קלט ולוחצים על Enter.
  3. מקלידים Learn about classes ומקישים על Enter.
  4. מקלידים Get notifications ומקישים על Enter.
  5. אם עדיין לא נתתם לפעולה הרשאה לשלוח לכם התראות פוש, מקלידים yes ולוחצים על Enter.
  6. מקלידים yes ומקישים על Enter. מעכשיו, חשבון Google שלכם רשום לקבלת התראות פוש על הפעולה הזו.

3a8704bdc0bcbb17.png

  1. מקלידים no ומקישים על Enter כדי לצאת.
  2. מקישים על Talk to my test app ומקישים על Enter כדי להתחיל שיחה חדשה.
  3. מקלידים Test notification ומקישים על Enter.

634dfcb0be8dfdec.png

תוך כמה דקות, אמורה להתקבל התראה מ-Assistant בנייד עם הכיתוב 'התראת בדיקה מ-Action Gym'. הקשה על ההתראה הזו תעביר אתכם באמצעות קישור עומק אל כוונת ביטול השיעור של הפעולה.

33cbde513c10122e.png

5. יצירת קישור ל-Assistant

עד עכשיו דיברנו על תכונות מעורבות שאפשר להטמיע כדי לגרום למשתמשים לחזור לפעולה שלכם, אבל התכונות האלה מניחות שיש לכם משתמשים שמגלים את הפעולה ומשתמשים בה.

אתם יכולים ליצור קישור ל-Assistant שיקשר משתמשים במכשירים ניידים ישירות לפעולה שלכם ב-Assistant. מכיוון שקישור ל-Assistant הוא היפר-קישור רגיל, אפשר להוסיף אותו לאתר או לכל חומר שיווקי באינטרנט, כמו פוסט בבלוג או ברשתות החברתיות.

בשלב הזה נסביר מהו קישור ל-Assistant, איך ליצור קישור כזה לכוונת הפתיחה של הפעולה ואיך להוסיף אותו לאתר פשוט לצורך בדיקה.

איך זה ישמור על רמת העניין של המשתמשים?

יכול להיות שיהיה לכם קשה למשוך משתמשים אל הפעולה שלכם בפעם הראשונה, במיוחד אם הם צריכים להפעיל את הפעולה שלכם ב-Assistant באופן מפורש. קישור ל-Assistant מפחית את החיכוך הזה בכך שהוא מספק למשתמשים קישור ישיר לפעולה שלכם. כשמשתמש לוחץ על הקישור שלכם ל-Assistant במכשיר עם Assistant מובנית, הוא מועבר ישירות לפעולה שלכם. כשמשתמש פותח את הקישור במכשיר שאינו נייד או בכל מכשיר אחר שלא תומך ב-Assistant, הוא עדיין יועבר לרישום של הפעולה בספריית הפעולות (אם היא פורסמה), כך שהקישור עדיין יכול לשמש לשיווק הפעולה למשתמשים האלה.

קישורים ל-Assistant יכולים להיות כלי שימושי ליצירת אינטראקציה עם המשתמשים, ולכן כדאי ליצור קישור כזה אם אתם מתכננים לפרסם את הפעולה שלכם דרך האתר או הרשתות החברתיות. לפני שיוצרים ומפיצים קישור ל-Assistant, כדאי לקרוא את הטיפים הבאים:

  • הקישורים ל-Assistant פועלים רק אחרי פרסום הפעולה. בזמן שהפרויקט נמצא במצב טיוטה, הקישור יעבוד רק במכשירים שלכם. כל מי שלא נמצא ברשימה הזו יועבר לדף 404 בספריית הפעולות.
  • כדי לאפשר למשתמשים לבדוק קישור ל-Assistant לפני הפרסום, אפשר להשיק את הפעולה בסביבת אלפא או בטא. חשוב לזכור שרק משתמשים שמשתתפים בבדיקת האלפא או הבטא יוכלו לבדוק את הקישור ל-Assistant.
  • חשוב לוודא שהכוונה של קישור Assistant ליעד יוצרת רושם ראשוני טוב על משתמשים חדשים. היעד שמוגדר כברירת מחדל לקישור Assistant הוא כוונת המשתמש 'ברוכים הבאים', כי היא אמורה להציג את הפעולה בצורה טובה

כדי ליצור קישור ל-Assistant עבור כוונת הפתיחה:

  1. במסוף הפעולות, לוחצים על הכרטיסייה פיתוח ובוחרים באפשרות פעולות בסרגל הניווט הימני.
  2. ברשימה פעולות, לוחצים על actions.intent.MAIN.
  3. בקטע קישורים, מעבירים את המתג של האפשרות האם רוצה להפעיל כתובת URL לפעולה הזו.
  4. מגדירים שם קישור תיאורי שמתאר את הפעולה. הכותרת צריכה להיות פשוטה ולכלול פועל ושם עצם שמתארים מה המשתמש יכול לעשות באמצעות הפעולה. בדוגמה הזו, מגדירים את שם הקישור ל-learn about Action Gym.
  5. מעתיקים את קטע קוד ה-HTML מחלקו התחתון של הדף הזה ושומרים אותו לשימוש מאוחר יותר.
  6. לוחצים על שמירה בראש הדף.

55341b8102b71eab.png

פריסת אתר בדיקה

כדי לבדוק את הקישור ל-Assistant, אפשר להשתמש בכלים של Firebase כדי לפרוס אתר בדיקה לצד ההשלמה. כבר בנינו אתר בדיקה פשוט לדוגמה הזו, אתם רק צריכים להוסיף את הקישור שלכם ל-Assistant.

עוברים לספרייה /user-engagement-codelab-nodejs/start/public/ של ההזמנה ופותחים את הקובץ index.html בכלי לעריכת טקסט.

b2f84ff91b0e1396.png בקובץ index.html, מדביקים את קטע ה-HTML של הקישור ל-Assistant ברכיב body. הקובץ צריך להיראות כמו הקטע הבא:

index.html

<body>
    <p>
     <a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
     </a>
    </p>
</body>

בטרמינל, מריצים את הפקודה הבאה כדי לפרוס את אתר הבדיקה ב-Firebase:

firebase deploy

אחרי שהפקודה להטמעה מסיימת לפעול, רושמים את כתובת ה-URL של האירוח בפלט.

b01e8d322fb5d623.png

עוברים לכתובת ה-URL הזו בדפדפן האינטרנט במכשיר הנייד, וקישור ל-Assistant אמור להופיע באתר הבדיקה. לחיצה על הקישור הזה במכשיר הנייד אמורה להעביר אתכם אל כוונת קבלת הפנים של הפעולה ב-Assistant.

599845d647f5b624.png

אפשר גם לנסות להיכנס לכתובת ה-URL של האחסון בדפדפן במחשב. זה אמור להעביר אתכם לדף 404 בספריית הפעולות של Assistant, כי הפעולה שלכם לא פורסמה.

6. השלבים הבאים

מזל טוב!

עכשיו אתם יודעים כמה חשוב לעודד את המשתמשים להמשיך את האינטראקציה כשמפתחים פעולה, אילו תכונות של עידוד המשתמשים להמשיך את האינטראקציה זמינות בפלטפורמה ואיך מוסיפים כל תכונה לפעולה.

מקורות מידע נוספים ללמידה

כדאי לעיין במקורות המידע האלה כדי לקבל מידע נוסף על התעניינות המשתמשים בפעולה שלכם:

כדי להתעדכן בהודעות האחרונות שלנו, אתם מוזמנים לעקוב אחרינו בטוויטר ‎@ActionsOnGoogle. כדי לשתף את מה שיצרתם, אתם יכולים לצייץ עם ההאשטאג #AoGDevs.

סקר משוב

לפני שנפרדים, נשמח לקבל ממך משוב באמצעות הטופס הזה.