יצירת סוכן RBM המופעל ב-Dialogflow (מתקדם)

בשיעור ה-Codelab הזה תלמדו איך להשתמש ב-Dialogflow כדי ליצור ממשק שיחה כדי להפעיל את הנציג של RBM.

מה אתם מתכננים ליצור במעבדה הזו?

  • סוכן של Dialogflow שמריץ את השיחה של סוכן RBM
  • ממשק שיחה עבור חנות אופניים בדיונית. באמצעותו המשתמשים יכולים לדעת פרטים על חנות האופניים ולקבוע פגישות או ערכות לתיקון האופניים שלהם.

מה לומדים היום

  • איך להשתמש בשלושה מבני המפתח של Dialogflow&#39 (הכוונה, הישויות וההקשרים) ליצירת ממשק שיחה
  • איך לחבר את ממשק הדיבור לשירותים ולממשקי API משלכם באמצעות מילוי הזמנות ו-Dialog מהעורך (מופעל באמצעות Cloud Functions for Firebase)
  • איך יוצרים סוגי תשובות ב-RBM מ-Dialogflow כדי ליצור חוויית RBM עשירה למשתמשים

הפריטים שלהם תזדקק

  • חשבון Google

אפשר ליצור קשר עם הנציג הראשון ולשלוח לו שאילתות

משך: 10:00

יצירת הנציג הראשון שלך ב-Dialogflow

כדי ליצור סוכן של Dialogflow:

  1. פותחים כרטיסייה חדשה ונכנסים לחשבון ב-Dialogflow.
  2. בתפריט הניווט הימני לוחצים על יצירת סוכן.

  3. כותבים "CodelabRBMBikeShop&PLURAL; לשם השם של הסוכן, "אנגלית" ושפת ברירת המחדל, ומגדירים את אזור הזמן שמוגדר כברירת מחדל לאזור הזמן. לאחר מכן, לוחצים על יצירה.

מסוף Dialogflow

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

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

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

שליחת שאילתה לנציג התמיכה

סוכני Dialogflow מתוארים בצורה הטובה ביותר כמודולים של NLU (שפה טבעית). הבקשות האלה יכולות לכלול באפליקציה, במוצר או בשירות שלכם כדי להפוך בקשות טבעיות של משתמשים לנתונים מעשיים.

הגיע הזמן לנסות את הנציג! בסימולטור שמשמאל, לוחצים בשדה הטקסט Try it now, מקלידים "Hi" ומקישים על Enter.

Dialogflow מזהה את השאילתה, תואם את כוונת הפתיחה המוגדרת כברירת מחדל, ומגיב עם הודעת פתיחה כללית. אפשרות זו פועלת כי Dialogflow מאמן באופן אוטומטי את כוונות הפתיחה המוגדרות כברירת מחדל עם כמה הודעות פתיחה לדוגמה.

יצירת סוכן RBM

נכנסים ל-Business Communications Developer Console ולוחצים על CreateAgent (יצירת סוכן).

בשדה Name (שם), מזינים "Your Name’s Bike Shop" (כמו "Sean’s Bike Agent"), בוחרים אזור ולוחצים על יצירת סוכן.

חיבור סוכן RBM ל-Dialogflow

אחרי שיוצרים את הנציג ב-RBM, לוחצים על הנציג כדי לראות את הדף Overview של הנציג. לוחצים על הקישור שילובים בתפריט הניווט הימני.

כברירת מחדל, נציג של RBM משתמש ב-Google Cloud Pub/Sub כדי לטפל בהודעות של משתמשים. כדי לחבר את הנציג ל-RBM לנציג של Dialogflow שיצרתם קודם, לוחצים על השילוב של Dialogflow.

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

לבסוף, צריך לספק את מזהה הפרויקט ב-Dialogflow. בכרטיסייה אחרת בדפדפן ולא ב-Business Communications Developer Console, נכנסים ל-Dialogflow ופותחים את סוכן CodelabRBMBikeShop שיצרתם קודם. בתפריט הניווט שמימין, לוחצים על סמל גלגל השיניים שליד שם הפרויקט.

לחיצה על פעולה זו תעביר אותך להגדרות המודל. בקטע פרויקט Google,מאתרים את מזהה הפרויקט ומעתיקים אותו.

חוזרים לכרטיסייה הפתוחה של Business Communications Developer Console, מדביקים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על התחלת השילוב.

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

כל ההודעות אל הנציג וממנו מטופלים עכשיו על ידי סוכן CodelabRBMBikeShop Dialogflow.

הזמנת המכשיר לבדיקה ושליחת הודעה

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

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

ההזמנה תישלח למכשיר שלכם. מקישים על אני רוצה להיות בודק.

מאתרים את המכשיר ברשימת המכשירים ושולחים לו הודעת בדיקה. אם קיבלתם הודעה במכשיר מנציג RBM, הכול מוכן כדי להמשיך בתהליך ה-Codelab הזה.

יצירת כוונת הפתיחה שלך

בדרך כלל, עם סוכן RBM המופעל על ידי Dialogflow, כדי להתחיל שיחה אתם מבצעים קריאת API המציינת את מספר הטלפון של המשתמש ואת הכוונה של Dialogflow שמתחילה את השיחה (בדרך כלל כוונת הפתיחה של הסוכן שלכם). במסגרת ה-Codelab הזה, נדלג על השלב הזה. במקום זאת, נשתמש בשרשור השיחה שכבר יצרנו בשלב הקודם עם מכשיר הבדיקה ממסוף המפתחים של התקשורת העסקית. עם זאת, אם תרצו לקרוא עוד על תכונת ה-API, מומלץ לעיין במדריך הזה.

נתחיל בהוספת תגובות RBM לכוונת הפתיחה המוגדרת כברירת מחדל כדי ש-Dialogflow יוכל להשתמש בה עם סוכן RBM. קודם כל, עוברים לכרטיסייה של הדפדפן ש-Dialogflow פתוח בה. לוחצים על ברירת מחדל של כוונת רכישה, גוללים למטה לקטע תגובות, לוחצים על + ברשימת סוגי התגובות ובוחרים באפשרות העברת הודעות עסקיות ב-RCS (RBM).

לוחצים על הוספת תגובות ובוחרים באפשרות תשובה פשוטה. בשדה הטקסט של תגובה פשוטה, מזינים Enter"שלום, אנחנו שמחים שהצטרפת לחנות האופניים של הוגרת. איך אוכל לעזור? (יש להחליף את 'הגראז'' בשמכם), ולאחר מכן ללחוץ על שמירה.

התחלת שיחה

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

עדכון כוונת הפתיחה

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

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

בקטע ברירת מחדל של כוונת רכישה', בקטע תגובות, בוחרים בכרטיסייה העברת הודעות עסקיות (RBM). אתם יכולים להסיר את התשובה הפשוטה הקיימת על ידי לחיצה על סמל פח האשפה. לאחר מכן, לוחצים על Add Responses (בחירת תשובות) ובוחרים באפשרות Stedalone Rich Card (כרטיס מידע מתקדם).

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

  • כותרת הכרטיס: שלום, אנחנו שמחים שהצטרפת לחנות האופניים של הוגארט.
  • תיאור הכרטיס: איך אוכל לעזור לך? בוחרים באחת מהאפשרויות הבאות:
  • בחר כיוון הכרטיס: אנכי
  • כתובת URL של תמונה/סרטון: https://storage.googleapis.com/df-rbm-codelab/bike-shop.jpg
  • בחירת גובה המדיה: בינונית

לוחצים על הוספת הצעה ומזינים את הפרטים הבאים:

  • טקסט של הצעה: מהן שעות הפתיחה?
  • הצעה לדיווח חוזר על המרה: response_hours

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

  • הטקסט של ההצעה: קביעת פגישה
  • הצעה לדיווח חוזר על המרה: response_appointment

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

כדאי לנסות!

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

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

שנפתור את זה?

יצירת כוונת שעות הפעילות

