שאילתה של מסד נתונים

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

הגדרות אישיות של פרויקט

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

  1. לפני שיוצרים את מסד הנתונים, בוחרים את הפרויקט במסוף Google Cloud .

    כניסה לדף לבחירת הפרויקט

  2. מפעילים את Spanner API בפרויקט.

    הפעלת Spanner API

יצירת מכונה של Spanner

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

  1. נכנסים לדף Spanner Instances במסוף Google Cloud .

    כניסה לדף Spanner instances

  2. לוחצים על Create instance.

  3. בשם המכונה, מזינים Tutorial Instance.

  4. מזהה המכונה מוזן אוטומטית על סמך שם המכונה.

  5. בקטע Choose your configuration, משאירים את אפשרות ברירת המחדל Regional ובוחרים את אותו מיקום אזורי שבחרתם כשנוצרה הפונקציה.

  6. בקטע Allocate compute capacity, מזינים 100 יחידות עיבוד. כך תהיה קיבולת מינימלית למדריך.

  7. לוחצים על יצירה. במסוף Google Cloud יוצג הדף Overview של המכונה שיצרתם.

יצירת מסד נתונים ב-Spanner

עכשיו, אחרי שיצרתם מכונה, אתם צריכים ליצור מסד נתונים. כדי ליצור מסד נתונים:

  1. בדף Overview של המכונה, לוחצים על Create database.
  2. בשם מסד הנתונים, מזינים tutorial-database.
  3. בוחרים את הדיאלקט של מסד הנתונים Google Standard SQL.
  4. לוחצים על יצירה. במסוף Google Cloud יוצג הדף Overview של מסד הנתונים שיצרתם.

יצירת טבלה למסד הנתונים

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

  1. בקטע Tables בדף Overview של מסד הנתונים, לוחצים על Create table.
  2. בדף Write DDL statements, מזינים את הפרטים הבאים:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. לוחצים על שליחה. מסוף Google Cloud חוזר לדף Overview של מסד הנתונים, ומוצג בו שמתבצעים Schema updates. מחכים עד שהעדכון יסתיים.

הוספת נתונים לטבלה

עכשיו, כשיש טבלה במסד הנתונים, צריך להוסיף לה נתונים. כדי להוסיף נתונים:

  1. ברשימת הטבלאות בדף Overview של מסד הנתונים, לוחצים על הטבלה Destinations. במסוף Google Cloud מוצג הדף סכימה של טבלת היעדים.
  2. בתפריט הניווט שמימין, לוחצים על נתונים כדי להציג את הדף נתונים בטבלה "יעדים".
  3. לוחצים על הוספה. במסוף Google Cloud מוצג הדף Query של טבלת היעדים, עם כרטיסיית שאילתה חדשה שמכילה הצהרות INSERT ו-SELECT. מחליפים את ההצהרות האלה בהצהרות הבאות:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. לוחצים על Run.

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

עדכון הפונקציה של Cloud Functions כדי לשלוח שאילתות למסד הנתונים

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

אחרי שמגדירים מסד נתונים, מעדכנים את הפונקציה של Cloud Functions כדי להגדיר את משתני הסביבה הנדרשים:

  1. פותחים את דף הסקירה הכללית של Cloud Functions.

    לסקירה הכללית של Cloud Functions

  2. לוחצים על הפונקציה tutorial-telecommunications-webhook כדי לעבור לדף הפרטים שלה.

  3. לוחצים על Edit.

  4. פותחים את הקטע Runtime, build and connections settings.

  5. לוחצים על הכרטיסייה Runtime.

  6. מוסיפים את המשתנים הבאים בקטע Runtime environment variables:

    • ‫PROJECT_ID: מזהה הפרויקט
    • ‫SPANNER_INSTANCE_ID: מזהה המכונה שלכם ב-Spanner (כנראה tutorial-instance)
    • ‫SPANNER_DATABASE_ID: מזהה מסד הנתונים שלכם ב-Spanner (כנראה tutorial-database)
  7. לוחצים על הבא.

  8. לוחצים על Deploy.

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

בדיקת הסוכן

הסוכן מוכן לשימוש. לוחצים על הלחצן Test Agent במסוף Dialogflow כדי לפתוח את הסימולטור. נסו לנהל את השיחה הבאה עם הסוכן:

תור בשיחה את/ה סוכן
1 שלום היי, אני הנציג הווירטואלי של חברת התקשורת. אני יכול לעזור לך לפתור בעיות בחיוב ובתוכנית, לפתור בעיות ולהוסיף תוכניות נסיעות ושיט. איך אוכל לעזור לך היום?
2 אני רוצה להוסיף תוכנית לשיט אני אבדוק את זה בשבילך. מה מספר הטלפון שלך שרשום אצלנו?
3 123-123-1234 כמה ימים נמשכת ההפלגה?
4 7 אפשרות 1 כוללת שיחות והודעות טקסט. העלות היא $[XX] ליום. מידע נוסף זמין כאן [URL]. אפשרות 2 כוללת שיחות, הודעות טקסט וחבילת גלישה. העלות היא $[XX] ליום. מידע נוסף זמין כאן [URL]. איזו תוכנית שיט ברצונך להוסיף?
5 אפשרות 1 הבנתי. הוספתי את התוכנית הזו לחשבון שלך. במהלך השיט, יכול להיות שתצטרכו גם כיסוי ביבשה. באיזה נמל תעצרו?
6 איטליה כמה ימים תהיו שם?
7 3 חדשות טובות! באיטליה יש כיסוי חינמי ביבשה. הכול מוכן. יש משהו נוסף שאוכל לעזור לך בו היום?

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

פתרון בעיות

הקוד של ה-webhook כולל פקודות רישום ביומן. אם נתקלתם בבעיות, נסו לצפות ביומנים של הפונקציה של Cloud Functions.

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

מידע נוסף

למידע נוסף על השלבים שלמעלה, אפשר לעיין במאמרים הבאים: