הרחבה של אפליקציה ל-Android ל-Google Assistant באמצעות 'פעולות באפליקציה'

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

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

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

מה תפַתחו

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

מה תלמדו

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

דרישות מוקדמות

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

  • טרמינל להרצת פקודות מעטפת שמותקן בהם git.
  • הגרסה העדכנית של Android Studio.
  • חשבון Google עם גישה אל [Google Play Console][].
  • מכשיר Android פיזי או וירטואלי עם גישה לאינטרנט בחנות Play.

לפני שממשיכים, חשוב לוודא שאותו חשבון Google מחובר ל-Android Studio ולאפליקציית Google במכשיר הבדיקה.

2. איך זה עובד

פעולות באפליקציה מחברות בין משתמשים מ-Google Assistant לאפליקציה ל-Android. איך הם פועלים?

כשמשתמש מבקש מ-Assistant לבצע משימה באמצעות האפליקציה שלכם, Assistant מתאימה את השאילתה שלו ל'פעולות באפליקציה' capability שמוגדר במשאב ה-XML של shortcuts.xml האפליקציה.

תרשים זרימה שמראה איך Google Assistant מעבדת שאילתה קולית של פעולות באפליקציה

איור 1. תרשים זרימה שמראה איך Assistant מעבדת שאילתה קולית של פעולות באפליקציה.

כל רכיב יכולת מגדיר:

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

כוונות

ב-Natural Language Understanding (NLU), הכוונה היא קבוצה של ביטויי משתמש שיש להם משמעויות דומות. Google יצרה עשרות אתרים אובייקטים מסוג Intent (BII) שכוללים מגוון רחב של סוגי בקשות שזמינים במסגרת 'פעולות באפליקציה'. לדוגמה, Assistant למדה איך לשייך את הביטויים "Order a פיצה" (הזמנת פיצה) או "show me the desert menu" (אני רוצה לראות את תפריט הקינוחים) לממשק BII של ORDER_MENU_ITEM. בעזרת 'פעולות באפליקציה', תוכלו למנף את ה-BII האלה כדי להרחיב במהירות בקשות קוליות נפוצות לפונקציונליות של האפליקציה.

אספקה

כשבקשת משתמש מפעילה פעולה באפליקציה ב-shortcuts.xml, הפעילות ב-Android צריכה לזהות את ה-Intent או קישור העומק הנכנסים ל-Android ולטפל בהם, ולספק למשתמש את הפונקציונליות הרצויה. התוצאה היא חוויית משתמש מבוססת-קול שבה Assistant מפעילה את האפליקציה בתגובה לשאילתה של המשתמש.

3. הכנת סביבת הפיתוח

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

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

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

git clone --branch codelab-start https://github.com/actions-on-google/appactions-fitness-kotlin.git

אחרי שמשכפלים את המאגר, פותחים אותו ב-Android Studio:

  1. בתיבת הדו-שיח תחילת העבודה ב-Android Studio לוחצים על ייבוא פרויקט.
  2. מוצאים את התיקייה שאליה שכפול המאגר ובוחרים בה.

עדכון המזהה של האפליקציה ל-Android

עדכון מזהה האפליקציה של האפליקציה משמש לזיהוי ייחודי של האפליקציה במכשיר הבדיקה ולמניעת 'שם חבילה כפול'. שגיאה אם האפליקציה הועלתה ל-Play Console. כדי לעדכן את מזהה האפליקציה, פותחים את app/build.gradle:

android {
...
  defaultConfig {
    applicationId "com.MYUNIQUENAME.android.fitactions"
    ...
  }
}

