העברת אספקה

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

לשקול את הגישה שלכם למילוי הזמנות

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

  • שינויים בהטמעת השיחות

    • ב-Dialogflow נעשה שימוש בזרימה של שיחה עם כוונה לכוונה ומבוססת-הקשר, שבה כוונות אישיות מותאמות על סמך ביטויי אימון והקשרי קלט/פלט של הכוונה הקודמת.
    • בתהליך השיחה ב-Actions Builder משתמשים בסצנות בתור מאגר ליצירת פניות בשיחות. בסצנה, ניתן להתאים כוונות ספציפיות, בדומה להקשר של Dialogflow. מעברים מגדירים את הסצנה שאליה לעבור, על סמך הכוונה המתאימה.
  • פונקציות של תגובה לפעולה מאתר אחר (webhook) רב-פעמיים

    • ב-Dialogflow, רכיבי handler של תגובה לפעולה מאתר אחר (webhook) מקושרים לאובייקטים ספציפיים מסוג Intent. אם יש צורך בלוגיקה נוספת, צריך ליצור אובייקט Intent נפרד כדי לטפל בפונקציה החדשה.
    • לרכיבי handler של Webhook יש שמות handler מותאמים אישית ב-Actions Builder. התכונה הזו מאפשרת לקרוא לפונקציה במספר סצנות לאורך הפרויקט.
  • דרכים נוספות להפעלה של webhooks

    • בגישה אחת של תגובה לפעולה מאתר אחר (webhook) לכל כוונה ב-Dialogflow, נדרשות אובייקטים נוספים של Intent, שיאפשרו לשפר את ההיגיון של השיחה במסגרת מימוש הפרויקט.
    • באמצעות Action Builder אפשר לבצע קריאות לפעולה מאתר אחר (webhook) מכמה מקומות בסצנה: בכניסה, על סמך תנאים, על סמך מילוי משבצת הזמן, ועל סמך התאמת Intent בהתאמה אישית ובהתאמה אישית של המערכת.

עדכון קוד מילוי ההזמנה

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

  1. מורידים ומתקינים את הגרסה האחרונה של ספריית הלקוח.

    npm install @assistant/conversation
    
  2. מעדכנים את ההצהרות require בקוד. לדוגמה:

    const {
      SimpleResponse,
      BasicCard,
      Image,
    } = require('actions-on-google');
    

    הקוד שלמעלה מתעדכן באופן הבא:

    const {
      conversation,
      Simple,
      Card,
      Image,
    } = require('@assistant/conversation');
    
  3. כדי להשתמש בשיטות החדשות, צריך לסדר מחדש את הקוד.

    • רכיבי handler של Intent: app.intentapp.handle
    • תשובה/הודעה: conv.askconv.add
    • יכולות של פלטפורמה/מכשיר: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • אחסון הנתונים: conv.dataconv.session.params
    • סוגי תגובה:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • פרמטרים של Intent: conv.parameters[KEY]conv.intent.parameters[KEY].resolved

    • הקשרים/מעברי סצנות: conv.contexts.set(content_name, 5);conv.scene.next.name = 'context_name'

    • סיום השיחה: conv.close(response)conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'

  4. עדכון קוד התגובה כדי להשתמש בפרימיטיבים החדשים לתשובות של Builder. לדוגמה:

    conv.ask(new Suggestions (['a', 'b']));
    

    הקוד שלמעלה מתעדכן באופן הבא:

    for (suggestion of ['a', 'b']) {
      conv.add.(new Suggestion({title: suggestion}))
    }
    

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

אפשר להשתמש בדפים הבאים כדי להשוות בין מטענים ייעודיים (payloads) של בקשות ושל תגובות:

הגדרת webhooks

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

ב-Dialogflow, תגובות לפעולה מאתר אחר (webhook) מופעלות באובייקטים מסוג Intent, וקוד מילוי הבקשה כולל רכיבי handler ופונקציות להפעלה, כשיש התאמה ל-Intent. ב-Actions Builder, תגובה לפעולה מאתר אחר (webhook) יכולה לפעול בסצנות או אובייקטים של הפעלה, ששולחת בקשה לנקודת הקצה של מילוי הבקשה. מילוי הבקשה שלך כולל רכיבי handler של webhook שמעבדים את המטען הייעודי (payload) של JSON בבקשה. אפשר להפעיל webhooks במצבים הבאים:

  • אחרי התאמת ה-Intent להפעלה
  • בזמן שסצנה בכניסה לבמה
  • אחרי שתנאי מסוים מקבל את הערך True בשלב התנאי של הסצנה
  • במהלך שלב ההגשה של משבצת הזמן של הסצנה
  • אחרי שהתאמת Intent מתרחשת בשלב הקלט של הסצנה

כשעוברים מ-Dialogflow ל-Actions Builder, צריך להביא בחשבון שינויים בזרימת השיחה, כי הם עשויים להשתנות מתי ואיפה מבצעים קריאות לפעולה מאתר אחר (webhook).

כך מפעילים קריאה לפעולה מאתר אחר (webhook):

  1. בוחרים את הסצנה שממנה רוצים להפעיל את התגובה לפעולה מאתר אחר (webhook).
  2. בוחרים את המצב שעבורו רוצים להפעיל את ה-webhook. אפשר להפעיל תגובה לפעולה מאתר אחר (webhook) באחד או יותר מהמצבים הבאים:

    • בכניסה
    • תנאי
    • מילוי יחידת קיבולת (Slot)
    • טיפול בכוונת המשתמש
    • טיפול ב-Intent של המערכת
  3. מסמנים את האפשרות Call your webhook.

  4. צריך להזין את ה-handler של תגובה לפעולה מאתר אחר (webhook) שהגדרת בקוד מילוי ההזמנה.

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

  6. אפשר לעבור אל בדיקה כדי לנסות את השינויים בקריאה לפעולה מאתר אחר (webhook) ובמילוי ההזמנה.

מפה לתרגום של קוד אספקה

בטבלה הבאה אפשר לראות איך התחביר של קוד מילוי הבקשה ב-Dialogflow מתורגם לקוד של Actions Builder. הרשימה המלאה של השיטות מופיעה במסמכי העזר של Actions Builder ו-SDK.

Dialogflow בונה פעולות
conv.data conv.session.params
conv.ask conv.add
conv.close conv.scene.next.name = 'actions.scene.END_CONVERSATION'
conv.user.storage conv.user.params
conv.input.raw conv.intent.query
conv.parameters conv.intent.params[key].resolved
conv.arguments.get('MEDIA_STATUS')
mediaStatus.status==='FINISHED'
conv.intent.params['MEDIA_STATUS']
mediaStatus.resolved==='FINISHED'
אירועים טיפול ב-Intent של המערכת:
MEDIA_STATUS_FINISHED
MEDIA_STATUS_FAILED
conv.device.capabilities.has("actions.capability.SCREEN_OUTPUT") conv.device.capabilities.includes("RICH_RESPONSE")
app.intent app.handler
app.middleware app.middleware
תשובה פשוטה prompt -firstSimple
תשובה עשירה prompt -content -card: object -image: object -table: object -media: object -suggestions -link

מידע על כלים נוספים זמין בהמשך: