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


מה תלמדו
- איך יוצרים פרויקט ב-קונסולה ל-Actions
- איך משתמשים בכלי gactions כדי לדחוף ולמשוך את פרויקט הפעולה בין קונסולה ל-Actions לבין מערכת הקבצים המקומית
- איך לשלוח הנחיה למשתמש אחרי שהוא מפעיל את הפעולה שלכם
- איך לעבד קלט של משתמש ולהחזיר תשובה
- איך בודקים את הפעולה בסימולטור הפעולות
- איך מטמיעים מילוי בקשות באמצעות עורך Cloud Functions
הדרישות
הכלים הבאים צריכים להיות בסביבה שלכם:
- סביבת פיתוח משולבת (IDE) או כלי לעריכת טקסט לבחירתכם
- טרמינל להרצת פקודות מעטפת ל-Node.js ול-npm
- דפדפן אינטרנט, כמו Google Chrome
2. הגדרה
בקטעים הבאים מוסבר איך להגדיר את סביבת הפיתוח וליצור פרויקט Actions.
בדיקת הגדרות ההרשאות ב-Google
כדי לבדוק את הפעולה שאתם יוצרים ב-codelab הזה, אתם צריכים להפעיל את ההרשאות הנדרשות כדי שהסימולטור יוכל לגשת לפעולה שלכם.
כדי להפעיל את ההרשאות:
- עוברים אל בקרת הפעילות בחשבון.
- אם עדיין לא עשיתם זאת, היכנסו לחשבון Google שלכם.
- מפעילים את ההרשאות הבאות:
- פעילות באינטרנט ובאפליקציות
- בקטע פעילות באינטרנט ובאפליקציות, מסמנים את התיבה שמירה של ההיסטוריה והפעילות של Chrome מאתרים, מאפליקציות וממכשירים שמשתמשים בשירותי Google.
יצירת פרויקט Actions
הפרויקט ב-Actions הוא מאגר לפעולה שלכם.
כדי ליצור את פרויקט Actions בשביל ה-Codelab הזה, פועלים לפי השלבים הבאים:
- פותחים את קונסולה ל-Actions.
- לוחצים על פרויקט חדש.
- מזינים את Project name, למשל
actions-codelab. (השם מיועד לשימוש פנימי. בהמשך תוכלו להגדיר שם חיצוני לפרויקט).

- לוחצים על Create project.
- במסך What kind of Action do you want to build?, בוחרים בכרטיס Custom.
- לוחצים על הבא.
- במסך איך ברצונך ליצור את הפרויקט?, בוחרים בכרטיס פרויקט ריק.
- לוחצים על התחלת הפיתוח.
שומרים את מזהה הפרויקט של הפעולה.
מזהה הפרויקט הוא מזהה ייחודי של הפעולה. תצטרכו את מזהה הפרויקט לכמה שלבים ב-Codelab הזה.
כדי לאחזר את מזהה הפרויקט, פועלים לפי השלבים הבאים:
- ב-קונסולה ל-Actions, לוחצים על סמל האפשרויות הנוספות (3 נקודות אנכיות).
- לוחצים על הגדרות הפרויקט.

- מעתיקים את מזהה הפרויקט**.**
שיוך חשבון לחיוב
אם אין לכם חשבון לחיוב, אתם צריכים ליצור חשבון לחיוב ולשייך אותו לפרויקט שלכם ב-Google Cloud כדי לפרוס את המילוי שלכם מאוחר יותר באמצעות Cloud Functions.
כדי לשייך חשבון לחיוב לפרויקט:
- נכנסים לדף החיוב ב-Google Cloud Platform.
- לוחצים על הוספת חשבון חיוב או על יצירת חשבון.
- מזינים את פרטי התשלום.
- לוחצים על להתחלת תקופת הניסיון בחינם או על שליחה והפעלת החיוב.
- נכנסים לדף החיוב ב-Google Cloud Platform.
- לוחצים על הכרטיסייה My Projects.
- לוחצים על שלוש הנקודות בקטע Actions לצד הפרויקט של Actions ב-codelab.
- לוחצים על שינוי החיוב.
- בתפריט הנפתח, בוחרים את החשבון לחיוב שהגדרתם.
- לוחצים על Set account.
כדי להימנע מחיובים, בצעו את השלבים בקטע "ניקוי הפרויקט" בסוף ה-Codelab הזה.
התקנת ממשק שורת הפקודה (CLI) של gactions
ב-Codelab הזה, תשתמשו בכלי ממשק שורת הפקודה (CLI) של gactions כדי לסנכרן את פרויקט Actions בין קונסולה ל-Actions לבין מערכת הקבצים המקומית.
כדי להתקין את ה-CLI של gactions, פועלים לפי ההוראות במאמר התקנת כלי שורת הפקודה של gactions.
הורדת פרויקט Actions
כדי להתחיל לפתח את הפעולה, צריך להוריד את פרויקט הפעולות מ-קונסולה ל-Actions.
כדי להוריד את פרויקט Actions:
- כדי ליצור ספרייה חדשה ולעבור אליה, מריצים את הפקודות הבאות:
mkdir myproject cd myproject
- כדי להעתיק את ההגדרות של פרויקט Actions למערכת הקבצים המקומית, מריצים את הפקודה הבאה:
gactions pull --project-id <projectID>
הסבר על מבנה הקובץ
פרויקט Actions שמורידים מקונסולה ל-Actions מיוצג במבנה קובץ YAML. בתמונה הבאה מוצג ייצוג כללי של מבנה הקובץ:

מבנה הקובץ כולל את הרכיבים הבאים:
-
actions/: מייצג את הפרויקט שלכם ב-Actions. המערכת מפעילה אתactions.yamlכשהפעולה מופעלת, ואז מופעל הקובץcustom/global/actions.intent.MAIN.yaml. -
custom/: הספרייה שבה תעבדו כדי לשנות את הפעולה. -
global/: הספרייה הזו מכילה כוונות מערכת שהפלטפורמה מוסיפה לפרויקט באופן אוטומטי. בהמשך ה-Codelab הזה נסביר בהרחבה על כוונות המערכת. -
manifest.yaml: קובץ שמכיל מידע שניתן להעברה, או מידע שלא ספציפי לפרויקט מסוים ושאפשר להעביר בין פרויקטים. -
settings/: מייצג את ההגדרות של פרויקט Actions, כמו השם המוצג, הלוקאל שמוגדר כברירת מחדל והקטגוריה.
3. התחלת שיחה
המשתמשים מתחילים את השיחה עם הפעולה באמצעות הפעלה. לדוגמה, אם יש לכם פעולה בשם MovieTime, המשתמשים יכולים להפעיל אותה באמצעות ביטוי כמו "Ok Google, talk to MovieTime", כאשר MovieTime הוא השם המוצג. כדי לפרוס את הפעולה בסביבת הייצור, צריך להגדיר לה שם לתצוגה. עם זאת, כדי לבדוק את הפעולה, לא צריך להגדיר לה שם לתצוגה. במקום זאת, אתם יכולים להשתמש בביטוי "Talk to my test app" בסימולטור כדי להפעיל את הפעולה. בהמשך הקטע הזה נסביר על הסימולטור.
צריך לערוך את ההפעלה הראשית כדי להגדיר מה קורה אחרי שמשתמש מפעיל את הפעולה.
כברירת מחדל, הפעולה מספקת הנחיה כללית כשההפעלה מופעלת ("Start building your Action by defining main invocation.").
בקטע הבא, תתאימו אישית את ההנחיה להפעלה הראשית בקובץ custom/global/actions.intent.MAIN.yaml.
הגדרת ההפעלה הראשית
אפשר לערוך את הנחיית ההפעלה הראשית בקובץ actions.intent.MAIN.yaml.
כדי לשנות את ההנחיה שהפעולה שולחת למשתמש כשהוא מפעיל אותה, פועלים לפי השלבים הבאים:
- פותחים את
custom/global/actions.intent.MAIN.yamlבכלי לעריכת טקסט. - מחליפים את הטקסט בשדה
speech(Start building your action...) בהודעת הפתיחה הבאה:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: A wondrous greeting, adventurer! Welcome to the mythical land of
Gryffinberg! Based on your clothes, you are not from around these lands.
It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
- שומרים את הקובץ.
בדיקת ההפעלה הראשית בסימולטור
ב-קונסולה ל-Actions יש כלי אינטרנט לבדיקת הפעולה, שנקרא סימולטור. הממשק מדמה מכשירי חומרה ואת ההגדרות שלהם, כך שאתם יכולים לשוחח עם הפעולה כאילו היא פועלת במסך חכם, בטלפון, ברמקול או ב-KaiOS.
כשמפעילים את הפעולה, היא אמורה להגיב עם ההנחיה המותאמת אישית שהוספתם ("A wondrous greeting, adventurer!...").
אתם יכולים להשתמש בפקודה gactions deploy preview כדי לבדוק את הפעולה במסוף בלי לעדכן את הגרסה של פרויקט הפעולות. כשמריצים את הפקודה הזו, השינויים שמבצעים במערכת הקבצים המקומית לא מופצים לגרסאות הפרוסות של פרויקט Actions, אבל אפשר לבדוק אותם בגרסת טרום-השקה (Preview).
כדי לבדוק את ההפעלה הראשית של הפעולה בסימולטור, פועלים לפי השלבים הבאים:
- כדי לפרוס את הפרויקט ב-קונסולה ל-Actions לצורך בדיקה, מריצים את הפקודה הבאה בטרמינל:
gactions deploy preview
הפלט אמור להיראות כך:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- כדי להפעיל את הפעולה בסימולטור, מקלידים
Talk to my test appבשדה Input ולוחצים עלEnter.

כשמפעילים את הפעולה הראשית של הפעולה, Assistant מגיבה בהודעת הפתיחה המותאמת אישית. בשלב הזה, השיחה מסתיימת אחרי ש-Assistant מגיבה בברכה. בקטע הבא, תשנו את הפעולה כדי שהשיחה תימשך.
צפייה ביומני אירועים
כשנמצאים בכרטיסייה Test ב-קונסולה ל-Actions, החלונית מציגה את יומני האירועים, שבהם מופיעה היסטוריית השיחות כיומני אירועים. בכל יומן אירועים מוצגים האירועים שמתרחשים במהלך אותו שלב בשיחה.
לפעולה יש כרגע יומן אירועים אחד, שבו מוצגים גם הקלט של המשתמש ("Talk to my test app") וגם התגובה של הפעולה. בצילום המסך הבא מוצג יומן האירועים של הפעולה:

אם לוחצים על החץ למטה ליד Talk to my test app ביומן האירועים, אפשר לראות את האירועים שהתרחשו באותו שלב בשיחה, בסדר כרונולוגי:
-
userInput: תואם לקלט של המשתמש ("Talk to my test app") -
interactionMatch: תואם לתגובת ההפעלה הראשית של הפעולה, שהופעלה על ידי הקלט של המשתמש. אם תרחיבו את השורה הזו בלחיצה על החץ, תוכלו לראות את ההנחיה שהוספתם להפעלה הראשית (A wondrous greeting, adventurer!...) -
endConversation: תואם למעבר שנבחר ב-intentMain invocation, שכרגע מסיים את השיחה. בקטע הבא של ה-Codelab הזה נרחיב על מעברים.
יומני האירועים מאפשרים לראות איך הפעולה פועלת, והם כלים שימושיים לניפוי באגים בפעולה אם נתקלים בבעיות. כדי לראות את פרטי האירוע, לוחצים על החץ לצד שם האירוע, כמו שמוצג בצילום המסך הבא:

4. יצירת שיחה של הפעולה
עכשיו, אחרי שהגדרתם מה קורה אחרי שמשתמש מפעיל את הפעולה, אתם יכולים לבנות את שאר השיחה של הפעולה. לפני שתמשיכו ב-Codelab הזה, כדאי להכיר את המונחים הבאים כדי להבין איך פועלת השיחה של הפעולה:
ל-Action יכולה להיות סצנה אחת או יותר, וצריך להפעיל כל סצנה כדי שהיא תפעל. לפעולה שאתם יוצרים ב-Codelab הזה יש רק סצנה אחת בשם Start. הדרך הנפוצה ביותר להפעיל סצנה היא להגדיר את הפעולה כך שכאשר הקלט של המשתמש תואם לכוונה בתוך סצנה, הכוונה הזו מפעילה את המעבר לסצנה אחרת ומפעילה אותה.
לדוגמה, נניח שיש פעולה היפותטית שמספקת למשתמש עובדות על בעלי חיים. כשהמשתמש מפעיל את הפעולה הזו, מתבצעת התאמה ל-intent Main invocation והוא מפעיל את המעבר לסצנה בשם Facts.. המעבר הזה מפעיל את הסצנה Facts, ששולחת למשתמש את ההנחיה הבאה: Would you like to hear a fact about cats or dogs?. בסצנה Facts יש intent בהתאמה אישית בשם Cat, שמכיל ביטויי אימון שהמשתמש עשוי לומר כדי לשמוע עובדה על חתולים, כמו "אני רוצה לשמוע עובדה על חתולים" או "חתול". כשהמשתמש מבקש לשמוע עובדה על חתולים, מתבצעת התאמה ל-intent Cat, ומופעל מעבר לסצנה שנקראת Cat fact.. הסצנה Cat fact מופעלת ושולחת למשתמש הנחיה שכוללת עובדה על חתולים.

איור 1. התהליך של תור טיפוסי בשיחה בפעולה שנוצרה באמצעות Actions SDK.
הסצנות, ה-intent והמעברים יוצרים יחד את הלוגיקה של השיחה ומגדירים את הנתיבים השונים שהמשתמש יכול לעבור בהם במהלך השיחה עם הפעולה. בקטע הבא, תיצרו סצנה ותגדירו איך היא תופעל אחרי שמשתמש יפעיל את הפעולה שלכם.
מעבר מההפעלה הראשית לסצנה
בקטע הזה, יוצרים סצנה חדשה בשם Start, ששולחת הנחיה למשתמש ושואלת אם הוא רוצה שיגלו לו את העתיד. אתם גם מוסיפים מעבר מההפעלה הראשית לסצנה החדשה של Start.
כדי ליצור את הסצנה הזו ולהוסיף לה מעבר, פועלים לפי השלבים הבאים:
- פותחים את
custom/global/actions.intent.MAIN.yamlבכלי לעריכת טקסט. - מחליפים את הטקסט בשדה
transitionToScene(actions.scene.END_CONVERSATION) בטקסט הבא:transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
הפקודה הזו אומרת לפעולה לעבור מההפעלה הראשית לסצנה Start.
- שומרים את הקובץ.
- בטרמינל, יוצרים ספריית
scenesחדשה בספרייהcustom:
mkdir custom/scenes
- יוצרים קובץ חדש בשם
Start.yamlבספרייהscenes, שמייצג את הסצנהstartבפעולה:
touch custom/scenes/Start.yaml
- פותחים את
Start.yamlבכלי לעריכת טקסט. - מדביקים את הקוד הבא בקובץ
Start.yaml:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
בקוד הקובץ Start.yaml, יש שדה שנקרא onEnter, שהוא השלב הראשון שפועל במחזור החיים של סצנה.
במקרה הזה, ההנחיה (Before you continue on your quest...) מתווספת לתור ההנחיות כשהמשתמש נכנס לסצנה Start בפעם הראשונה.
הוספת הצעות קשורות
הצעות קשורות מציעות למשתמש הצעות שניתן ללחוץ עליהן, והפעולה מעבדת אותן כקלט של המשתמש. בקטע הזה, מוסיפים הצעות קשורות של Yes ו-No שמופיעות מתחת להנחיה שהגדרתם (Before you continue on your quest, would you like your fortune told?) כדי לתמוך במשתמשים במכשירים עם מסכים.
כדי להוסיף הצעות קשורות להנחיה של הסצנה Start, פועלים לפי השלבים הבאים:
- מעדכנים את הקוד ב-
Start.yamlכך שיהיה זהה לקטע הקוד הבא, שכולל את הקוד להגדרת הצעות קשורות:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- שומרים את הקובץ.
בדיקת הפעולה בסימולטור
בשלב הזה, הפעולה צריכה לעבור מההפעלה הראשית לסצנה Start ולשאול את המשתמש אם הוא רוצה שיגלו לו את העתיד. הצעות קשורות אמורות להופיע גם בתצוגה המדומה.
כדי לבדוק את הפעולה בסימולטור, פועלים לפי השלבים הבאים:
- בטרמינל, מריצים את הפקודה הבאה:
gactions deploy preview
הפלט אמור להיראות כך:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- לוחצים על בדיקה כדי לעבור לסימולטור.
- מקלידים
Talk to my test appבשדה Input ולוחצים עלEnter. הפעולה אמורה להגיב עם ההנחיהMain invocationוההנחיה של הסצנה שנוספהStart, "Before you continue on your quest, would you like your fortune told?", עם הצגת הצעות קשורות.
בצילום המסך הבא מוצגת האינטראקציה הזו:

- לוחצים על הצ'יפ של ההצעות הקשורות כן או לא כדי להגיב להנחיה. (אפשר גם לומר "כן" או "לא" או להזין
YesאוNoבשדה קלט.)
כשאתם מגיבים להנחיה, הפעולה מגיבה בהודעה שמציינת שהיא לא יכולה להבין את הקלט שלכם: "מצטערים, לא הבנתי. רוצה לנסות שוב?" מכיוון שעדיין לא הגדרתם את הפעולה כך שתבין קלט של "כן" או "לא" ותגיב לו, הפעולה מתאימה את הקלט ל-Intent מסוג NO_MATCH.
כברירת מחדל, כוונת המערכת NO_MATCH מספקת תשובות כלליות, אבל אפשר להתאים אישית את התשובות האלה כדי לציין למשתמש שלא הבנת את הקלט שלו. Assistant מסיים את השיחה של המשתמש עם הפעולה שלכם אחרי שהוא לא מצליח להתאים את הקלט של המשתמש שלוש פעמים.
הוספת כוונות מסוג yes ו-no
עכשיו, כשהמשתמשים יכולים להגיב לשאלה שהפעולה מציגה, אתם יכולים להגדיר את הפעולה כך שתבין את התגובות של המשתמשים ("כן" או "לא"). בקטעים הבאים, תיצרו כוונות בהתאמה אישית שיופעלו כשהמשתמש יגיד "Yes" או "No", ותוסיפו את הכוונות האלה לסצנה Start.
יצירת כוונה מסוג yes
כדי ליצור את ה-intent yes:
- בטרמינל, יוצרים ספרייה חדשה בשם
intentsבספרייהcustom:
mkdir custom/intents
- יוצרים קובץ חדש בשם
yes.yamlבספרייהintents:
touch custom/intents/yes.yaml
- פותחים את
yes.yamlבכלי לעריכת טקסט. - מדביקים את קטע הקוד הבא שמכיל ביטויי אימון ב-
yes.yaml:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- שומרים את הקובץ.
הוספת כוונה אחת (yes) לסצנה אחת (Start)
עכשיו הפעולה יכולה להבין מתי משתמש מביע כוונה של "כן". אפשר להוסיף את הכוונה המותאמת אישית yes לסצנה Start, כי המשתמש מגיב להנחיה Start ("לפני שתמשיך במסע, תרצה שאגלה לך את העתיד?").
כדי להוסיף את הכוונה המותאמת אישית הזו לסצנה Start, פועלים לפי השלבים הבאים:
- פותחים את
custom/scenes/Start.yamlבכלי לעריכת טקסט. - מוסיפים את ה-handler של
intentEventsו-yesלסוף הקובץStart.yaml:
Start.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
intent: "yes"
transitionToScene: actions.scene.END_CONVERSATION
כשהכוונה yes מזוהה, ההנחיה "העתיד שלך תלוי בפריט שבחרת להשתמש בו למשימה..." מתווספת לתור ההנחיות. לאחר מכן, הסצנה Start עוברת לסצנת המערכת actions.scene.END_CONVERSATION, שמעבירה את ההנחיות בתור ההנחיות ומסיימת את השיחה.
בדיקת הכוונה yes בסימולטור
בשלב הזה, הפעולה מבינה מתי המשתמש רוצה לשמוע את עתידו ומחזירה את התגובה המתאימה.
כדי לבדוק את ה-Intent הזה בסימולטור, פועלים לפי השלבים הבאים:
- בטרמינל, מריצים את הפקודה הבאה:
gactions deploy preview
הפלט אמור להיראות כך:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- לוחצים על בדיקה כדי לעבור לסימולטור.
- כדי לבדוק את הפעולה בסימולטור, מקלידים
Talk to my test appבשדה Input ולוחצים עלEnter. - מקלידים
Yesבשדה Input ולוחצים עלEnter. אפשר גם ללחוץ על הצ'יפ של ההצעה כן.