מחליפים את "MYUNIQUENAME" בשדה applicationId למשהו ייחודי לך.

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

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

  1. פותחים את מכשיר הבדיקה הווירטואלי או הפיזי של Android.
  2. אימות שאפליקציית Assistant פועלת.
  3. באמצעות Android Studio לפרוס ולהריץ את האפליקציה לדוגמה במכשיר שלכם.

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

  1. ב-Android Studio, בוחרים באפשרות הפעלה > אפשר להפעיל את האפליקציה או ללחוץ על הפעלהacabcb8f8634af20.png בסרגל הכלים.
  2. אם משתמשים במכשיר וירטואלי, בתיבת הדו-שיח Select Deployment Target בוחרים מכשיר וירטואלי ולוחצים על OK (אישור). הגרסה המומלצת של מערכת ההפעלה היא Android בגרסה 8 (רמת API 26) ואילך, אבל הפעולות פועלות במכשירים החל מ-Android 5 (רמת API 21).
  3. אחרי שפותחים את האפליקציה, לוחצים לחיצה ארוכה על הלחצן הראשי כדי להגדיר את Assistant ולוודא שהיא פועלת. אם עוד לא עשיתם זאת, נכנסים ל-Assistant.
  4. פותחים את האפליקציה מחדש.

טלפון עם אפליקציית Fit Actions פתוחה, עם נתונים סטטיסטיים של התרגיל.

איור 2. האפליקציה לדוגמה 'פעולות של Fit' מציגה נתונים סטטיסטיים על פעילות גופנית.

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

התקנת הפלאגין של Google Assistant

הפלאגין של Google Assistant מאפשר לבדוק את הפעולות באפליקציה במכשיר בדיקה. כדי להוסיף אותו ל-Android Studio, צריך לבצע את השלבים הבאים:

  1. עוברים אל קובץ > הגדרות (Android Studio > העדפות ב-MacOS).
  2. בקטע 'יישומי פלאגין', עוברים אל Marketplace ומחפשים את 'Google Assistant'.
  3. מתקינים את הכלי ומפעילים מחדש את Android Studio.

4. הוספת יכולת BII של התחלת תרגיל

ממשק BII של actions.intent.START_EXERCISE מאפשר למשתמשים לפתוח אפליקציה ולהתחיל אימון כושר באמצעות הקול. בשלב הזה, תטמיעו יכולת עבור ה-BII הזה, שתאפשר למשתמשים לבקש מ-Assistant להתחיל ריצה באפליקציית כושר.

הגדרת היכולת

Assistant משתמשת ברכיבי capability שהוגדרו בshortcuts.xml כדי לעבד את הקול של פקודות קוליות לפי השלבים הבאים:

  1. Assistant מתאימה את השאילתה הקולית של המשתמש ל-BII שמוגדר ביכולות של האפליקציה שלך.
  2. Assistant מחלצת ערכים מהשאילתה לפרמטרים של BII. כל פרמטר מתווסף ל-Bundle שמצורף ל-Intent שנוצר.
  3. Assistant משתמשת ב-Intent כדי להפעיל את האפליקציה, וכך היא מאפשרת לאפליקציה גישה לפרמטרים בחבילה.

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

צריך להוסיף את ה-BII START_EXERCISE לאפליקציה על ידי הוספה של קובץ ה-capability הזה אל shortcuts.xml, שנמצא בספריית הפרויקטים לדוגמה app/src/main/res/xml:

<!-- shortcuts.xml -->

<capability android:name="actions.intent.START_EXERCISE">
  <intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
    android:targetClass="com.devrel.android.fitactions.FitMainActivity">
    <parameter
      android:name="exercise.name"
      android:key="exerciseType"/>
  </intent>
</capability>

מחליפים את PUT_YOUR_APPLICATION_ID_HERE ב-applicationId הייחודי שהגדרתם בשלב הקודם.

קטע ה-XML לדוגמה הקודם:

  • הצהרה על יכולת של START_EXERCISE BII.
  • מציינת את intent ל-Android ש-Assistant יוצרת כדי להפעיל את האפליקציה:
    • המאפיינים targetPackage ו-targetClass מציינים את הפעילות המקבלת.
    • המאפיין parameter ממפה את הפרמטר exercise.name BII ל-exerciseType בתוספות Bundle שהתקבלו בפעילות.

טיפול בפרמטרים של BII עם מלאי מוטבע

פרמטרים של BII מייצגים את הרכיבים שחולצו משאילתת משתמש של Assistant. לדוגמה, כשמשתמש אומר "Ok Google, start a run on ExampleApp", Assistant שולפת את הפקודה run. לפרמטר ה-BII של exercise.name schema.org. בחלק ממזהי BII, תוכלו להורות ל-Assistant להתאים פרמטרים של BII לקבוצה של מזהים שנדרשים על ידי האפליקציה שלכם.

כדי לעשות זאת, מקשרים את רכיבי המלאי המוטבע לפרמטר ה-BII. מלאי מוטבע הוא קבוצה של ערכי פרמטרים נתמכים של BII, כמו 'run', 'hike' ו-'jog', ואת המזהה של קיצור הדרך התואם שלהם, כמו EXERCISE_RUN. קישור המלאי הזה מאפשר ל-Assistant להעביר את מזהה קיצור הדרך של פרמטרים תואמים, במקום את ערך השאילתה הגולמי, לפעילות של מילוי ההזמנות.

כדי לפעול בהתאם לפרמטרים מסוימים של BII, כמו exercise.name, יש צורך במלאי מוטבע. כדי לטפל בפרמטר הזה, צריך להוסיף אל shortcuts.xml את רכיבי shortcut הבאים של המלאי:

<!-- shortcuts.xml -->

<shortcuts>
  <shortcut
    android:shortcutId="running"
    android:shortcutShortLabel="@string/activity_running">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/runningSynonyms"/>
    </capability-binding>
  </shortcut>

  <shortcut
    android:shortcutId="walking"
    android:shortcutShortLabel="@string/activity_walking">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/walkingSynonyms"/>
    </capability-binding>
  </shortcut>

  <shortcut
    android:shortcutId="cycling"
    android:shortcutShortLabel="@string/activity_cycling">
    <capability-binding android:key="actions.intent.START_EXERCISE">
      <parameter-binding
        android:key="exercise.name"
        android:value="@array/cyclingSynonyms"/>
    </capability-binding>
  </shortcut>

  <capability> ... </capability>
</shortcuts>

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

  • כל מאפיין android:key של רכיב capability-binding מתייחס לאותו BII של START_EXCERCISE שהוגדר ליכולת.
  • הרכיב parameter-binding של כל מקש קיצור לפרמטר BII exercise.name.

הוספת מילים נרדפות בתוך שורה של מלאי שטחי פרסום

המאפיינים android:value של הרכיב parameter-binding במקשי הקיצור הקודמים של המלאי מתייחסים למשאב מערך של מילים נרדפות לכל רכיב של מלאי. מילים נרדפות מאפשרות וריאציות של סוג רכיב, כמו "run" , "jog" ו-"sprint" כדי להתייחס לאותו shortcutId. מוסיפים את רשומות המילים הנרדפות הבאות למשאב array.xml של הפרויקט:

<!-- array.xml -->
<array name="runningSynonyms">
  <item>Run</item>
  <item>Jog</item>
  <item>Jogging</item>
  <item>Sprint</item>
</array>

<array name="walkingSynonyms">
  <item>Walk</item>
  <item>Hike</item>
  <item>Hiking</item>
</array>

<array name="cyclingSynonyms">
  <item>Biking</item>
  <item>Riding</item>
  <item>Pedaling</item>
</array>

מילוי Intents נכנסים של Android

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

קודם כול, מחליפים את הפונקציה Intent.handleIntent עם הקוד הבא:

//FitMainActivity.kt

private fun Intent.handleIntent() {
  when (action) {
    // When the BII is matched, Intent.Action_VIEW will be used
    Intent.ACTION_VIEW -> handleIntent(data)
    // Otherwise start the app as you would normally do.
    else -> showDefaultView()
  }
}