Dialogflow משתמש בכוונות כדי לסווג את הכוונות של המשתמש. אובייקטים של Intent כוללים ביטויים לאימון, שהם דוגמאות של מה שהמשתמש עשוי לומר לנציג שלכם. לדוגמה, מישהו שרוצה לדעת את שעות הפתיחה של חנות האופניים שלנו עשוי לשאול, &quot, מתי אתם פותחים, "What hours are?" או &"How later I get in?".

כל השאילתות האלה הן ייחודיות אך הכוונה שלהן זהה: כדי לקבל מידע כשחנות האופניים פתוחה.

כדי לכלול את השאילתה הזו, יוצרים "Hours"Intent:

  1. בתפריט הניווט הימני, לוחצים על + לצד אובייקטים של Intent.
  2. בשדה Intent name, מזינים "Hours".
  3. בקטע הסברים לאימון, לוחצים על הוספת ביטוי משתמש ומזינים את הטקסט הבא, מקישים על Enter אחרי כל ערך:

    • When do you open?
    • What are your hours?
    • How late can I come in?
    • reply_hours.

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

  4. בקטע תגובות, לוחצים על + ובוחרים באפשרות העברת הודעות עסקיות ב-RCS (RBM).

  5. לוחצים על הוספת תגובות ובוחרים באפשרות תשובה פשוטה.

  6. בשדה הטקסט של תגובה פשוטה, מזינים "אנחנו'אנחנו פתוחים בכל יום חול מ-9:00 עד 17:30."

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

כדאי לנסות!

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

הנציג יגיב עכשיו לשאילתה בצורה נכונה. חשוב לזכור שאף על פי שהשאילתה שלכם הייתה שונה מעט מהביטוי לביטוי ("מתי אתם פותחים את המירכאות; לעומת לעומת; "מתי אתם פותחים את המירכאות); Dialogflow עדיין הותאם לשאילתה כמו שצריך. אפשר גם להקיש על מהן שעות הפעילות? בכרטיס הצ'אט האינטראקטיבי.

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

הוספת מילוי הזמנה

כשנראה שהנציג שיצרנו פועל באופן לא טבעי. כשהמשתמש ישאל משהו כמו "You Open openquot;, הסוכן ישיב עם "אנחנו פתוחים בכל יום חול מ-9:00 עד 17:30" אם הנציג היה אומר לנו ישירות אם החנות פתוחה, זה יהיה טבעי יותר.

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

תגובה לפעולה מאתר אחר (webhook) היא שרת HTTP שנקרא על ידי Dialogflow ומכיל מידע על מצב השיחה הנוכחי. הקוד למילוי הזמנות מבצע את הפעולות הנדרשות, ואז יוצר תגובה ש-Dialogflow חוזר למשתמש.

עכשיו נתחיל בתהליך פריסת תגובה לפעולה מאתר אחר (webhook) שממלא את תפקיד הנציג בצורה יעילה יותר.

הגדרה: פריסה והפעלה של מילוי הזמנה

ל-Dialogflow יש עורך Cloud Functions for Firebase מובנה שמאפשר לכתוב ולפרוס קוד JavaScript שיטפל בבקשה שלכם.

בחלונית הניווט הימנית של Dialogflow, לוחצים על מילוי הזמנות כדי לפתוח את הדף למילוי הזמנות. לוחצים על לחצן החלפת המצב לצד Inline Editor כדי להפעיל את הפונקציות ב-Cloud Functions for Firebase.

שימו לב שהעורך מכיל שני קבצים: "index.js", שמכיל את הקוד הראשי למילוי הזמנות, ו- "package.json", ומפורטים בו דרישות תלות.

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

מעתיקים ומדביקים את הטקסט בקובץ הזה ב-"index.js" ומחליפים את כל התוכן הנוכחי:

https://storage.googleapis.com/df-rbm-codelab/index.js

עכשיו, גוללים לחלק התחתון של הדף ולוחצים על הסרה. לאחר כדקה, הקוד שלכם ייפרס ב-Cloud Functions for Firebase.

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

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

function hoursHandler(agent) {
    let responseText = 'We\'re currently closed, but we open every weekday at 9am!';
    if (currentlyOpen()) {
      responseText = 'We\'re open now!! We close at 5pm today.';
    }

    let payload = {
    "fulfillmentMessages": [
        {
          "platform": "GOOGLE_RBM",
          "rbmText": {
              "text": responseText
          }
        }
      ]
    };

    return response.status(200).json(payload);
}