ה-Action מגיב למשתמש ואומר לו שהעתיד שלו תלוי בעזר שהוא בוחר. לאחר מכן, הפעולה מסיימת את הסשן כי הגדרתם את המעבר End conversation ל-Intent yes.
יצירת כוונה מסוג no
עכשיו אפשר ליצור את ה-Intent no כדי שהפעולה תוכל להבין את המשתמש ולהגיב לו כשהוא לא רוצה לשמוע את עתידו.
כדי ליצור את ה-Intent הזה, פועלים לפי השלבים הבאים:
- בטרמינל, יוצרים קובץ חדש בשם
no.yamlבספרייהintents:
touch custom/intents/no.yaml
- פותחים את
no.yamlבכלי לעריכת טקסט. - מדביקים את ביטויי האימון הבאים בקובץ
no.yaml:
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- שומרים את הקובץ.
הוספת כוונה אחת (no) לסצנה אחת (Start)
עכשיו הפעולה יכולה להבין כשמשתמש אומר "לא" או משהו דומה ל"לא", כמו "אין מצב". צריך להוסיף את הכוונה המותאמת אישית no לסצנה Start כי המשתמש מגיב להנחיה Start ("לפני שתמשיך במסע, תרצה שאגלה לך את העתיד?").
כדי להוסיף את הכוונה הזו לסצנה Start, פועלים לפי השלבים הבאים:
- פותחים את
custom/scenes/Start.yamlבכלי לעריכת טקסט. - מוסיפים את ה-handler הבא של
noמתחת ל-handler שלyesב-Start.yaml:
Start.yaml
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- שומרים את הקובץ.
בדיקת הכוונה no בסימולטור
בשלב הזה, הפעולה שלכם מבינה מתי המשתמש לא רוצה לשמוע את עתידו ומחזירה את התגובה המתאימה.
כדי לבדוק את ה-Intent הזה בסימולטור, פועלים לפי השלבים הבאים:
- בטרמינל, מריצים את הפקודה הבאה:
gactions deploy preview
הפלט אמור להיראות כך:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- לוחצים על בדיקה כדי לעבור לסימולטור.
- מקלידים
Talk to my test appבשדה Input ולוחצים עלEnter. - מקלידים
Noבשדה Input ולוחצים עלEnter. אפשר גם ללחוץ על הצ'יפ של ההצעהNo.