בשלב הבא צריך להוסיף לכיתה פונקציית handleIntent חדשה עם הקוד הבא:

//FitMainActivity.kt

/**
 * Use extras provided by the intent to handle the different BIIs
 */

private fun handleIntent(data: Uri?) {
  // path is normally used to indicate which view should be displayed
  // i.e https://fit-actions.firebaseapp.com/start?exerciseType="Running" -> path = "start"
  var actionHandled = true

  val startExercise = intent?.extras?.getString(START_EXERCISE)
  // Add stopExercise variable here

  if (startExercise != null){
    val type = FitActivity.Type.find(startExercise)
    val arguments = Bundle().apply {
      putSerializable(FitTrackingFragment.PARAM_TYPE, type)
    }
    updateView(FitTrackingFragment::class.java, arguments)
  } // Add conditional for stopExercise
  else{
   // path is not supported or invalid, start normal flow.
   showDefaultView()

   // Unknown or invalid action
   actionHandled = false
  }
  notifyActionSuccess(actionHandled)
}

בפונקציה Intent.handleIntent הקודמת, כשהערך של ACTION_VIEW מופעל, נתוני 'Intent לגבי פעולה באפליקציה' מועברים אל הפונקציה handleIntent. ניתן לגשת לפרמטרים של BII בחבילה ב-Intent מסוג START_EXERCISE דרך intent?.extras?.getString(START_EXERCISE). שאר הפונקציה מעדכנת את FitTrackingFragment ומציגה את סוג הכושר startExercise שנבחר.

בדיקת הפעולה באפליקציה

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

כדי לבדוק את הפעולה באפליקציה באמצעות הפלאגין, מבצעים את השלבים הבאים:

  1. כדי להפעיל את האפליקציה ב-Android Studio, בוחרים באפשרות הפעלה > Run App או לוחצים על הסמל Run (הפעלה) בסרגל הכלים העליון.
  2. עוברים אל כלים > פעולות באפליקציה > Google Assistant > כלי הבדיקה של פעולות באפליקציה.
  3. לוחצים על יצירת תצוגה מקדימה. אם מופיעה בקשה, קוראים את המדיניות ואת התנאים וההגבלות של 'פעולות באפליקציה' ומאשרים אותם.
  4. צריך לבחור את ה-Intent המובנה actions.intent.START_EXERCISE.
  5. בתיבה תרגיל משאירים את ערך ברירת המחדל ריצה.
  6. לוחצים על Run App Action (הפעלת פעולה באפליקציה). מוודאים שקישורי העומק של Assistant נכנסים לטיימר האימון של האפליקציה, ושהטיימר התחיל אימון מסוג ריצה.

הטמעת את הפעולות הראשונות שלך באפליקציה באמצעות ממשק BII של START_EXERCISE. מזל טוב! בשלב הבא נאפשר למשתמשים להפסיק את אימוני הריצה באפליקציה.

5. הוספת יכולת BII של הפסקת תרגיל

ממשק BII של actions.intent.STOP_EXERCISE מאפשר למשתמשים להפסיק אימון כושר באמצעות פקודות כמו "Ok Google, stop my run on ExampleApp". כדי להטמיע את ה-BII הזה באפליקציית Fitbit, מוסיפים capability שני ל-shortcuts.xml:

<!-- shortcuts.xml -->

<capability android:name="actions.intent.STOP_EXERCISE">
  <intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="PUT_YOUR_APPLICATION_ID_HERE"
    android:targetClass="com.devrel.android.fitactions.FitMainActivity">
    <!-- Eg. name = "Running" -->
    <parameter
        android:name="exercise.name"
        android:key="stopExercise"/>
  </intent>
</capability>

מחליפים את PUT_YOUR_APPLICATION_ID_HERE ב-applicationId הייחודי שלכם.

טיפול בפרמטרים של BII עם מלאי מוטבע

