יצירת פעולות ל-Google Assistant באמצעות Action Builder (רמה 2)

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

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

שיעור קוד זה מקיף מושגים ברמת הביניים לפיתוח עם Google Assistant, ובונה על הפעולה שנוצרה במעבדת הקוד ברמה 1. מומלץ מאוד להשלים את שיעור הקוד של רמה 1 לפני שמתחילים בשיעור הזה.

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

מה תפתחו

ב-codelab הזה תיצרו פעולה קבוצתית מתוחכמת עם הפונקציות הבאות:

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

לפני שמתחילים לבנות תוכן, אפשר לקיים אינטראקציה עם פעולה פעילה במכשיר עם Google Assistant מובנית: אומרים "Hey Google, Talk to Fate and Fortune" . נתיב ברירת המחדל של הפעולה הזו עבור משתמש חוזר נראה כמו האינטראקציה הבאה:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

מה תלמדו

  • איך להשתמש במשבצות לאיסוף נתונים מהמשתמש
  • איך להשתמש בתנאים כדי להוסיף לוגיקה לסצנה
  • איך להוסיף לולאת משחקים
  • איך מוסיפים נתיב תומך?

מה תצטרך להכין

הדרישות המוקדמות למעבדות האלה כוללות:

יש היכרות מעמיקה עם JavaScript (ES6) אך לא חובה, כדי להבין את קוד המימוש של קוד Lab זה.

2. המשך בניית ממשק השיחה

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

במעבדת קוד זו, אתם מרחיבים את השיחה של Action' . בסעיפים הבאים תגדירו את הפעולה כך:

  • מעבר לסצנה חדשה ב-Fortune כשהמשתמש רוצה לשמוע את מזלו
  • לשאול את המשתמש באיזה סיוע הוא רוצה לבחור במסע שלו
  • לספק עתיד בהתאמה אישית על סמך בחירת המשתמש

יצירת סצנה אחת (Fortune)

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

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

  1. פותחים את פרויקט הפעולות של Codelab 1.
  2. לוחצים על פיתוח בסרגל הניווט.
  3. בקטע תרחישים לוחצים על סצנת התחלה.
  4. לוחצים על כוונת הרכישה כן (התיבה כאשר כן מתאימה) כדי לפתוח את האפשרויות.
  5. מבטלים את ההגדרה שליחת הודעות כדי להסיר את הבקשה.
  6. בקטע מעבר, לוחצים על התפריט הנפתח, לוחצים על תיבת הטקסט ומקלידים Fortune.
  7. לוחצים על הוספה. פעולה זו יוצרת סצנה חדשה בשם Fortune. הוא גם מוסיף מעבר מהסצנה ב-Start לסצנה עם Fortune, כאשר המשתמש רוצה לשמוע על מזלו.

56682a0c7459b98c.png

הגדרה של לוגיקת שיחה לסצנת Fortune

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

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

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

יצירת סוג אחד (available_options)

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

כדי ליצור את סוג ה-available_options, צריך לבצע את הפעולות הבאות:

  1. בסרגל הניווט, לוחצים על סוגים.
  2. לוחצים על + (סימן פלוס), מקלידים available_options ולוחצים על Enter.
  3. לוחצים על available_options כדי לפתוח את האפשרויות.

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

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

  1. גוללים לקטע הוספת רשומות.
  2. בשדה רשומה חדשה, מקלידים dragon ומקישים על Enter. פעולה זו יוצרת מפתח dragon.
  3. מקלידים hydra בשדה הוספת ערכים ומקישים על Enter כדי להוסיף אותו כערך (מילה נרדפת). לאחר מכן, חוזרים על השלב הזה בערך lizard.
  4. מוסיפים את שאר המפתחות והערכים התואמים:
  • translator | translator, communicator, machine, decoder, translate
  • compass | compass,‏ direction,‏ guide

8333b1b67445f21.png

  1. לוחצים על Save.

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

הגדרת מילוי משבצת

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

  1. בסרגל הניווט, בקטע תרחישים לוחצים על Fortune.
  2. בסצנה Fortune, לוחצים על + (סימן פלוס) עבור מילוי חריץ.
  3. בשדה הזנת שם משבצת מוסיפים את chosenOptions בתור שם החריץ.
  4. ברשימה הנפתחת בחירת סוג, בוחרים באפשרות available_options כסוג החריץ.
  5. מסמנים את התיבה המשבצת הזאת נדרשת.

a461b906476e244.png

  1. בוחרים באפשרות שליחת הודעות ומוסיפים את הצ'יפים של ההודעות וההצעות הבאות:
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'
  1. לוחצים על Save.

עכשיו הוספת את הסוג available_options למשבצת הזמן. הפעולה הזו מציינת לפעולה שלך את המידע שעליך לאסוף מהמשתמש (העזרה שלו) לפני המשך התהליך. גם הגדרתם בקשה בתוך המשבצת, שתתווסף לתור הבקשה כשהמשתמש מגיע לשלב מילוי המשבצת.

לתשומת ליבך: כשהשם שנתת למשבצת הזו הוא chosenOptions, השדה התאמה אישית של ערך החריץ יעודכן עם אותו שם ($session.params.chosenOptions). אפשר לגשת לפרמטר הזה לפי השם ב-Actions Builder ובמילוי ההזמנה דרך ספריית הלקוח.

הגדרת התנאי scene.slots.status == "FINAL"

כשמוסיפים משבצת, המצב scene.slots.status == "FINAL" מתווסף באופן אוטומטי לרשימת התנאים.

התנאי scene.slots.status == "FINAL" מחפש מילוי של משבצת הזמן. אחרי שכל המשבצות ימולאו, התנאי יוכל להפעיל webhook, לעבור לסצנה חדשה או להוסיף הודעות לתור הבקשה.

בקטע הזה, מגדירים את scene.slots.status == "FINAL" להוספת בקשה לתור הבקשה ברגע שהמשבצות ימולאו.

כדי להוסיף את ההודעה הזו לתנאי FINAL, יש לבצע את הפעולות הבאות:

  1. לוחצים על scene.slots.status == "FINAL" כדי לפתוח את חלון האפשרויות.
  2. בוחרים באפשרות שליחת הודעות ומוסיפים את הבקשה הבאה:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. לוחצים על Save.

בדיקת הסימולטור על הפעולה שלך

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

כדי לבדוק את הפעולה שלך:

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. לוחצים או מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. (לחלופין, אפשר ללחוץ על צ'יפ ההצעה כן.)

a899d45c542668f6.png

  1. לוחצים, מקלידים או אומרים dragon. אמורה להופיע ההודעה "אתם בחרתם דרקון.

בקטע הבא, תתאימו אישית את ההנחיות לכל סיוע שהמשתמש יכול לבחור.

התאמה אישית של הודעות באמצעות תנאים

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

התאמה אישית של מזל dragon

כדי לעדכן את התנאי ולהתאים אישית את הבקשה כאשר המשתמש בוחר את ה- "dragon&QUOTE; פועלים לפי השלבים הבאים:

  1. לוחצים על פיתוח בסרגל הניווט.
  2. בסרגל הניווט, לוחצים על סצנת המזל.
  3. לוחצים על scene.slots.status == "FINAL" כדי לפתוח את חלון האפשרויות.
  4. יש לעדכן את הצהרת התנאי ל: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. בוחרים באפשרות שליחת הודעות.
  6. יש לעדכן את ההודעה עם סימני המזל הבאים בעורך הקוד:
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.
  1. לוחצים על Save.

d31767232ad908bd.png

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

התאמה אישית של מזל translator

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

  1. לוחצים על + (סימן הפלוס) לצד מצב.
  2. מוסיפים scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" לשדה אחר אם.
  3. בוחרים באפשרות שליחת הודעות.
  4. צריך להוסיף את הבקשה הבאה לעורך הקוד:
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.
  1. לוחצים על Save.

c1af65e70dbf3dfe.png

התאמה אישית של מזל compass

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

  1. לוחצים על + (סימן הפלוס) לצד מצב.
  2. מוסיפים scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" לתיבת הטקסט אחר אם.
  3. בוחרים באפשרות שליחת הודעות.
  4. צריך להוסיף את הבקשה הבאה בעורך הקוד:
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.
  1. לוחצים על Save.

בדיקת הסימולטור על הפעולה שלך

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

כדי לבדוק את הפעולה שלך:

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעה כן.
  4. לוחצים, מקלידים או אומרים Translator.

29e17f950bd0dd71.png

אמור להופיע פירוט של האפשרות "translate" .

3. הוספת לולאה של משחק

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

יצירת סצנה אחת (Again)

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

כדי ליצור את הסצנה Again, יש לבצע את הפעולות הבאות:

  1. לוחצים על פיתוח בסרגל הניווט.
  2. לוחצים על + (סימן הפלוס) בקטע תרחישים.
  3. יש להקליד Again ולהקיש על Enter.
  4. לוחצים על סצנת Again בסרגל הניווט.
  5. לוחצים על + (סימן החיבור) לצד Enter.
  6. בוחרים באפשרות שליחת הודעות ומוסיפים את הצ'יפים של ההצעות וההצעות הבאות:
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'
  1. לוחצים על Save.

הוספת המעבר מFortune לסצנה אחת (Again)

אחרי שהמשתמש יקבל את המזל, השיחה צריכה לעבור לסצנה החדשה ב-Again.

כדי להוסיף מעבר מסצנת Fortune לסצנה Again, יש לבצע את הפעולות הבאות:

  1. לוחצים על סצנת מזל.
  2. לוחצים על התנאי הראשון (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") כדי לפתוח את חלון האפשרויות.
  3. גוללים ובוחרים באפשרות Again בקטע מעבר.
  4. לוחצים על Save.
  5. לוחצים על התנאי השני כדי לפתוח את חלון האפשרויות.
  6. גוללים ובוחרים באפשרות Again בקטע מעבר.
  7. לוחצים על Save.
  8. לוחצים על התנאי השלישי כדי לפתוח את חלון האפשרויות.
  9. גוללים ובוחרים באפשרות Again בקטע מעבר.
  10. לוחצים על Save.

בדיקת הסימולטור על הפעולה שלך

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

כדי לבדוק את הפעולה שלך:

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעה כן.
  4. לוחצים, מקלידים או אומרים dragon.

b299e9fed9aedb69.png

אמור להופיע סמל של אפשרות דרקון ושל בקשת Again.

הוספה של כוונות ומעבר לסצנה אחת (Again)

בקטע הזה, מוסיפים את הכוונות yes ו-no לסצנה Again כדי שהפעולה תבין אם המשתמש רוצה לבחור אפשרות חדשה או לא. יש להוסיף גם את המעברים המתאימים בין הכוונות yes ו-no. הכוונה של yes עוברת לסצנת Fortune, בעוד שהכוונת no עוברת לסצנת המערכת End conversation.

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

  1. לוחצים על פיתוח בסרגל הניווט.
  2. לוחצים על סצנת Again.
  3. לוחצים על + (סימן פלוס) לצד טיפול בכוונת משתמש.
  4. בוחרים באפשרות כן בתפריט הנפתח של כוונת הרכישה.
  5. בתפריט הנפתח מעבר בוחרים באפשרות Fortune.
  6. לוחצים על Save.

c2efba35ea881b0d.png

  1. לוחצים על + (סימן פלוס) לצד טיפול בכוונת משתמש.
  2. בוחרים באפשרות לא מהתפריט הנפתח Intent.
  3. בתפריט הנפתח מעבר בוחרים באפשרות סיום השיחה.
  4. בוחרים באפשרות שליחת הודעות ומוסיפים את הבקשה הבאה בעורך הקוד:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. לוחצים על Save.

בדיקת הסימולטור על הפעולה שלך

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

כדי לבדוק את כוונת המשתמשים: yes:

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעה כן.
  4. לוחצים, מקלידים או אומרים אחת מהאפשרויות.
  5. מקלידים Yes בשדה קלט ומקישים על Enter.

5d0690332efe2e29.png

תקבלו את ההודעה, "במה בחרתם לעזור לכם בקווסט, דרקון, מתרגם או מצפן{3},

כדי לבדוק את כוונת המשתמשים: no:

  1. לוחצים, מקלידים או אומרים אחת מהאפשרויות.
  2. מקלידים No בשדה הקלט ומקישים על Enter.

אתם אמורים לקבל את ההודעה End conversation: &QUOTE; אני מרוצה מהבחירה שלך. בהצלחה בקווסט. להתראות."

4. הוספת נתיב תומך

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

בקטע הזה, אתם מגדירים את הפעולה כך שתבינו מתי משתמש בוחר "magic", "money", "horse" או "phone" והצג בקשה למשתמש לבחור באחת משלוש האפשרויות המקוריות כשהוא בוחר באחת מהאפשרויות האלה. כדי להגדיר את הלוגיקה הזו, צריך ליצור type חדש שיכלול את האפשרויות האלה וגם כוונה חדשה, other_option, שהותאמו כשהמשתמש אומר אחת מהאפשרויות האלה. כמו כן, יש לציין הערות בהדרכות מתוך other_option כוונת הרכישה כדי לזהות ולחלץ פרמטרים של כוונה.

כאשר המנוע לעיבוד שפה טבעית (NLU) של Assistant מזהה התאמה של פרמטר בקלט של המשתמשים, הוא מחלץ את הערך כפרמטר שמוקלד כדי שתוכלו לבצע איתו לוגיקה בסצנה. ב-codelab הזה אתם מגדירים את הפעולה כדי לחלץ את העזרה שהמשתמש בוחר, ומתייחסים לבחירה הזו בהודעה.

יצירת סוג אחד (unavailable_options)

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

כדי ליצור את סוג ה-unavailable_options, צריך לבצע את הפעולות הבאות:

  1. לוחצים על פיתוח בסרגל הניווט.
  2. לוחצים על + (סימן הפלוס) בקטע סוגים.
  3. יש להקליד unavailable_options ולהקיש על Enter.
  4. לוחצים על unavailable_options כדי לפתוח את האפשרויות.
  5. מזינים את הערכים הבאים ואת הערכים שלהם בקטע הוספת ערכים:

horse

horse,‏ stallion,‏ steed

magic

magic,‏ enchanted,‏ spells

money

money,‏ cash,‏ gold

phone

phone,‏ cell,‏ apps

טבלת המפתח/ערך צריכה להיראות כך:

c9e119e0f5fb2a47.png

  1. לוחצים על Save.

יצירת other_option כוונה

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

כדי ליצור ולהגדיר את כוונת הרכישה ב-other_option, יש לבצע את הפעולות הבאות:

  1. לוחצים על + (סימן הפלוס) בקטע אובייקטים מותאמים אישית Intent.
  2. יש להקליד other_option ולהקיש על Enter.
  3. כדי לפתוח את החלון, לוחצים על other_option.
  4. מוסיפים את הביטויים הבאים לאימון ולוחצים על Enter אחרי כל אחד:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. בקטע הוספת פרמטרים של כוונת רכישה, מעדכנים את שם הפרמטר ל-chosenUnavailableOption.
  2. לוחצים על Save.

כשמזינים את ביטויי האימון, הכלי Action Builder מזהה את spells, phone, magic, cash ואת horse מהסוג unavailable_options ומדגיש (מכיל הערות) באופן אוטומטי את המילים. הכלי Action Actions מוסיף באופן אוטומטי פרמטר Intent בקטע הוספת פרמטרים של Intent, כפי שמוצג בתמונה הבאה.

הפרמטר Intent מאפשר לכם לחלץ את שם האפשרות ולהשתמש באפשרות הזו בהודעה.

df61d4489f0910.png

הוספה של כוונת other_option לסצנה אחת (Fortune)

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

כדי להוסיף את כוונות other_option לסצנה Fortune, יש לבצע את הפעולות הבאות:

  1. לוחצים על סצנת מזל.
  2. לוחצים על + (סימן פלוס) לצד טיפול בכוונת משתמש.
  3. בוחרים באפשרות other_option בתפריט הנפתח של Intent.
  4. בוחרים באפשרות שליחת הודעות ומוסיפים את הבקשה הבאה:
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 מתייחס לקלט הגולמי שהמשתמש מציין.

  1. לוחצים על Save.

4bab1efbe21056aa.png

כשמשתמש אומר אפשרות שמופיעה בסוג unavailable_options במהלך הסצנה Fortune, יש התאמה לכוונה של other_option והוספה של בקשה לתור ההודעות. מאחר שלא צוין מעבר, לולאת ביצוע הסצנה נמשכת על ידי הערכה מחדש של שלב התנאים. המשבצת chosenOptions מוסיפה את הבקשה שלה לתור הבקשה, ותור הבקשה מועבר למשתמש.

בדיקת הסימולטור על הפעולה שלך

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

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

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעה כן.
  4. מקלידים magic בשדה קלט ומקישים על Enter.

3a42c33eca435f32.png

ייתכן שתבחינו בכך שהבקשה לא נשמעת נכונה כשהמשתמש בוחר "magic" בזכות הכתבה "a" שהוצגה לפניה. ניתן לטפל בבעיה הזו בקטעים הבאים.

הוספת handler של unavailable_options

כדי למקם את הכתבה "a" לפני האפשרויות המתאימות מסוג unavailable_options, אפשר להגדיר handler של אירוע בלוגיקת המילוי, כדי לבדוק אם האפשרות שהמשתמש בוחר דורשת "a" לפני כן. קודם כול, צריך להגדיר את הפעולה כך שהיא תקרא ל-handler שבמסוף.

כדי להוסיף את ה-handler של unavailable_options, צריך לבצע את הפעולות הבאות:

  1. לוחצים על פיתוח בסרגל הניווט.
  2. לוחצים על סצנת Fortune.
  3. בקטע טיפול בכוונת משתמש, לוחצים על כשנמצא התאמה מסוג other_option כדי לפתוח את החלון.
  4. מנקים את תיבת הסימון שליחת הודעות.
  5. מסמנים את התיבה התקשרות ל-webhook.
  6. מזינים unavailable_options בתיבת הטקסט של הגורם המטפל באירוע.

52a0fba115f1b377.png

  1. לוחצים על שמירה.

עדכון ופריסה של מילוי הזמנות

עכשיו, לאחר שהגדרת את הפעולה כך שתתקשר ל-handler של האירוע unavailable_options, תהיה לך אפשרות לעדכן את ה-handler בעת אספקת ההזמנה ולפרוס אותו.

כדי לעדכן את הגדרות ההזמנות, יש לבצע את השלבים הבאים:

  1. לוחצים על webhook בסרגל הניווט.
  2. מוסיפים את הקוד הבא ל-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);
});
  1. צריך להוסיף את הקוד הבא: const app = conversation();
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. לוחצים על שמירת האספקה.
  2. לוחצים על פריסת אספקה. בסיום הפריסה, ההודעה מעל העורך שלכם תופיע עם ההודעה פריסת הפונקציה ב-Cloud Functions מעודכנת.

