כוונות מותאמות אישית

כל אפליקציה שונה, ולא כל תכונות האפליקציה תואמות Intent מובנה בפעולות באפליקציה (BII). במקרים שבהם אין BII לפונקציונליות של האפליקציה, אפשר במקום זאת להשתמש כוונה להרחיב את האפליקציה באמצעות 'פעולות באפליקציה'.

בדומה ל-BII, קהלים בהתאמה אישית עם כוונת רכישה פועלים לפי סכימה של shortcuts.xml ופעילות בתור נקודות החיבור בין Assistant לבין מילוי ההזמנות שהגדרתם. Custom (בהתאמה אישית) ל-Intents יש גם פרמטרים של Intent, שאפשר למפות לפרמטרים המתאים.

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

מגבלות

אלה המגבלות הבאות שחלות על כוונת רכישה בהתאמה אישית:

  • השם של קהל בהתאמה אישית לפי העדפות תוכן לא יכול להתחיל ב-actions.intent.
  • השם של קהל בהתאמה אישית לפי העדפות תוכן חייב להיות ייחודי מבין השמות של קהלים בהתאמה אישית לפי העדפות תוכן באפליקציה שלך.
  • רק סוגי נתונים מסוימים זמינים לחילוץ פרמטרים על ידי Google Assistant (לעיון ברשימת הסוגים הנתמכים).
  • אובייקטים מסוג Intent בהתאמה אישית חייבים לכלול דוגמאות לדפוסי שאילתות שאפשר להשתמש בהם (מידע נוסף זמין בקטע דפוסי שאילתות).
  • כל שאילתה תומכת בשני פרמטרים של טקסט לכל היותר. המגבלה הזאת לא חלים על סוגי נתונים אחרים.
  • קהלים בהתאמה אישית עם כוונת רכישה תומכים רק בשפה האנגלית. בנוסף, המכשיר ו-Assistant הגדרות השפה חייבות להיות תואמות.

סוגים נתמכים

אובייקטים מסוג Intent בהתאמה אישית תומכים בסוגים הבאים של schema.org עבור חילוץ פרמטרים:

  • https://schema.org/Text
  • https://schema.org/Date
  • https://schema.org/Time
  • https://schema.org/Number

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

בדומה לפעולות אחרות באפליקציה שמשתמשות ב-BII, אתם מגדירים Intent ברכיב <capability> shortcuts.xml.

היכולות מוגדרות ברכיב הבסיסי (root) <shortcuts>. אחרי ש מגדירים את הרכיב <shortcuts>, צריך לכלול את מרחבי השמות של המאפיינים שאליהם אתם רוצים לגשת, כמו בדוגמה הבאה:

<shortcuts
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
  ...
</shortcuts>

מספקים את השם של קהל בהתאמה אישית עם כוונת רכישה במאפיין android:name, וגם להפנות לקובץ משאבים של תבניות שאילתות מאפיין queryPatterns.

<shortcuts
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
  <capability
      android:name="custom.actions.intent.EXAMPLE_INTENT"
      app:queryPatterns="@array/ExampleQueries">
    <intent ...>
      <url-template
          android:value="http://custom.com{?number_of_items,item_name}" />
      <parameter
          android:name="number_of_items"
          android:key="number_of_items"
          android:mimeType="https://schema.org/Number" />
      <parameter
          android:name="item_name"
          android:key="item_name"
          android:mimeType="https://schema.org/Text" />
    </intent>
  </capability>
  ...
</shortcuts>

שמות בהתאמה אישית עם כוונת רכישה לא יכולים להתחיל ב- actions.intent, כי מרחב השמות הזה שמור ל-BII. במקום זאת, לתת שם לכוונות המודעה בהתאמה אישית. צריך להשתמש בתחילית custom.actions.intent כדי להבדיל בין קהלים בהתאמה אישית לפי העדפות תוכן יעדי BII ו-Intentים של Android, פועלות בצורה שונה.

לכל פרמטר צריך לספק את הסוג הנתמך של schema.org. שמתארת בצורה הטובה ביותר את המשמעות של הפרמטר. לדוגמה, אפשר להשתמש ב- https://schema.org/Date כדי לתאר את התאריך שאתה מצפה לקבל:

...
<intent>
  <url-template android:value="https://example.com/appt{?apptType,date,time}" />
  <parameter
      android:name="date"
      android:key="date"
      android:mimeType="https://schema.org/Date" />
  ...
</intent>
...

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

הקוד הבא מתאר פעולה באפליקציה שמשתמשת בשאילתה שאליה מפנה דפוסים כדי להפעיל את הקהל בהתאמה אישית עם כוונת רכישה SCHEDULE_APPOINTMENT ומשתמשת קבוצת הערכים DRIVERS_LICENSE ו-VEHICLE_REGISTRATION, עבור apptType הפרמטר.

<shortcuts
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
  <capability
      android:name="custom.actions.intent.SCHEDULE_APPOINTMENT"
      app:queryPatterns="@array/scheduleApptQueries">
    <intent ...>
     <url-template android:value="https://example.com/appt{?apptType,date,time}" />
       <parameter
          android:name="date"
          android:key="date"
          android:mimeType="https://schema.org/Date" />
       <parameter
          android:name="time"
          android:key="time"
          android:mimeType="https://schema.org/Time" />
       <!-- The following parameter has no type because the shortcuts are bound to it -->
       <parameter android:name="apptType" android:key="apptType" />
    </intent>
  </capability>

  <shortcut
      android:shortcutShortLabel="Driver's License"
      android:shortcutId="DRIVERS_LICENSE">
    <capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
      <parameter-binding
          android:key="apptType"
          android:value="@string/driversLicense" />
    </capability-binding>
  </shortcut>

  <shortcut
      android:shortcutsShortLabel="Vehicle Registration"
      android:shortcutId="VEHICLE_REGISTRATION">
    <capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
      <parameter-binding
          android:key="apptType"
          android:value="@string/vehicleRegistration" />
    </capability-binding>
  </shortcut>
</shortcuts>

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

דפוסי שאילתות

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

בקובץ משאב של Android (בדרך כלל /res/values/strings.xml), מציינים שאילתה דפוסים כפריטים במערך מחרוזות. כאשר מתבצעת פעולה באפליקציה, Google Assistant בודקת את שאילתת המשתמש מול דפוסי שאילתות כחלק מהתאמה לכוונה של המשתמש למילוי הזמנות. כל שאילתה שמייצגת ביטוי שלדעתכם חוקי קהל בהתאמה אישית לפי העדפות תוכן.

כשיוצרים דפוסי שאילתות של כוונות מותאמות אישית, יש לצפות שכל דפוס יפעל לפי קריאה מפורשת, כמו "open Example App וכן" או "start example App and". נניח, לדוגמה, את שאילתות המשתמש הבאות:

  • "Ok Google, open Example Game App and start להתיר a הכרטיסייה ".
  • "Ok Google, open Example Game App and start create an apple pie" (פתח את אפליקציית המשחק לדוגמה והתחילו ליצור פאי תפוחים).
  • "Ok Google, start Example Game App and craft 5 חבר items".
  • "Ok Google, use Example Game App כדי לייצר עוגה 5 פעמים".

כדי להתאים לשאילתות של משתמשים, עליך לספק דפוסי שאילתות שמכילים את החלק שאילתה אחרי ביטוי ההפעלה. עבור מידע שרוצים לחלץ (למשל טקסט או מספר שהמשתמש סיפק), אתם מקצים ערכים פרמטר ה-Intent התואם עם ה-placeholders בדפוס השאילתה.

כדי להפנות לפרמטר בדפוס שאילתה, צריך להוסיף את $ לשם של שבדפוס שלכם. לדוגמה, כדי ליצור ערך placeholder עבור פרמטר כמו <parameter name="date1" ... (ב-actions.xml) או <parameter android:name="date1" ... (ב-shortcuts.xml), השתמשת ב-$date1.

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

<resources>
  <string-array name="ExampleQueries">
    <item>start making a $text1</item>
    <item>start making an $text1</item>
    <item>craft $number1 $text1 items</item>
    <item>produce $text1 $number1 times</item>
  </string-array>
</resources>

תבניות שאילתות תומכות בתנאים ובהגבלות. לדוגמה: set (an)? appointment $date $time. במקרה הזה, שתי האפשרויות 'יש לקבוע פגישה היום בצהריים' וגם "קביעת פגישה היום בצהריים" הן שאילתות תקינות.