במקום לתת למשתמש את עתידו, הפעולה מאחלת לו בהצלחה במסע. לאחר מכן, הפעולה מסיימת את הסשן כי הגדרתם את המעבר End conversation ל-Intent no.
5. הטמעת מילוי בקשות
נכון לעכשיו, התשובות של הפעולה הן סטטיות. כשמופעלת סצנה שמכילה הנחיה, הפעולה שולחת את אותה הנחיה בכל פעם. בקטע הזה תטמיעו מילוי בקשה שמכיל את הלוגיקה ליצירת תשובה דינמית לשיחה.
ה-fulfillment מזהה אם המשתמש הוא משתמש חוזר או משתמש חדש, ומשנה את הודעת הפתיחה של הפעולה למשתמשים חוזרים. הודעת הפתיחה מתקצרת למשתמשים חוזרים ומציינת את החזרה של המשתמש: "ברוך שובך, הרפתקן! ברוכים השבים לארץ המיתולוגית של גריפינברג!"
ב-Codelab הזה, תשתמשו בעורך של Cloud Functions כדי לערוך ולפרוס את קוד המילוי.
הפעולה יכולה להפעיל תגובות לפעולה מאתר אחר (webhooks) שמודיעות למילוי הבקשה על אירוע שמתרחש במהלך הפעלה או בחלקים ספציפיים של ביצוע סצנה. כש-webhook מופעל, הפעולה שולחת בקשה עם מטען ייעודי (payload) בפורמט JSON למילוי הבקשה, יחד עם שם ה-handler שבו צריך להשתמש כדי לעבד את האירוע. ה-handler הזה מבצע לוגיקה מסוימת ומחזיר תגובת JSON תואמת.
פיתוח של מילוי הבקשה
בקטע הזה, אתם משנים את מילוי הבקשה כדי ליצור הנחיות שונות למשתמשים חוזרים ולמשתמשים חדשים כשהם מפעילים את הפעולה.
כדי להוסיף את הלוגיקה הזו למילוי הבקשה, פועלים לפי השלבים הבאים:
- בטרמינל, מוודאים שאתם נמצאים בתיקיית השורש של הפרויקט ויוצרים תיקיית
webhooksחדשה:
mkdir webhooks
- יוצרים קובץ חדש בשם
ActionsOnGoogleFulfillment.yamlבספרייהwebhooks:
touch webhooks/ActionsOnGoogleFulfillment.yaml
- פותחים את
ActionsOnGoogleFulfillment.yamlבכלי לעריכת טקסט. - מוסיפים את ה-handler של
greetingואת התוכן שלinlineCloudFunctionלקובץActionsOnGoogleFulfillment.yaml:
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
הקובץ ActionsOnGoogleFulfillment.yaml מגדיר את ה-handlers של ה-webhook (כמו ה-handler של greeting) ומורה לפעולה להשתמש ב-Cloud Functions כנקודת הקצה של ה-webhook.
- יוצרים ספריית
ActionsOnGoogleFulfillmentחדשה בספרייתwebhooks:
mkdir webhooks/ActionsOnGoogleFulfillment
- יוצרים קובץ חדש בשם
index.jsבספרייהActionsOnGoogleFulfillment:
touch webhooks/ActionsOnGoogleFulfillment/index.js
- פותחים את
index.jsבכלי לעריכת טקסט. - מוסיפים את הקוד הבא ל-
index.js:
index.js
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation({debug: true});
app.handle(>39;greeting', conv = {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
הקוד הזה מגדיר את ה-handler של greeting, ששולח את הברכה המתאימה אל
המשתמש.
- שומרים את הקובץ.
- יוצרים קובץ חדש בשם
package.jsonבספרייהActionsOnGoogleFulfillment:
touch webhooks/ActionsOnGoogleFulfillment/package.json
הקובץ package.json מציין את יחסי התלות ומטא-נתונים אחרים של ה-webhook.
- פותחים את
package.jsonבכלי לעריכת טקסט. - מעתיקים את הקוד ממאגר ה-GitHub הזה ומדביקים אותו בקובץ
package.json. - שומרים את הקובץ.
הבנת הקוד
מילוי הבקשה, שמשתמש בספריית Actions on Google Fulfillment ל-Node.js, מגיב לבקשות HTTP מ-Google Assistant.
בקטע הקוד הקודם, אתם מגדירים את ה-handler של greeting, שבודק אם המשתמש ביקר בעבר ב-Action עם המאפיין lastSeenTime. אם המאפיין lastSeenTime לא מוגדר, המשתמש חדש ומקבל את הודעת הפתיחה שמיועדת למשתמשים חדשים. אחרת, ההודעה תציין שהמשתמש חזר ותיצור פתיח שונה.
עדכון ההפעלה הראשית כדי להפעיל webhook
אחרי שהגדרתם את הפונקציה greeting, אתם יכולים להגדיר את הגורם המטפל באירועים greeting ב-Intent הראשי להפעלה, כדי שהפעולה תדע לקרוא לפונקציה הזו כשהמשתמש מפעיל את הפעולה.
כדי להגדיר את הפעולה כך שתפעיל את ה-handler החדש של greeting, פועלים לפי השלבים הבאים:
- פותחים את
custom/global/actions.intent.MAIN.yamlבכלי לעריכת טקסט. - מחליפים את הקוד ב-
actions.intent.MAIN.yamlבקוד הבא:
actions.intent.MAIN.yaml
handler:
webhookHandler: greeting
transitionToScene: Start
- שומרים את הקובץ.
עכשיו, כשיש התאמה לכוונת ההפעלה הראשית, מתבצעת קריאה ל-webhook handler של greeting.
בדיקת ההפעלה הראשית המעודכנת בסימולטור
כדי לבדוק את הפעולה בסימולטור, פועלים לפי השלבים הבאים:
- בטרמינל, מריצים את הפקודה הבאה:
gactions deploy preview
הפלט אמור להיראות כך:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- כדי לבדוק את הפעולה בסימולטור, מקלידים
Talk to my test appבשדה Input ולוחצים עלEnter.
מכיוון שכבר בדקתם את הפעולה שלכם ב-Codelab הזה, אתם לא משתמשים חדשים, ולכן אתם מקבלים את הודעת הפתיחה המקוצרת הבאה: "A wondrous greeting, adventurer! ברוכים השבים לארץ המיתולוגית של גריפינברג!…"
6. המחשה חזותית של פעולה באמצעות Actions Builder
ל-Actions SDK יש יכולת פעולה הדדית עם סביבת פיתוח משולבת (IDE) מבוססת-אינטרנט שנקראת Actions Builder, שמשולבת בקונסולה ל-Actions. אתם יכולים להעביר את מערכת הקבצים המקומית לטיוטה של הפעולה במסוף באמצעות הפקודה gactions push. בניגוד ל-gactions deploy preview, שמאפשר רק לבדוק את הפעולה בסימולטור, gactions push מעביר את כל התוכן מהקבצים המקומיים אל Actions Builder.
קונסולה ל-Actions מספקת ייצוג חזותי של הגדרת הפעולה. הצגת הפעולה בצורה חזותית יכולה להיות שימושית במהלך הפיתוח, והיא לא משפיעה על גרסת הפעולה שמוצגת לבדיקה.
כדי להעביר את פרויקט הפעולות ולראות אותו ב-קונסולה ל-Actions, פועלים לפי השלבים הבאים:
- בטרמינל, מריצים את הפקודה הבאה כדי להעביר את הפרויקט ל-קונסולה ל-Actions:
gactions push
הפלט אמור להיראות כך:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- מעתיקים את כתובת ה-URL שמופיעה ומדביקים אותה בדפדפן.
- בקונסולה ל-Actions, לוחצים על Develop בסרגל הניווט העליון.
- לוחצים על החץ לתפריט הנפתח לצד סצנות ואז על התחלה. אמור להופיע ייצוג חזותי של הסצנה
Startשל הפעולה, כמו שמוצג בצילום המסך הבא:

פינוי מקום בפרויקט [מומלץ]
כדי להימנע מחיובים אפשריים, מומלץ להסיר פרויקטים שאתם לא מתכוונים להשתמש בהם. כדי למחוק את הפרויקטים שיצרתם ב-Codelab הזה:
- כדי למחוק את הפרויקט ב-Cloud ואת המשאבים, מבצעים את השלבים שמפורטים בקטע השבתת פרויקטים (מחיקה).
- אופציונלי: כדי להסיר מיד את הפרויקט מ-קונסולה ל-Actions, מבצעים את השלבים שמפורטים בקטע מחיקת פרויקט. אם לא תבצעו את השלב הזה, הפרויקט יוסר באופן אוטומטי אחרי כ-30 ימים.
7. מעולה!
אתם מכירים את היסודות של פיתוח פעולות ל-Google Assistant באמצעות Actions SDK.
מה כיסיתם
- איך מגדירים פרויקט Actions בקונסולה ל-Actions
- איך משתמשים ב-Actions SDK כדי לפתח פרויקט Actions במערכת הקבצים המקומית
- איך מוסיפים הנחיה להפעלה הראשית כדי שהמשתמשים יוכלו להתחיל שיחה עם הפעולה שלכם
- איך ליצור ממשק שיחה עם סצנות, כוונות, מעברים, צ'יפים של הצעות ומילוי בקשות
- איך בודקים את הפעולה באמצעות סימולטור הפעולות
מידע נוסף
במקורות המידע הבאים מוסבר איך לפתח פעולות ל-Google Assistant:
- אתר התיעוד הרשמי לפיתוח פעולות ל-Google Assistant
- דף Actions on Google ב-GitHub לקוד לדוגמה וספריות
- הקהילה הרשמית של Reddit למפתחים שעובדים עם Assistant
כדי לקבל את ההודעות האחרונות, עקבו אחרי @ActionsOnGoogle ב-X (לשעבר Twitter). אתם יכולים גם לשתף את מה שאתם מפתחים בציוץ עם ההאשטאג #AoGDevs.
סקר משוב
לפני שנסיים, נשמח אם תמלאו סקר קצר על חוויית השימוש שלכם.