כרגע, ה-webhook משתמש בנתונים שמוגדרים בקוד בפונקציה cruisePlanCoverage.
בשלב הזה של המדריך, תיצרו מסד נתונים של Spanner, תאכלסו אותו ביעדים הכלולים ותעדכנו את הפונקציה כדי להריץ שאילתות במסד הנתונים.
הגדרות אישיות של פרויקט
חשוב שהסוכן שלכם ב-Dialogflow ומסד הנתונים יהיו באותו פרויקט. זו הדרך הקלה ביותר להעניק לפונקציה גישה מאובטחת למסד הנתונים. בנוסף, צריך להפעיל את Spanner API.
לפני שיוצרים את מסד הנתונים, צריך לבחור את הפרויקט במסוף Google Cloud .
מפעילים את Spanner API בפרויקט.
יצירת מופע Spanner
בפעם הראשונה שמשתמשים ב-Spanner, צריך ליצור מופע, שהוא הקצאה של משאבים שמשמשים מסדי נתונים של Spanner באותו מופע.
נכנסים לדף Spanner Instances במסוף Google Cloud .
לוחצים על Create instance.
בשדה שם המכונה, מזינים Tutorial Instance.
מזהה המופע מוזן אוטומטית על סמך שם המופע.
בקטע Choose your configuration (בחירת ההגדרה), משאירים את אפשרות ברירת המחדל Regional (אזורי) ובוחרים באותו מיקום אזורי שבחרתם כשיצרתם את הפונקציה.
בקטע הקצאת קיבולת מחשוב, מזינים 100 יחידות עיבוד. התפוסה המינימלית הזו מספיקה כדי לבצע את המדריך.
לוחצים על יצירה. במסוף Google Cloud מוצג הדף Overview של המופע שיצרתם.
יצירת מסד נתונים ב-Spanner
אחרי שיש לכם מופע, אתם צריכים ליצור מסד נתונים. כדי ליצור מסד נתונים:
- בדף Overview של המופע, לוחצים על Create database.
- בשדה של שם מסד הנתונים, מזינים tutorial-database.
- בוחרים את דיאלקט מסד הנתונים Google Standard SQL.
- לוחצים על יצירה. בדף Overview במסוף Google Cloud מוצג מסד הנתונים שיצרתם.
יצירת טבלה למסד הנתונים
אחרי שיצרתם מסד נתונים, צריך ליצור טבלה למסד הנתונים. כדי ליצור טבלה:
- בקטע Tables בדף Overview של מסד הנתונים, לוחצים על Create table.
בדף Write DDL statements (כתיבת פקודות DDL), מזינים:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);לוחצים על שליחה. המסוף Google Cloud חוזר לדף Overview של מסד הנתונים ומוצג בו שהעדכונים של Schema מתבצעים. מחכים שהעדכון יסתיים.
הוספת נתונים לטבלה
עכשיו, אחרי שיש לכם טבלה במסד הנתונים, צריך להוסיף נתונים לטבלה. כדי להוסיף נתונים:
- ברשימת הטבלאות בדף Overview של מסד הנתונים, לוחצים על הטבלה Destinations. בדף Schema של הטבלה Destinations במסוף Google Cloud .
- בתפריט הניווט שמימין, לוחצים על נתונים כדי להציג את הדף נתונים של טבלת היעדים.
לוחצים על הוספה. במסוף מוצג הדף Query של הטבלה Destinations (יעדים) עם כרטיסיית שאילתה חדשה שמכילה הצהרות
INSERTו-SELECT. Google Cloud מחליפים את ההצהרות האלה בהצהרות הבאות:INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);לוחצים על Run.
בתפריט הניווט הימני, לוחצים שוב על נתונים כדי להציג את הנתונים בטבלה 'יעד'. מוודאים שהטבלה מכילה את הנתונים הרצויים.
עדכון הפונקציה של Cloud Functions כדי לשלוח שאילתה למסד הנתונים
הפונקציה cruisePlanCoverage בקוד של ה-webhook בודקת אם משתני סביבה ספציפיים מוגדרים עם מידע להתחברות למסד הנתונים.
אם משתני הסביבה האלה לא מוגדרים,
הפונקציה משתמשת ברשימה של יעדים שמוגדרת בתוך הקוד.
אחרי שמגדירים מסד נתונים, מעדכנים את פונקציית Cloud Functions כדי להגדיר את משתני הסביבה הנדרשים:
פותחים את דף הסקירה הכללית של Cloud Functions.
לוחצים על הפונקציה tutorial-telecommunications-webhook כדי לעבור לדף הפרטים שלה.
לוחצים על Edit.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה זמן ריצה.
מוסיפים את המשתנים הבאים בקטע Runtime environment variables (משתני סביבה של זמן ריצה):
-
PROJECT_ID: מזהה הפרויקט -
SPANNER_INSTANCE_ID: מזהה המכונה שלכם ב-Spanner (כנראהtutorial-instance) -
SPANNER_DATABASE_ID: מזהה מסד הנתונים של Spanner (כנראהtutorial-database)
-
לוחצים על הבא.
לוחצים על פריסה.
מחכים עד שאינדיקטור הסטטוס מראה שהפונקציה נפרסה בהצלחה.
בדיקת הסוכן
הסוכן מוכן עכשיו לשימוש. לוחצים על הלחצן 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.
אפשר לפתור את הבעיה באחת מהדרכים הבאות:
אם חשבון השירות שמוגדר כברירת מחדל מוצג בדף הראשי של IAM, צריך לשנות את ההרשאות של חשבון השירות. תפקיד העורך יתאים, אבל יכול להיות שתצטרכו תפקיד עם הרשאות מפורטות יותר בתרחיש של הפקה.
אם חשבון השירות שמוגדר כברירת מחדל לא מוצג בדף הראשי של IAM, צריך להעניק את התפקיד הנדרש על ידי הוספת חשבון השירות כחשבון משתמש חדש.
לחלופין, אתם יכולים להשתמש בחשבון שירות שאתם יוצרים.
מידע נוסף
מידע נוסף על השלבים שלמעלה:
- שימוש ב-Cloud Spanner עם Cloud Functions
- יצירה של מסד נתונים וביצוע שאילתות בו באמצעות מסוף Google Cloud
- שפת טיפול בנתונים (DDL) ב-SQL סטנדרטי של Google
- שפת מניפולציה של נתונים (DML) ב-SQL סטנדרטי של Google