השורה intentMap.set('Hours', hoursHandler); אומרת לספריית האספקה שהפונקציה hoursHandler צריכה לפעול כשההתאמה של "Hours" מתאימה. עם זאת, אנחנו צריכים גם לומר ל-Dialogflow להפעיל מילוי הזמנות של ה "Hours"

בחלונית הניווט הימנית, לוחצים על Intents ופותחים את הכוונה (Hours"Hour); פותחים את הקטע מילוי בחלק התחתון ובוחרים באפשרות הפעלת ה-webhook הזה לכוונה הזו, כדי להפעיל אותו.

אחרי ששומרים את הכוונה, אפשר לנסות אותה. בסימולטור שמשמאל, מזינים "Is you open?". אם תלחצו על פרטי אבחון ותבדקו את התגובה ל-API, אתם אמורים לראות את התגובה למילוי ההזמנה. שימו לב שאזור הזמן המשמש את השרת של הפונקציות ב-Cloud Functions יהיה UTC, לכן ייתכן שהתשובה לא תהיה נכונה בזמן המקומי שלכם.

אם קיימת שגיאה במילוי ההזמנה, מערכת Dialogflow משתמשת בחלק מהתשובות שבחרתם בקטע תגובות בדף Intent, כדי שהנציג יוכל להתאושש.

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

חילוץ נתונים עם ישויות

משך: 12:00

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

הוספת פרמטרים לכוונות

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

  1. לוחצים על + לצד Intents בתפריט הניווט הימני כדי ליצור כוונה חדשה.
  2. בחלק העליון של הדף, מזינים את השם של מילת המפתח "קביעת פגישה&quot.
  3. מוסיפים את הביטויים הבאים כביטויי אימון:
    • reply_appointment
    • I'd like to schedule an appointment for next Thursday
    • I'd like to get my bike fixed, I have a mountain bike that needs servicing
    • My bike is broken
    • Can I schedule service for 4pm tomorrow?
    • Can you fix my road bike?
    • Can I set up an appointment for noon on Friday?

התכונה Dialogflow מזהה באופן אוטומטי פרמטרים ידועים בביטויים לביטויים ויוצרת אותם בשבילכם.

מתחת לביטויי אימון, Dialogflow ממלאת באופן אוטומטי את טבלת הפרמטרים במידע שהיא אוספת:

  • הפרמטר הוא אופציונלי (לא נדרש)
  • בשם date (תאריך) ו-time (זמן)
  • תואם לסוג ישות המערכת @sys.date ו-@sys.time**
  • יש לו ערך של $date ו-$time
  • אינה רשימה

שימוש בנתוני פרמטרים

אתם יכולים להשתמש בערך של פרמטר בתשובות שלכם. במקרה כזה, תוכלו להשתמש ב-$date וב-$time בתשובות שלכם, והן יוחלפו בתאריך ובשעה שצוינו בשאילתה לנציג.

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

Great! I've set up your appointment for $date at $time.  See you then!

כדאי לנסות!

עכשיו שואלים את הנציג באמצעות הנציג &quot, האם אפשר לקבוע פגישה מחר בשעה 14:00; בסימולטור בחלונית השמאלית.

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

הגדרת הפרמטרים הנדרשים

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

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

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

אחרי שמזינים את ההנחיות, לוחצים על שמירה.

כדאי לנסות!

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

בקשות הכוללות מידע מסוים בבקשה הראשונית (כלומר, &ציטוט; אני רוצה לקבוע פגישה למחר"), ממלאות את הפרמטר הנכון (התאריך), מדלגים על בקשת התאריך ("באיזה יום רוצים להגיע In?&quot), ועוברים לבקשת הזמן ("איזו שעה מתאימה לך").

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

הגדרה: הפעלת מילוי הזמנות

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

בשני המקרים האלה כששני הגורמים האלה מופעלים, מערכת Dialogflow משתמשת במילוי הזמנות כדי ליצור תשובות לפרמטרים הנדרשים, לפי הצורך, וגם בתגובה ל-RBM של הכוונה.

הטמעת מילוי הזמנה

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

intentMap.set('Hours', hoursHandler);

ומוסיפים את השורה הבאה:

intentMap.set('Make Appointment', makeAppointment);

הקוד הזה מורה לספריית האספקה שהפונקציה makeAppointment צריכה לפעול כשההתאמה של "Make Appointment" מתבצעת.

בשלב הבא צריך להעתיק את הקוד שבהמשך ולהדביק אותו מתחת לפונקציה currentlyOpen. שתי הפונקציות, getSuggestedTimes ו-getSuggestedDates, יוצרות רשימות צ'יפים מועילות שעוזרות למשתמשים להגיב.

function getSuggestedTimes() {
  return [
        {
          "reply": {
            "text": "9 am",
            "postbackData": "9:00am"
            }
        },
        {
          "reply": {
            "text": "10 am",
            "postbackData": "10:00am"
          }
        },
        {
          "reply": {
            "text": "1 pm",
            "postbackData": "1:00pm"
          }
        },
        {
          "reply": {
            "text": "2 pm",
            "postbackData": "2:00pm"
          }
        }
      ];
}

function getSuggestedDates() {
  return [
        {
          "reply": {
            "text": "Tomorrow",
            "postbackData": "Tomorrow"
          }
        },
        {
          "reply": {
            "text": "A week from now",
            "postbackData": "A week from now"
          }
        },
        {
          "reply": {
            "text": "Two weeks from now",
            "postbackData": "Two weeks from now"
          }
        }
      ];
}

לאחר מכן, מתחת ל-hoursHandler, מעתיקים את הקוד ומדביקים אותו למטה, ואז לוחצים על פריסה.

function makeAppointment(agent) {
    // extract required parameters
    const appointmentDate = agent.parameters.date;
    const appointmentTime = agent.parameters.time;

    const gotAppointmentDate = appointmentDate.length > 0;
    const gotAppointmentTime = appointmentTime.length > 0;

    let responseText = '';
    let suggestions = [];

    if(gotAppointmentDate && gotAppointmentTime) {
      // We have all required parameters, return success message
      responseText = 'Great! I\'ve set up your appointment for ' +
          appointmentDate + ' at ' + appointmentTime + '.  See you then!';
    }
    else if(gotAppointmentDate) {
      responseText = 'What time works for you?';
      suggestions = getSuggestedTimes();
    }
    else if(gotAppointmentTime) {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }
    else {
      responseText = 'What day do you want to come in?';
      suggestions = getSuggestedDates();
    }

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText,
          "rbmSuggestion": suggestions
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

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

כדאי לנסות!

במכשיר, מקישים על ההצעה קביעת פגישה או מקלידים "אני רוצה לתקן את האופניים." תקבלו את התגובה '&מירכאות; ובאיזה יום אתם רוצים לקבל אותה, ציינו תאריך ("מחר" ) ו'תחזרו להגיב לזמן. אם תענו על השאלה הזו, הפגישה תתחיל.

ניהול מדינה עם הקשרים

משך: 7:00

הוספת הקשרים למצב שיחה

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

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

responseText = 'Great! I\'ve set up your appointment for ' +
    appointmentDate + ' at ' + appointmentTime + '.  Do you need a repair for just a tune-up?';

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

כוונות מעקב הן כוונות שניתן להתאים רק לאחר ההתאמה של &מירכאות&parent" במקרה זה, (אם במקרה שלנו הותאמו &"Make Appointment"Intent). לוחצים על Intents בתפריט הניווט הימני (אם התפריט מוסתר, לוחצים על לחצן התפריט ☰ בפינה הימנית העליונה). לאחר מכן מעבירים את העכבר מעל לכוונת ה-&quot&ו-A"ומגדירים את כוונת הרכישה ולוחצים על AddIntent follow-up (הוספת כוונת מעקב), שמופיעה משמאל לשם של הכוונה:

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

Dialogflow נותן שם אוטומטי לכוונת ההמשך "קביעת פגישה – בהתאמה אישית," והחץ מציין את הקשר בין כוונות.

ניתן להתאים כוונות מעקב רק לאחר התאמה של כוונת ההורה. מאחר

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

יצירת הישות הראשונה

Dialogflow מאפשר להגדיר יישויות פיתוח, שמתפקדות באופן דומה לישויות מערכת ב-Dialogflow&#39. נתחיל ביצירת סוג ישות. אנחנו רוצים שהמשתמשים יוכלו לבחור את סוג הפגישה שהם רוצים לקבוע יחד עם החנות שלנו, ולכן אפשר להתקשר לסוג הישות AppointmentType. אנחנו נוסיף שתי ישויות בסוג הישות AppointmentType עבור שני סוגי הפגישות: service ו-fix.

כדי ליצור סוג ישות:

  1. לוחצים על + לצד ישויות בתפריט הניווט הימני.
  2. בשם של סוג הישות, יש להזין "AppointmentType".
  3. לוחצים על שדה הטקסט ומוסיפים את הערכים הבאים:
    • שירות
    • תיקון
  4. בעת הזנת ערך, לחיצה על Tab מעבירה את הסמן לשדה המילה הנרדפת. מומלץ להוסיף את המילים הנרדפות הבאות לכל רשומה. הקפידו להוסיף כל אחת מהמילים בנפרד, במקום להעתיק ולהדביק את כל המחרוזת:
כניסה מילה נרדפת
שירות
  • שירות
  • שיפוץ כללי
  • תחזוקה
  • כוונון
  • כוונון
תיקון
  • תיקון
  • תיקון
  • תיקון
  • שבור
  • צמיג שטוח
  • קבוע
  1. לוחצים על שמירה.

כל סוג ישות צריך לכלול את הדברים הבאים:

  • שם להגדרת הקטגוריה ("AppointmentType")
  • ערך אחד או יותר ("service", "fix")
  • מילה נרדפת אחת או יותר ("תחזוקה&&;, "כוונון עד" וכו')

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

מתבצעת הוספה של הישות החדשה שלך

כעת, לאחר שהגדרנו את סוג הישות שלנו לקביעת פגישות, נוכל להשתמש בו בביטויי האימון של ה&מירכאות; 'קביעת פגישה – התאמה אישית;

  1. לוחצים על Intents בתפריט הניווט הימני, ולאחר מכן לוחצים על החץ לצד האפשרות "Make Appointment"Intent כדי לחשוף את כוונות המעקב שלו. לוחצים על ' "Make Appointment - custom" .
  2. יש להוסיף את הביטויים הבאים כביטויי הדרכה:

    • האם אפשר לקבל שירות לאופניים?
    • אני רוצה תיקון.

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

  4. לוחצים על הגדרת הודעות ומזינים את הכתובת &מירכאות. אנחנו יכולים לתקן או לתקן את האופניים. איזו אפשרות ברצונך?

  5. בקטע תגובות, משנים את התגובה ל-"וכן, אנחנו מתזמנים $AppointmentType." ואז לוחצים על שמירה.

כדאי לנסות!

במכשיר, מקישים על ההצעה קביעת פגישה או מקלידים "אני רוצה לתקן את האופניים." תקבלו את התגובה '&מירכאות; ובאיזה יום אתם רוצים לקבל אותה, ציינו תאריך ("מחר" ) ואתם מקבלים תגובה ומבקשים לקבוע תאריך ושעה.

אתם יכולים לבחור שעה, ורואים את התשובה החדשה שיצרתם כדי לברר אם הבעיה קשורה לשירות או לכוונון.

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

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

כוונות והקשרים

כדי לענות באמצעות פרמטר שנאסף מ-"Make Appointment", צריך לדעת איך פועלים כוונות מעקב. כוונות מעקב משתמשות בהקשרים כדי לעקוב אם כוונת הורה הופעלה. אם תבדקו את ה-"Make Appointment" אתם תראו את הכיתוב "MakeAppointment-trackingup" כהקשר של פלט, ולפניו יופיע המספר 2:

אחרי ההתאמה של '&קביעת פגישה'; ניתן להיעזר ב-Dialogflow כדי לצרף את ההקשר "MakeAppointment-Followup" לשיחה בשתי פניות. לכן, כשהמשתמש מגיב לשאלה ("מצריך תיקון או רק תיקון,) ההקשר "MakeAppointment-Followup" פעיל. אובייקטים עם אותו הקשר להזנת קלט מקבלים עדיפות גבוהה כאשר Dialogflow מתאים לכוונות.

לוחצים על Intents בתפריט הניווט הימני, ולאחר מכן לוחצים על "MakeAppointment - custom"Intent.

אפשר לראות שההקשר הזה של הכוונה זהה ("MakeAppointment- מעקב וציטוט);) ההקשר של הפלט של "Make Appointment". לכן, "MakeAppointment - custom" תואם רק לאחר ההתאמה של "Make Appointment" .

הקשרים ופרמטרים

הקשרים שומרים את ערכי הפרמטרים, כלומר אפשר לגשת לערכים של הפרמטרים המוגדרים ב-"Make Appointment" Intent בכוונות אחרות, כמו "MakeAppointment - custom".

מוסיפים את התגובה הבאה ל- "MakeAppointment - custom"Intent ולוחצים על Save: " OK, אנחנו נקבע את $AppointmentType, #MakeAppointment- Followup.date, בכתובת #MakeAppointment-trackingup.time. נתראה כאן."

עכשיו אפשר לשאול שוב את הנציג ולקבל את התגובה המתאימה. תחילה מזינים &"האם אפשר לקבוע פגישה לשירות האופניים שלי בשעה 11:00 מחר", ואז להשיב לשאלה עם "אני צריך תיקון".

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

שיפור פורמט התגובה

משך: 5:00

כשמשתמשים בפורמט של מילוי הזמנה, אפשר להזין תאריך ושעה

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

כדי לעבור ל "Make Appointment - custom" , לוחצים על Intents בתפריט הניווט הימני, ולאחר מכן לוחצים על "MakeAppointment - custom"Intent. גוללים לתחתית הדף ומפעילים את האפשרות הפעלה של שיחת webhook למטרה הזו. לאחר מכן לוחצים על שמירה.

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

function makeAppointmentFollowUp(agent) {
    let context = agent.getContext('makeappointment-followup');

    // extract required parameters
    const appointmentDate = new Date(context.parameters.date);
    const appointmentTime = new Date(context.parameters.time);
    const appointmentType = agent.parameters.AppointmentType;

    // format date and time to be human-readable
    const dateAsString = appointmentDate.toLocaleDateString('en-US',
        { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
    const timeAsString = appointmentTime.toLocaleString('en-US',
        { hour: 'numeric', minute: 'numeric', hour12: true });

    // compose response for user
    let responseText = 'Okay, we'll schedule a ' + appointmentType + ', ' + dateAsString +
        ', at ' + timeAsString + '.  We'll see you then.';

    let payload = {
      "fulfillmentMessages": [
      {
        "platform": "GOOGLE_RBM",
        "rbmText": {
          "text": responseText
        }
      }
    ]
    };

    return response.status(200).json(payload);
  }

מתחת לפונקציה הזו, מחפשים את השורה intentMap.set('Make appointment', makeAppointment); ומוסיפים את intentMap.set('Make appointment - custom', makeAppointmentFollowUp);, כך שכאשר כוונת המעקב מופעלת, מופעלת הפונקציה שהודבקה קודם.

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

כדאי לנסות!

במכשיר, מקישים על ההצעה קביעת פגישה או מקלידים "אני רוצה לתקן את האופניים." תקבלו את התגובה '&מירכאות; ובאיזה יום אתם רוצים לקבל אותה, ציינו תאריך ("מחר" ) ואתם מקבלים תגובה ומבקשים לקבוע תאריך ושעה.

אתם יכולים לבחור שעה, ורואים את התשובה החדשה שיצרתם כדי לברר אם הבעיה קשורה לשירות או לכוונון.

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

סיימתם!

משך: 1:00

נהדר,

סיימתם את כל השלבים של בניית סוכן RBM המופעל על ידי Dialogflow.

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