הבנת הקוד

הטיפול של unavailable_options:

  • מקבל option נתונים מהאובייקט conv ומקצה את option לנכס original, שהוא הקלט הגולמי של המשתמש.
  • מקצה optionKey לנכס resolved, שהוא המפתח לסוג unavailable_options
  • בודקת אם optionKey היא אחת מהאפשרויות שצריך להשתמש בה &מירכאות;a" אם כן, היא יוצרת את ההודעה עם & "a"
  • הוספת ההודעה דרך conv.add(message)

בדיקת הסימולטור על הפעולה שלך

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

כדי לבדוק את הפעולה שלך:

  1. בסרגל הניווט, לוחצים על בדיקה.
  2. לוחצים או מקלידים Talk to my test app בשדה קלט ומקישים על Enter.
  3. מקלידים Yes בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעה כן.
  4. מקלידים magic בשדה קלט ומקישים על Enter.
  5. מקלידים horse בשדה קלט ומקישים על Enter.

54ee24c5c3c56e.png

הפעולה צריכה להוסיף את המאמר "a" לפני "horse" בעת יצירת ההודעה ללא הבחירה &"a"

מנקים את הפרויקט [מומלץ]

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

  1. כדי למחוק את הפרויקט בענן ואת המשאבים, יש להשלים את השלבים המפורטים בקטע כיבוי (מחיקה) של פרויקטים.
  1. אופציונלי: כדי להסיר באופן מיידי את הפרויקט ממסוף הפעולות, יש לעיין במחיקת פרויקט. אם השלב הזה לא יושלם, הפרויקט יוסר באופן אוטומטי לאחר כ-30 יום.

5. מעולה!

עברת על המיומנויות הביניים הדרושות ליצירת פעולות ב-Google Assistant.

מה כללת

  • איך לפתח פעולות שיחה באמצעות ספריית המילוי של Node.js
  • איך להשתמש במשבצות כדי לאסוף נתונים מהמשתמש
  • איך להשתמש בתנאים כדי להוסיף לוגיקה לסצנה
  • איך להוסיף לולאת משחקים
  • איך מוסיפים נתיב תומך?

מידע נוסף

בקישורים הבאים תמצאו מידע נוסף על יצירת פעולות ב-Google Assistant:

אפשר לעקוב אחר @ActionsOnGoogle ב-Twitter כדי לעקוב אחר ההודעות האחרונות שלנו ולציץ ל- #AoGDevs כדי לשתף את מה שיצרתם.

סקר משוב

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