ה-BII הזה תומך באותו פרמטר exercise.name כמו ה-BII של START_EXERCISE, וכך המשתמשים יכולים לציין איזה אימון פעיל הם רוצים לסיים. כדי להפעיל את האפשרות הזו, צריך להוסיף ל-shortcuts.xml קבוצה שנייה של רכיבי קיצור דרך למלאי:

<!-- shortcuts.xml -->

<shortcut
  android:shortcutId="running"
  android:shortcutShortLabel="@string/activity_running">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/runningSynonyms"/>
  </capability-binding>
</shortcut>

<shortcut
  android:shortcutId="walking"
  android:shortcutShortLabel="@string/activity_walking">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/walkingSynonyms"/>
  </capability-binding>
</shortcut>

<shortcut
  android:shortcutId="cycling"
  android:shortcutShortLabel="@string/activity_cycling">
  <capability-binding android:key="actions.intent.STOP_EXERCISE">
      <parameter-binding
          android:key="exercise.name"
          android:value="@array/cyclingSynonyms"/>
  </capability-binding>
</shortcut>

מילוי Intents נכנסים של Android

כדי שהאפליקציה תוכל לטפל בהפניות Intent של Android STOP_EXERCISE נכנסות על ידי עדכון המחלקה FitMainActivity. קודם כול, מוסיפים משתנה לפונקציה handleIntent כדי לשמור את נתוני Intent של STOP_EXERCISE:

// FitMainActivity.kt

private fun handleIntent(data: Uri?) {
  val stopExercise = intent?.extras?.getString(STOP_EXERCISE)
  //...
}

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

// FitMainActivity.kt

private fun handleIntent(data: Uri?) {
  //...
  if (startExercise != null){
    val type = FitActivity.Type.find(startExercise)
    val arguments = Bundle().apply {
      putSerializable(FitTrackingFragment.PARAM_TYPE, type)
    }
    updateView(FitTrackingFragment::class.java, arguments)
  } // Add conditional for stopExercise
  <strong>
  } else if(stopExercise != null){
    // Stop the tracking service if any and return to home screen.
    stopService(Intent(this, FitTrackingService::class.java))
    updateView(FitStatsFragment::class.java)
  }
  </strong>
  //...
}

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

בדיקת הפעולה באפליקציה

כדי לבדוק את הפעולה באפליקציה באמצעות הפלאגין של Google Assistant, פועלים לפי השלבים הבאים:

  1. כדי להפעיל את האפליקציה ב-Android Studio, בוחרים באפשרות הפעלה > Run App או לוחצים על הסמל Run (הפעלה) בסרגל הכלים העליון.
  2. באפליקציה, צריך להתחיל 'ריצה' חדשה תרגיל.
  3. פותחים את הפלאגין ב-Android Studio: עוברים אל כלים > פעולות באפליקציה > Google Assistant > כלי הבדיקה של פעולות באפליקציה.
  4. לוחצים על יצירת תצוגה מקדימה.
  5. צריך לבחור את ה-Intent המובנה actions.intent.STOP_EXERCISE.
  6. בתיבה תרגיל משאירים את ערך ברירת המחדל ריצה.
  7. לוחצים על Run App Action (הפעלת פעולה באפליקציה). מוודאים ש-Assistant מפסיקה את האימון ומחזירה אתכם למסך הבית.

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

מזל טוב!

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

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

המאמרים הבאים

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

בהמשך מופיעות כמה הצעות ללמידה נוספת בנוגע להרחבת האפליקציה הזו באמצעות 'פעולות באפליקציה':

כדי להמשיך בתהליך שלך ב-Actions on Google, כדאי לעיין במקורות המידע הבאים:

אפשר לעקוב אחרינו ב- @ActionsOnGoogle בטוויטר כדי להתעדכן בהכרזות האחרונות שלנו, ולשלוח ציוץ אל #appactions כדי לשתף את מה שפיתחתם!

סקר משוב

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