1. סקירה כללית
פלטפורמת הפיתוח של Google Assistant מאפשרת ליצור תוכנה להרחבת הפונקציונליות של Google Assistant, עוזרת אישית וירטואלית, ביותר ממיליארד מכשירים, כולל רמקולים חכמים, טלפונים, מכוניות, טלוויזיות, אוזניות ועוד. המשתמשים יכולים לנהל שיחה עם Assistant כדי לבצע פעולות, כמו לקנות מצרכים או להזמין נסיעה. מפתחים יכולים להשתמש בפלטפורמת הפיתוח של Assistant כדי ליצור ולנהל בקלות חוויות שיחה נעימות ויעילות בין משתמשים לבין שירותי מימוש משלהם של צד שלישי.
ב-codelab הזה נסביר מושגים ברמה בינונית לפיתוח באמצעות Google Assistant, והוא מבוסס על הפעולה שנוצרה ב-codelab ברמה 1. מומלץ מאוד להשלים את ה-codelab לרמה 1 לפני שמתחילים את ה-codelab הזה.
הפעולה שתיצרו בשיעור הזה תגיד למשתמשים מה צופן להם העתיד במסע שלהם בארץ המיתית גריפינברג, על סמך העזרה שהם יבחרו.
מה תפַתחו
ב-codelab הזה תבנו פעולה מתקדמת לניהול שיחות עם הפונקציות הבאות:
- איסוף נתונים מהמשתמש, ובהתאם לערך, שינוי ההנחיות לשיחה
- מגיב בשאלות המשך כדי לקדם את השיחה
- יוצר לולאת משחק כדי שמשתמש יוכל לקיים אינטראקציה עם הפעולה שוב אחרי שהוא מקבל ניחוש עתידות
לפני שמתחילים לבנות, אפשר לקיים אינטראקציה עם הפעולה הפעילה במכשיר עם Google Assistant על ידי אמירת "Ok Google, talk to Fate and Fortune". נתיב ברירת המחדל דרך הפעולה הזו למשתמש חוזר נראה כך:
מה תלמדו
- איך משתמשים במשבצות כדי לאסוף נתונים מהמשתמש
- איך משתמשים בתנאים כדי להוסיף לוגיקה לסצנה
- איך מוסיפים game loop
- איך מוסיפים נתיב תומך
מה נדרש
הדרישות המוקדמות ל-codelab הזה כוללות את הדברים הבאים:
- דפדפן אינטרנט, כמו Google Chrome
- פרויקט Actions שהושלם ברמה 1 ( Build Actions for Google Assistant using Actions Builder Level 1)
מומלץ מאוד להכיר את JavaScript (ES6) כדי להבין את קוד הביצוע של Codelab הזה, אבל זה לא חובה.
2. המשך בניית ממשק שיחה
ב-Codelab הראשון יצרתם פעולה פשוטה לשיחה עם סצנה אחת, Start
.
ב-codelab הזה, תרחיבו את השיחה של הפעולה. בקטעים הבאים מוסבר איך להגדיר את הפעולה כך שתבצע את הפעולות הבאות:
- מעבר ל
Fortune
סצנה חדשה כשהמשתמש רוצה לשמוע את העתיד שלו - שואלים את המשתמש איזו עזרה הוא רוצה לבחור לתהליך שלו
- הצגת ניבוי מותאם אישית על סמך הבחירה של המשתמש
יצירת סצנה Fortune
בקטע הזה יוצרים את סצנת Fortune
ומגדירים איך המשתמש עובר אליה במהלך השיחה.
כדי ליצור סצנה חדשה בשם Fortune
, פועלים לפי השלבים הבאים:
- פותחים את פרויקט הפעולות ברמה 1 של ה-codelab.
- בסרגל הניווט, לוחצים על פיתוח.
- בקטע סצנות, לוחצים על הסצנה התחלה.
- לוחצים על כוונת yes (התיבה When yes is matched) כדי לפתוח את האפשרויות.
- כדי להסיר את ההנחיה, מבטלים את הסימון של שליחת הנחיות.
- בקטע מעבר, לוחצים על התפריט הנפתח, לוחצים בתיבת הטקסט ומקלידים
Fortune
. - לוחצים על Add (הוספה). הפעולה הזו יוצרת סצנה חדשה בשם
Fortune
. בנוסף, מתווסף מעבר מסצנתStart
לסצנתFortune
כשהמשתמש רוצה לשמוע את העתיד שלו.
הגדרת לוגיקה לשיחה בסצנה Fortune
ב-codelab הזה, מגדירים את סצנת Fortune
השאלה למשתמש: What do you choose to help you on your quest, a dragon, a translator, or a compass? (מה תבחר שיעזור לך במסע שלך, דרקון, מתרגם או מצפן?) כדי לאסוף את המידע הנדרש מהמשתמש לפני שממשיכים, אפשר להשתמש בתכונה שנקראת מילוי משבצות.
הפעולה מספקת תחזיות לשלושה אמצעי עזר: דרקון, מתרגם ומצפן. כדי להגדיר את הפעולה כך שתזהה את שלוש האפשרויות האלה בקלט של המשתמש, צריך ליצור סוג חדש.
אפשר להשתמש בסוגים בשלב מילוי המשבצות של סצנה כדי להגדיר את המידע שרוצים לקבל מהמשתמש. כשמנוע ה-NLU מזהה התאמה של משבצת בקלט של המשתמש, הוא מחלץ את המשבצת כפרמטר מוקלד, כך שאפשר להשתמש בה לביצוע לוגיקה בסצנה.
יצירת סוג available_options
בקטע הזה יוצרים סוג חדש בשם available_options
, שמציין את שלוש האפשרויות שהמשתמשים יכולים לבחור (dragon, translator ו-compass) בתגובה להנחיה. אתם גם מגדירים כמה מילים נרדפות לאפשרויות האלה, למקרה שמשתמש יגיד משהו דומה. בקטע מאוחר יותר, מוסיפים את הסוג available_options
למקום שמור כדי לציין שרוצים לקבל את הבחירה של המשתמש.
כדי ליצור את הסוג available_options
, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על סוגים.
- לוחצים על + (סמל הפלוס), מקלידים
available_options
ולוחצים עלEnter
. - לוחצים על
available_options
כדי לפתוח את האפשרויות.
הסוגים מוגדרים כצמדי מפתח/ערך של מידע, כאשר המפתח הוא שם הסוג והערכים הם מילים נרדפות למפתח הזה. כשמגדירים את המפתח, הוא מתווסף אוטומטית כערך.
כדי להוסיף את שלוש האפשרויות שהמשתמש יכול לבחור, פועלים לפי השלבים הבאים:
- גוללים לקטע הוספת רשומות.
- בשדה New entry, מקלידים
dragon
ולוחצים עלEnter
. הפעולה הזו יוצרת מפתחdragon
. - מקלידים
hydra
בשדה הוספת ערכים ולוחצים עלEnter
כדי להוסיף אותו כערך (מילה נרדפת). לאחר מכן, חוזרים על השלב הזה עבור הערךlizard
. - מוסיפים את שאר המפתחות והערכים התואמים:
translator | translator
,communicator
,machine
,decoder
,translate
compass | compass
,direction
,guide
- לוחצים על שמירה.
הפעולה מבינה עכשיו שavailable_options
הם דרקון, מתרגם ומצפן, ויכולה גם לזהות כמה מילים נרדפות מתאימות.
הגדרת מילוי משבצות
בשלב הבא, צריך להגדיר מילוי משבצות בסצנה Fortune
. כדי להגדיר את הלוגיקה של מילוי המשבצות:
- בסרגל הניווט, בקטע סצנות, לוחצים על מזל.
- בסצנה
Fortune
, לוחצים על + (סימן הפלוס) לצד מילוי משבצת. - בשדה Enter slot name (הזנת שם משבצת), מוסיפים את
chosenOptions
כשם המשבצת. - ברשימה הנפתחת בחירת סוג בוחרים באפשרות
available_options
כסוג המיקום. - מסמנים את תיבת הסימון חובה למלא את המשבצת הזו.
- בוחרים באפשרות שליחת הנחיות ומוסיפים את ההודעה הבאה ואת הלחצנים להצעות:
candidates:
- first_simple:
variants:
- speech: >-
What do you choose to help you on your quest, a dragon, a
translator, or a compass?
suggestions:
- title: 'Dragon'
- title: 'Translator'
- title: 'Compass'
- לוחצים על שמירה.
הוספתם את סוג העזרה available_options
למשבצת, ועכשיו הפעולה יודעת איזה מידע צריך לאסוף מהמשתמש (סוג העזרה שהוא רוצה) לפני שממשיכים. הגדרתם גם הנחיה במשבצת, שנוספת לתור ההנחיות כשהמשתמש מגיע לשלב מילוי המשבצת בסצנה.
שימו לב: כשנתתם שם למשבצת chosenOptions
, השם הזה ($session.params.chosenOptions
) התעדכן גם בשדה Customize slot value writeback. תוכלו לגשת לפרמטר הזה באמצעות השם הזה ב-Actions Builder וב-fulfillment דרך ספריית הלקוח.
הגדרת תנאי scene.slots.status == "FINAL"
כשמוסיפים משבצת, התנאי scene.slots.status == "FINAL"
מתווסף אוטומטית לרשימת התנאים.
התנאי scene.slots.status == "FINAL"
בודק אם מילוי המשבצת הושלם. כשכל המשבצות מלאות, התנאי יכול להפעיל webhook, לעבור לסצנה חדשה או להוסיף הנחיות לתור ההנחיות.
בקטע הזה מגדירים את scene.slots.status == "FINAL"
כך שיוסיף הנחיה לתור ההנחיות אחרי שהמשבצות יתמלאו.
כדי להוסיף את ההנחיה הזו לתנאי FINAL
, פועלים לפי השלבים הבאים:
- לוחצים על
scene.slots.status == "FINAL"
כדי לפתוח את חלון האפשרויות. - בוחרים באפשרות שליחת הנחיות ומוסיפים את ההנחיה הבאה:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- לוחצים על שמירה.
בדיקת הפעולה בסימולטור
בשלב הזה, הגדרתם אילו אפשרויות המשתמש צריך לבחור כדי למלא את המשבצת. אחרי קבלת המידע הזה מהמשתמש, הפעולה שלכם צריכה להציג הנחיה שמתייחסת לאפשרות הספציפית שהוא בחר.
כדי לבדוק את הפעולה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- לוחצים על
Talk to my test app
או מקלידים אותו בשדה Input (קלט) ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. (אפשרות אחרת היא ללחוץ על הצ'יפ עם ההצעה כן).
- לוחצים, מקלידים או אומרים
dragon
. אמורה להופיע ההנחיה "בחרת דרקון".
בקטע הבא, מתאימים אישית את ההנחיות לכל עזרה שהמשתמש יכול לבחור.
התאמה אישית של הנחיות באמצעות תנאים
בקטע הזה, מוסיפים תנאים לכל אפשרות שהמשתמש יכול לבחור, ומוסיפים הנחיה מותאמת אישית לכל תנאי.
התאמה אישית של הניחוש dragon
כדי לעדכן את התנאי ולהתאים אישית את ההודעה שמוצגת כשמשתמש בוחר באפשרות 'דרקון', פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על פיתוח.
- בסרגל הניווט, לוחצים על הסצנה Fortune.
- לוחצים על
scene.slots.status == "FINAL"
כדי לפתוח את חלון האפשרויות. - מעדכנים את משפט התנאי ל:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- בוחרים באפשרות שליחת הנחיות.
- מעדכנים את ההנחיה עם הניחוש הבא בעורך הקוד:
candidates:
- first_simple:
variants:
- speech: >-
The people of Gryffinberg will be awestruck by the beauty and power
of the ancient dragon. Much to your dismay, the townspeople fall
into dispute over who will receive the honor of riding the dragon
first. You return home from your quest without everlasting glory or
a dragon.
- לוחצים על שמירה.
עכשיו, כשמשתמש אומר dragon או מילה שנשמעת דומה, הפעולה מספקת לו ניבוי עתידות על סמך הבחירה הזו. לאחר מכן מוסיפים את שתי הבחירות הנותרות.
התאמה אישית של הניחוש translator
כדי להוסיף את התנאי ולהתאים אישית את ההנחיה שמוצגת כשמשתמש בוחר באפשרות 'תרגום', פועלים לפי השלבים הבאים:
- לוחצים על + (סמל הפלוס) לצד תנאי.
- מוסיפים את
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
לשדה else if. - לוחצים על שליחת הנחיות.
- מוסיפים את ההנחיה הבאה בעורך הקוד:
candidates:
- first_simple:
variants:
- speech: >-
With the help of the translator, the rival factions in Gryffinberg
are finally able to communicate with each other and resolve their
disputes. You will complete your quest to restore peace in the town.
The translator will be used on many subsequent journeys across the
earth. After its work is done, it retires honorably to a premier
location in the Gryffinberg History Museum.
- לוחצים על שמירה.
התאמה אישית של הניחוש compass
כדי להוסיף את התנאי ולהתאים אישית את ההנחיה שמוצגת כשמשתמש בוחר באפשרות 'מצפן', פועלים לפי השלבים הבאים:
- לוחצים על + (סמל הפלוס) לצד תנאי.
- מוסיפים את
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
לתיבת הטקסט else if. - לוחצים על שליחת הנחיות.
- מוסיפים את ההנחיה הבאה בעורך הקוד:
candidates:
- first_simple:
variants:
- speech: >-
The compass will help you find the mystical and ancient Library of
Gryffinberg. Among its infinite stacks of dusty books, you find one
entitled "Wisdom of the Ages". By the time you've read the
50,000-page tome, the townspeople have forgotten their problems. You
will write a second edition of "Wisdom of the Ages", but have
limited commercial success.
- לוחצים על שמירה.
בדיקת הפעולה בסימולטור
בשלב הזה, הפעולה שלכם צריכה לספק למשתמש ניבוי עתידות מותאם אישית על סמך האפשרות שהוא בוחר.
כדי לבדוק את הפעולה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- מקלידים
Talk to my test app
בשדה Input ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. אפשר גם ללחוץ על הצ'יפ של ההצעה כן. - לוחצים, מקלידים או אומרים
Translator
.
אמורה להתקבל התוצאה המתאימה לאפשרות 'מתרגם'.
3. הוספת game loop
בקטע הזה מגדירים את הפעולה כך שהמשתמש יוכל לבחור אפשרות אחרת ולשמוע ניחוש אחר אחרי שהוא בוחר. השינוי הזה דומה להודעה "רוצה לשחק שוב?" שמופיעה בסוף משחק. כדי ליצור את הלולאה הזו, אפשר להשתמש שוב בכוונות yes
ו-no
שנוצרו קודם, ולהוסיף אותן לסצנה חדשה בשם Again
.
יצירת סצנה Again
בקטע הזה יוצרים Again
סצנה חדשה ומוסיפים הנחיה ששואלת את המשתמש אם הוא רוצה לבחור באפשרות אחרת.
כדי ליצור את Again
הסצנה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על פיתוח.
- לוחצים על + (סימן הפלוס) בקטע סצנות.
- מקלידים
Again
ומקישים עלEnter
. - בסרגל הניווט, לוחצים על הסצנה
Again
. - לוחצים על + (סמל הפלוס) לצד On enter (בכניסה).
- בוחרים באפשרות שליחת הנחיות ומוסיפים את ההנחיה הבאה ואת הצ'יפים של ההצעות:
candidates:
- first_simple:
variants:
- speech: >-
That is what I see for you. Would you like to choose a different option and
explore another future?
suggestions:
- title: 'Yes'
- title: 'No'
- לוחצים על שמירה.
הוספת מעבר מסצנה Fortune
לסצנה Again
אחרי שהמשתמש מקבל את הניבוי, השיחה צריכה לעבור לסצנה החדשה Again
.
כדי להוסיף מעבר מסצנה Fortune
לסצנה Again
, פועלים לפי השלבים הבאים:
- לוחצים על הסצנה מזל.
- לוחצים על התנאי הראשון (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
) כדי לפתוח את חלון האפשרויות. - גוללים ובוחרים באפשרות
Again
בקטע מעבר. - לוחצים על שמירה.
- לוחצים על התנאי השני כדי לפתוח את חלון האפשרויות.
- גוללים ובוחרים באפשרות
Again
בקטע מעבר. - לוחצים על שמירה.
- לוחצים על התנאי השלישי כדי לפתוח את חלון האפשרויות.
- גוללים ובוחרים באפשרות
Again
בקטע מעבר. - לוחצים על שמירה.
בדיקת הפעולה בסימולטור
בשלב הזה, הפעולה שלכם צריכה להציג למשתמש את ההנחיה הבאה אחרי שהוא מקבל את התחזית: "זה מה שאני רואה בשבילך. רוצה לבחור באפשרות אחרת ולראות איך העתיד ייראה אם תבחר בה?"
כדי לבדוק את הפעולה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- מקלידים
Talk to my test app
בשדה Input ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. אפשר גם ללחוץ על הצ'יפ של ההצעה כן. - לוחצים, מקלידים או אומרים
dragon
.
אחרי שתבחרו באפשרות של הדרקון, תקבלו את הניחוש ואת ההנחיה Again
.
הוספת כוונות ומעבר לסצנה Again
בקטע הזה, מוסיפים כוונות (intent) של yes
ושל no
לסצנה Again
כדי שהפעולה תבין אם המשתמש רוצה לבחור אפשרות חדשה או לא. מוסיפים גם את המעברים המתאימים לכוונות yes
ו-no
. הכוונה yes
עוברת לסצנה Fortune
, והכוונה no
עוברת לסצנת המערכת End conversation
.
כדי להוסיף כוונות ומעברים לAgain
סצנה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על פיתוח.
- לוחצים על הסצנה
Again
. - לוחצים על + (סמל הפלוס) לצד User intent handling (טיפול בכוונת המשתמש).
- בתפריט הנפתח של הכוונה, בוחרים באפשרות כן.
- בתפריט הנפתח מעבר, בוחרים באפשרות
Fortune
. - לוחצים על שמירה.
- לוחצים על + (סמל הפלוס) לצד User intent handling (טיפול בכוונת המשתמש).
- בתפריט הנפתח של הכוונה, בוחרים באפשרות לא.
- בתפריט הנפתח מעבר, בוחרים באפשרות סיום השיחה.
- בוחרים באפשרות שליחת הנחיות ומוסיפים את ההנחיה הבאה בעורך הקוד:
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- לוחצים על שמירה.
בדיקת הפעולה בסימולטור
הפעולה שלכם אמורה להבין עכשיו אם המשתמש רוצה לבחור אפשרות חדשה או לסיים את השיחה.
כדי לבדוק את כוונת המשתמש yes
, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- מקלידים
Talk to my test app
בשדה Input ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. אפשר גם ללחוץ על הצ'יפ של ההצעה כן. - לוחצים על אחת מהאפשרויות, מקלידים אותה או אומרים אותה.
- מקלידים
Yes
בשדה Input ומקישים עלEnter
.
צריכה להופיע ההנחיה "What do you choose to help you on your quest, a dragon, a translator, or a compass?" (מה תבחר שיעזור לך במסע שלך, דרקון, מתרגם או מצפן?)
כדי לבדוק את כוונת המשתמש no
, פועלים לפי השלבים הבאים:
- לוחצים על אחת מהאפשרויות, מקלידים אותה או אומרים אותה.
- מקלידים
No
בשדה הקלט ומקישים עלEnter
.
צריכה להופיע ההודעה End conversation
: "שמחתי לשמוע שאתה מרוצה מהבחירה שלך. בהצלחה בקווסט. להתראות".
4. הוספת נתיב תומך
יצרתם את הנתיב הראשי שרוב המשתמשים עוברים בו באינטראקציה עם הפעולה. עם זאת, המשתמש יכול להשיב להנחיה מהסצנה Fortune
, מה תבחר שיעזור לך במסע, דרקון, מתרגם או מצפן?, עם בחירה שלא מופיעה בין האפשרויות שסופקו.
בקטע הזה מגדירים את הפעולה כך שתבין מתי משתמש בוחר באפשרות 'קסם', 'כסף', 'סוס' או 'טלפון', ותציג למשתמש הנחיה לבחור אחת משלוש האפשרויות המקוריות אם הוא בוחר באחת מהאפשרויות האלה. כדי להגדיר את הלוגיקה הזו, צריך ליצור type
חדש שמכיל את האפשרויות האחרות האלה ואת הכוונה החדשה other_option
, שמוגדרת להתאמה כשמשתמש אומר אחת מהאפשרויות האלה. בנוסף, צריך להוסיף הערות לביטויי ההדרכה בתוך כוונת other_option
כדי לזהות ולחלץ פרמטרים של כוונות.
כשמנוע עיבוד השפה הטבעית (NLU) של Assistant מזהה התאמה של פרמטר בקלט של המשתמש, הוא מחלץ את הערך כפרמטר מוקלד כדי שתוכלו לבצע איתו לוגיקה בסצנה. ב-Codelab הזה, תגדירו את הפעולה כך שתחלץ את העזרה שהמשתמש בוחר ותתייחס לבחירה הזו בהנחיה.
יצירת סוג unavailable_options
עכשיו אפשר ליצור סוג unavailable_options
שמכיל מגוון אפשרויות שונות, כדי שהפעולה תוכל לזהות את הנתונים האלה בקלט של המשתמש.
כדי ליצור את הסוג unavailable_options
, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על פיתוח.
- לוחצים על + (סמל הפלוס) בקטע סוגים.
- מקלידים
unavailable_options
ומקישים עלEnter
. - לוחצים על
unavailable_options
כדי לפתוח את האפשרויות. - בקטע Add entries (הוספת רשומות), מזינים את הרשומות הבאות ואת הערכים התואמים:
|
|
|
|
|
|
|
|
טבלת זוגות מפתח/ערך צריכה להיראות כך:
- לוחצים על שמירה.
יצירת כוונת other_option
לאחר מכן יוצרים כוונת משתמש בשם other_option
ומוסיפים ביטויי אימון שכוללים את האפשרויות בסוג unavailable_options
. הכוונה הזו מתאימה כשמשתמש בוחר אפשרות שכלולה בסוג unavailable_options
.
כדי ליצור ולהגדיר את other_option
הכוונה, פועלים לפי השלבים הבאים:
- לוחצים על + (סמל הפלוס) בקטע קהלים בהתאמה אישית עם כוונת רכישה.
- מקלידים
other_option
ומקישים עלEnter
. - לוחצים על
other_option
כדי לפתוח את החלון. - מוסיפים את הביטויים הבאים להדרכה ולוחצים על
Enter
אחרי כל אחד מהם:
I want to use spells
I really really want to use a phone
magic!
cash
I want to ride a horse
- בקטע Add intent parameters (הוספת פרמטרים של כוונת המשתמש), מעדכנים את שם הפרמטר ל-
chosenUnavailableOption
. - לוחצים על שמירה.
כשמזינים את הביטויים לאימון, הכלי Actions Builder מזהה את spells
, phone
, magic
, cash
ו-horse
מהסוג unavailable_options
ומדגיש (מסמן) את המילים האלה באופן אוטומטי. כלי בניית הפעולות מוסיף באופן אוטומטי פרמטר של Intent בקטע Add intent parameters (הוספת פרמטרים של Intent), כמו שמוצג בתמונה הבאה.
פרמטר הכוונה מאפשר לכם לחלץ את שם האפשרות ולהשתמש באפשרות הזו בהנחיה.
הוספת כוונה other_option
לסצנה Fortune
עכשיו יש לך כוונה, other_option
, שיכולה לטפל במשתמש שמציין אפשרות שלא נכללת באפשרויות המקוריות. בקטע הזה מוסיפים את כוונת other_option
לסצנת Fortune
. משתמשים בפרמטר הכוונה כדי להתאים אישית את ההנחיה על סמך הקלט של המשתמש.
כדי להוסיף את כוונת המשתמש other_option
לסצנה Fortune
, פועלים לפי השלבים הבאים:
- לוחצים על הסצנה מזל.
- לוחצים על + (סמל הפלוס) לצד User intent handling (טיפול בכוונת המשתמש).
- בתפריט הנפתח של הכוונה, בוחרים באפשרות
other_option
. - בוחרים באפשרות שליחת הנחיות ומוסיפים את ההנחיה הבאה:
candidates:
- first_simple:
variants:
- speech: >-
I have seen the future and a $intent.params.chosenUnavailableOption.original
will not aid you on your journey.
הביטוי $intent.params.chosenUnavailableOption
מתייחס לאובייקט של פרמטר ה-Intent, והביטוי $intent.params.chosenUnavailableOption.original
מתייחס לערך של האובייקט הזה. השדה original property
מתייחס לקלט הגולמי שהמשתמש מציין.
- לוחצים על שמירה.
כשמשתמש אומר אפשרות שמופיעה ברשימה של unavailable_options
type במהלך Fortune
scene, המערכת מתאימה את הכוונה other_option
ומוסיפה הנחיה לתור ההנחיות. מכיוון שלא צוין מעבר, לולאת הביצוע של הסצנה ממשיכה בהערכה מחדש של שלב התנאים. לאחר מכן, המשבצת chosenOptions
מוסיפה את ההנחיה שלה לתור ההנחיות, והתור מועבר למשתמש.
בדיקת הפעולה בסימולטור
עכשיו הפעולה שלכם צריכה להגיב בצורה מתאימה כשמשתמש בוחר באחת מהאפשרויות שמופיעות בסוג unavailable_options
ולציין איזו עזרה המשתמש בחר. לאחר מכן, הפעולה צריכה להציג למשתמש את אחת מהאפשרויות המקוריות (דרקון, מתרגם או מצפן).
כדי לבדוק את הפעולה בסימולטור, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- מקלידים
Talk to my test app
בשדה Input ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. אפשר גם ללחוץ על הצ'יפ של ההצעה כן. - מקלידים
magic
בשדה Input ומקישים עלEnter
.
יכול להיות שתשימו לב שההנחיה לא נשמעת נכון כשהמשתמש בוחר באפשרות 'קסם', בגלל המילה 'a' שמופיעה לפני כן. הבעיה הזו מוסברת בקטעים הבאים.
הוספת handler של unavailable_options
כדי להוסיף את המילה a לפני האפשרויות המתאימות מהסוג unavailable_options
, אפשר להגדיר את הפונקציה event handler בלוגיקת האספקה כדי לבדוק אם צריך להוסיף את המילה a לפני האפשרות שהמשתמש בוחר. קודם צריך להגדיר את הפעולה כך שתפעיל את ה-handler במסוף.
כדי להוסיף את רכיב ה-handler unavailable_options
, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על פיתוח.
- לוחצים על הסצנה
Fortune
. - בקטע User intent handling, לוחצים על When other_option is matched כדי לפתוח את החלון.
- מבטלים את הסימון של התיבה שליחת הנחיות.
- מסמנים את תיבת הסימון התקשרות אל ה-webhook.
- מזינים
unavailable_options
בתיבת הטקסט של הגורם המטפל באירועים.
- לוחצים על שמירה.
עדכון ופריסה של תהליך מילוי ההזמנה
עכשיו, אחרי שהגדרתם את הפעולה לקריאה ל-handler של האירוע unavailable_options
, אתם יכולים לעדכן את ה-handler ב-fulfillment ולפרוס אותו.
כדי לעדכן את תהליך השלמת ההזמנה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על Webhook.
- מוסיפים את הקוד הבא מתחת ל-handler
greeting
:
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
- מוסיפים את הקוד הבא מתחת ל-
const app = conversation();
:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- לוחצים על שמירת ההזמנה.
- לוחצים על Deploy Fulfillment (פריסת מילוי הזמנות). בסיום הפריסה, תוצג הודעה מעל העורך: Your Cloud Function deployment is up to date (הפריסה של הפונקציה ב-Cloud Functions עדכנית).
הסבר על הקוד
ה-handler unavailable_options
מבצע את הפעולות הבאות:
- מקבל נתוני
option
מאובייקטconv
ומקצה אתoption
למאפייןoriginal
, שהוא הקלט הגולמי מהמשתמש - הפונקציה מקצה את הערך
optionKey
למאפייןresolved
, שהוא המפתח לסוגunavailable_options
- בודק אם
optionKey
היא אחת מהאפשרויות שצריך להוסיף להן את האות a. אם כן, יוצר את ההודעה עם האות a. - הוספת ההודעה דרך
conv.add(message)
בדיקת הפעולה בסימולטור
הפעולה אמורה להתאים את ההנחיה בהתאם לבחירה של המשתמש מתוך סוג unavailable_options
, ולבדוק אם צריך להוסיף את המילה "a" לפני הבחירה.
כדי לבדוק את הפעולה, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה.
- לוחצים על
Talk to my test app
או מקלידים אותו בשדה Input (קלט) ומקישים עלEnter
. - מקלידים
Yes
בשדה Input ומקישים עלEnter
. אפשר גם ללחוץ על הצ'יפ של ההצעה כן. - מקלידים
magic
בשדה Input ומקישים עלEnter
. - מקלידים
horse
בשדה Input ומקישים עלEnter
.
הפעולה שלכם צריכה להוסיף את המילה 'a' לפני האפשרות 'horse', וליצור את ההנחיה בלי המילה 'a' לפני האפשרות 'magic'.
פינוי מקום בפרויקט [מומלץ]
כדי להימנע מחיובים אפשריים, מומלץ להסיר פרויקטים שאתם לא מתכוונים להשתמש בהם. כדי למחוק את הפרויקטים שיצרתם ב-codelab הזה, פועלים לפי השלבים הבאים:
- כדי למחוק את הפרויקט ב-Cloud ואת המשאבים, מבצעים את השלבים שמפורטים בקטע השבתה (מחיקה) של פרויקטים.
- אופציונלי: כדי להסיר את הפרויקט מיד ממסוף הפעולות, אפשר לעיין במאמר בנושא מחיקת פרויקט. אם לא תבצעו את השלב הזה, הפרויקט יוסר אוטומטית אחרי כ-30 יום.
5. מעולה!
עכשיו יש לכם את הכישורים ברמת הביניים שדרושים כדי ליצור פעולות ל-Google Assistant.
מה כיסיתם
- איך מפתחים פעולות לשיחה באמצעות ספריית ה-fulfillment של Node.js
- איך משתמשים במשבצות כדי לאסוף נתונים מהמשתמש
- איך משתמשים בתנאים כדי להוסיף לוגיקה לסצנה
- איך מוסיפים game loop
- איך מוסיפים נתיב תומך
מידע נוסף
כדי לקבל מידע נוסף על יצירת פעולות ל-Google Assistant, אפשר לעיין במקורות המידע הבאים:
- מאמרי עזרה לפיתוח פעולות ל-Google Assistant
- דף GitHub של Actions on Google עם דוגמאות קוד וספריות
- הקהילה הרשמית ב-Reddit למפתחים שעובדים עם Google Assistant
- הנחיות לעיצוב שיחות בנוגע לשיטות מומלצות והנחיות לגבי פעולות שיחה
כדאי לעקוב אחרי @ActionsOnGoogle בטוויטר כדי להתעדכן בהכרזות האחרונות שלנו, ולצייץ אל #AoGDevs כדי לשתף את מה שיצרתם.
סקר משוב
לפני שנסיים, נשמח אם תמלא/י את הסקר הקצר הזה לגבי חוויית התמיכה.