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

כרגע, ה-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. בקטע הקצאת קיבולת מחשוב, מזינים 100 יחידות עיבוד. התפוסה המינימלית הזו מספיקה כדי לבצע את המדריך.

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

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

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

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

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

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

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

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

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

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

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

    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.

    כניסה לדף Overview של Cloud Functions

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

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

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה זמן ריצה.

  6. מוסיפים את המשתנים הבאים בקטע Runtime environment variables (משתני סביבה של זמן ריצה):

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

  8. לוחצים על פריסה.

  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 Function.

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

מידע נוסף

מידע נוסף על השלבים שלמעלה: