עדכונים יומיים (Dialogflow)

משתמש נרשם לעדכונים יומיים של פעולה בטלפון

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

חוויית המשתמש בעדכונים האלה היא:

  1. המשתמש מפעיל את אחת מכוונות הפעולה שהגדרתם כאובייקטים של עדכון יומי.
  2. המשתמש עוקב אחר בקשת הרשמה לעדכונים יומיים. ההנחיה הזו במהלך השיחה, או כצ'יפ של הצעה כשהשיחה מסתיימת.
  3. המשתמש מתזמן את השעה שבה הוא רוצה לקבל את הדיווח היומי מתבצע רישום של העדכון ב-Google Assistant.
  4. בכל יום בשעה שנקבעה, המשתמש מקבל Assistant התראה בנייד.
  5. כשהמשתמשים פותחים את ההתראה, הם מפעילים את הכוונה שלכם מוגדר כעדכון יומי ואינטראקציה עם הפעולה שלך.

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

תרחישים לדוגמה

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

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

הגדרה של עדכונים יומיים

אפשרויות נוספות ב-Dialogflow

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

  1. מזינים שם של נציג ויוצרים סוכן חדש ב-Dialogflow לדוגמה.
  2. כשהייבוא של הנציג מסתיים, לוחצים על מעבר לנציג.
  3. בתפריט הניווט הראשי עוברים אל Fulfillment (מילוי).
  4. מפעילים את העורך המוטבע ולוחצים על פריסה. כלי העריכה מכיל את הדוגמה
  5. בתפריט הניווט הראשי, עוברים אל Integrations, ואז לוחצים על Google Assistant.
  6. בחלון החלון שנפתח, מפעילים את האפשרות שינויים בתצוגה מקדימה אוטומטית ולוחצים על בדיקה. כדי לפתוח את סימולטור הפעולות.
  7. בסימולטור, מזינים Talk to my test app כדי לבדוק את הטעימה.
המשך

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

1. הכנה של כוונת עדכון

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

כדי להגדיר Intent לטריגר ב-Dialogflow:

  1. ב-Dialogflow Console, לוחצים על שילובים.
  2. בקטע Google Assistant, לוחצים על Integration Settings (הגדרות שילוב).
  3. בקטע גילוי > הפעלה מרומזת, לוחצים על הוספת Intent ולבחור את הכוונה שמפעילה את המודעה, אם היא עדיין לא מופיעה שם.
  4. מפעילים את ההגדרה תצוגה מקדימה אוטומטית אם היא לא מופעלת.
  5. לוחצים על סגירה.

ב-Actions SDK, מגדירים את כוונת העדכון ככוונת הפעלה חבילת פעולה.

2. הפעלת העדכונים

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

  1. במסוף Actions, ניווט אל פיתוח > פעולות.
  2. בוחרים את כוונת ההפעלה. אם הכוונה שלכם לא מופיעה ברשימה, לוודא שהוא מוגדר ככוונת טריגר ושל Assistant של Dialogflow של השילוב מוגדר לתצוגה מקדימה אוטומטית של שינויים.
  3. גוללים למטה לקטע התעניינות המשתמשים ומפעילים את רוצה להציע עדכונים יומיים למשתמשים.
  4. מזינים את שם התוכן.
  5. לוחצים על שמירה.

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

התאמה אישית של הרשמת עדכון (אופציונלי)

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

כדי לראות דוגמה מלאה לפעולה שמטפלת בתכונות אופציונליות של עדכון יומי: לצפייה בדוגמאות של התעניינות משתמשים ב-Actions on Google (Node.js ו-Java).

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

1. הוספת הצעה להרשמה

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

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

Node.js
app.intent('Daily Lowest Temperature', (conv, params) => {
  const today = DAYS[new Date().getDay()];
  const lowestTemperature = lowestTemperatures[today];
  conv.ask(`The lowest temperature for today is ${lowestTemperature}`);
  conv.ask('I can send you daily updates with the lowest temperature' +
    ' of the day. Would you like that?');
  conv.ask(new Suggestions('Send daily updates'));
});
Java
@ForIntent("Daily Lowest Temperature")
public ActionResponse dailyLowestTemperature(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Integer lowestTemperature =
      LOWEST_TEMPERATURES.get(LocalDate.now().getDayOfWeek());
  responseBuilder
      .add("The lowest temperature for today is " +  lowestTemperature + " degrees Fahrenheit.")
      .add("I can send you daily updates with the lowest temperature of " +
          "the day. Would you like that?")
      .addSuggestions(new String[] {
          "Send daily updates"
      });
  return responseBuilder.build();
}
קובץ JSON של Dialogflow

הערה: קובץ ה-JSON שבהמשך מתאר תגובת webhook.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
            }
          }
        ],
        "suggestions": [
          {
            "title": "Send daily updates"
          }
        ]
      }
    }
  }
}
JSON עם SDK לפעולות

הערה: קובץ ה-JSON שבהמשך מתאר תגובת webhook.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
              }
            }
          ],
          "suggestions": [
            {
              "title": "Send daily updates"
            }
          ]
        }
      }
    }
  ]
}

2. הכינוי של הרישום לעדכון

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

  • intent – הגדרה לכוונת העדכון שהגדרתם.
  • frequency – מגדירים את הערך 'DAILY'.

בקוד הבא מתועדים עדכונים יומיים לגבי המדד 'הטמפרטורה הנמוכה ביותר היומית' Intent:

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
פעולות SDK Node.js
conv.ask(new RegisterUpdate({
  intent: 'Daily Lowest Temperature',
  frequency: 'DAILY',
}));
Dialogflow Java
@ForIntent("Subscribe to Daily Updates")
public ActionResponse subscribeToDailyUpdates(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  return responseBuilder.add(new RegisterUpdate()
      .setIntent("Daily Lowest Temperature")
      .setFrequency("DAILY"))
      .build();
}
פעולות SDK ב-Java
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
    .setIntent("Daily Lowest Temperature")
    .setFrequency("DAILY"))
    .build();
קובץ JSON של Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "Daily Lowest Temperature",
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  }
}
JSON עם SDK לפעולות
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "Daily Lowest Temperature",
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ]
}

3. טיפול בתוצאה

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

ההוראות בשלב הזה משתנות בהתאם למכשיר שבו משתמשים Dialogflow או Actions SDK לפיתוח.

Dialogflow

כדי ליצור Intent שמטפל בתוצאת הרישום, פועלים לפי השלבים הבאים:

  1. במסוף של Dialogflow, יוצרים Intent חדש.
  2. מוסיפים את האירוע actions_intent_REGISTER_UPDATE.
  3. צריך להפעיל את מילוי הבקשות לפעולה מאתר אחר (webhook) עבור ה-Intent.
  4. לוחצים על שמירה.
במהלך מילוי הבקשה של ה-Intent, בודקים את registered של התוצאה, ולשנות את השיחה בהתאם.
Dialogflow Node.js
app.intent('Confirm Daily Updates Subscription', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Dialogflow Java
@ForIntent("Confirm Daily Updates Subscription")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
קובץ JSON של Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Ok, I'll start giving you daily updates."
            }
          }
        ]
      }
    }
  }
}
SDK לפעולות

בקוד האספקה, יש להוסיף טיפול בactions.intent.REGISTER.UPDATE כוונה מובנית. בודקים את הפרמטר registered של התוצאה. ולשנות את השיחה בהתאם.

Actions SDK Node.js
app.intent('actions.intent.REGISTER_UPDATE', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
פעולות SDK ב-Java
@ForIntent("actions.intent.REGISTER_UPDATE")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
JSON עם SDK לפעולות
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

התאמה אישית של העדכונים (אופציונלי)

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

ההוראות לשימוש בתכונה הזו תלויות במכשיר שבו אתם משתמשים Dialogflow או Actions SDK לפיתוח.

Dialogflow

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

  1. במסוף של Dialogflow, יוצרים ישות חדשה.
  2. אפשר להוסיף כמה ערכים ומילים נרדפות שרלוונטיות לפרמטר.
  3. לוחצים על שמירה ואז פותחים את כוונת העדכון.
  4. בקטע Actions and parameters (פעולות ופרמטרים), מגדירים את הערך actions.intent.CONFIGURE_UPDATES בתור האירוע. באותו קטע, מוסיפים פרמטר מאותו סוג כמו הישות החדשה.
  5. פותחים את העדכון 'עדכון הרשמה' Intent שמטפל ב-Intent המובנה CONFIGURE_UPDATES.
  6. בקטע Actions and parameters (פעולות ופרמטרים), מוסיפים פרמטר נדרש ומגדירים את הסוג שלו לישות שנוצרה בעבר.
  7. מעדכנים את קוד האספקה של Intent הרישום כך שיכלול אובייקט arguments עם את התכנים הבאים:
    • name – שם הפרמטר, כפי שמוגדר ב-Dialogflow.
    • textValue - ערך הפרמטר.

הקוד הבא קורא את ערך הפרמטר ומשתמש בו בבקשת הרישום לעדכון:

Dialogflow Node.js
app.intent('setup_update', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'update_of_the_day',
    arguments: [
      {
        name: 'category',
        textValue: 'Daily_lowest_temperature',
      },
    ],
    frequency: 'DAILY',
  }));
});
Dialogflow Java
@ForIntent("setup_update")
public ActionResponse setupUpdate2(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}
קובץ JSON של Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "PLACEHOLDER"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}",
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "update_of_the_day",
          "arguments": [
            {
              "name": "category",
              "textValue": "Daily_lowest_temperature"
            }
          ],
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}
SDK לפעולות

לבקש מידע נוסף מהמשתמש במימוש הכוונה, ואז להעביר את המידע כארגומנט לכוונת העדכון. כדי להגדיר עדכונים מותאמים אישית ב-Actions SDK:

  1. צריך להציג למשתמש בקשה למידע שברצונך להשתמש בו בהתאמה אישית.
  2. בקוד האספקה של העדכון ל'עדכון הרשמה' בכוונה טובה היעד CONFIGURE UPDATES כולל אובייקט arguments עם את התכנים הבאים:
    • name – שם לארגומנט.
    • textValue - מידע מהמשתמש שיועבר כארגומנט.

הקוד הבא שולח ארגומנט עם בקשת הרישום לעדכון:

Actions SDK Node.js
app.intent('actions.intent.TEXT', (conv) => {
  if (conv.input.raw === 'Send daily') {
    conv.ask(new RegisterUpdate({
      intent: 'update_of_the_day',
      arguments: [
        {
          name: 'category',
          textValue: 'Daily_lowest_temperature',
        },
      ],
      frequency: 'DAILY',
    }));
  }
});
פעולות SDK ב-Java
@ForIntent("actions.intent.CONFIGURE_UPDATES")
public ActionResponse configureUpdatesActionsSdk(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  String input = request.getRawInput().getQuery();
  if (input.equals("DAILY_NOTIFICATION_SUGGESTION")) {
    rb.add("For which category do you want to receive daily updates?");
  } else {
    rb.add("Sorry, I didn't get that. Please try again later").endConversation();
  }
  return rb.build();
}
JSON עם SDK לפעולות
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "PLACEHOLDER"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "update_of_the_day",
            "arguments": [
              {
                "name": "category",
                "textValue": "Daily_lowest_temperature"
              }
            ],
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

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

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

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