פיתוח לקוח Django בחזית לאפליקציית Dialogflow

ב-codelab הזה תלמדו איך ליצור לקוח Django בחלק הקדמי של האתר כדי ליצור חוויה שיחתית לאפליקציית Dialogflow. באופן ספציפי, תלמדו איך:

  • מורידים, מגדירים ומריצים את לקוח הקצה הקדמי של Django.
  • מגדירים את נקודת הקצה detectIntent של Dialogflow כך שהיא תיקרא מלקוח הקצה של Django.
  • פורסים את האפליקציה ב-Google Cloud ב-App Engine.
  • בודקים אם ההזמנות ביומן מוגדרות לפי בקשת המשתמש.

דרישות מוקדמות

לפני שממשיכים, צריך להשלים את ה-codelabs הבאים:

  1. יצירת כלי לתזמון פגישות באמצעות Dialogflow
  2. הסבר על ישויות ב-Dialogflow
  3. הסבר על ביצוע פעולות באמצעות שילוב של Dialogflow עם היומן

מה תלמדו

  • איך מגדירים ומריצים לקוח קצה של Django ל-Dialogflow
  • איך פורסים את לקוח הקצה של Django ב-Google Cloud ב-App Engine
  • איך בודקים אפליקציית Dialogflow מחזית אתרים בהתאמה אישית

מה תפַתחו

  • תגדירו ותריצו לקוח קצה של Django עבור Dialogflow.
  • תפרסו את לקוח הקצה של Django ב-Google Cloud ב-App Engine.
  • תבדקו אפליקציית Dialogflow מהחלק הקדמי של האתר בהתאמה אישית.

מה נדרש

  • הבנה בסיסית של Python
  • הבנה בסיסית של Dialogflow

תשתמשו בממשק צ'אט עם AI של כלי תזמון הפגישות שיצרתם קודם ותיצרו חזית עורפית מותאמת אישית לאפליקציה. תבנו את החזית העורפית באמצעות Django, תריצו ותבדקו אותה באופן מקומי ותפרוסו אותה ב-App Engine.

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

התוצאה הסופית תיראה כך:

  1. משכפלים את המאגר למכונה המקומית על ידי הקלדת הפקודה הבאה במסוף המקומי של המחשב:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. עוברים לספרייה שמכילה את הקוד. אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
cd Django-Dialogflow-Appointment-Scheduler

אחרי הפריסה, האפליקציה משתמשת ב-Cloud SQL Proxy שמוטמע בסביבת App Engine Standard כדי לתקשר עם מופע Cloud SQL. עם זאת, כדי לבדוק את האפליקציה באופן מקומי, צריך להתקין ולהשתמש בעותק מקומי של Cloud SQL Proxy בסביבת הפיתוח. מידע נוסף זמין במאמר מידע על Cloud SQL Proxy.

כדי לבצע משימות אדמין בסיסיות במופע Cloud SQL, אפשר להשתמש בלקוח Cloud SQL ל-MySQL.

התקנת Cloud SQL Proxy

מורידים ומתקינים את Cloud SQL Proxy. משתמשים ב-Cloud SQL Proxy כדי להתחבר למכונה של Cloud SQL כשמריצים אותה באופן מקומי.

מורידים את ה-proxy.

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

הופכים את ה-proxy לקובץ הפעלה.

chmod +x cloud_sql_proxy

יצירת מכונה של Cloud SQL

  1. יוצרים מכונה של Cloud SQL ל-MySQL מהדור השני. נותנים למכונה את השם polls-instance או שם דומה. יכול להיות שיעברו כמה דקות עד שהמכונה תהיה מוכנה. אחרי שהיא תהיה מוכנה, היא תופיע ברשימת המופעים.
  2. משתמשים בכלי gcloud כדי להריץ את הפקודה הבאה, שבה [YOUR_INSTANCE_NAME] מייצג את שם המכונה. רושמים את הערך שמוצג בשדה 'שם החיבור של המופע' בשביל השלב הבא, שמוצג בפורמט [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

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

הפעלת המכונה של Cloud SQL

מפעילים את Cloud SQL Proxy באמצעות שם החיבור של המופע מהשלב הקודם. מחליפים את [YOUR_INSTANCE_CONNECTION_NAME] בערך שרשמתם בשלב הקודם. כך נוצר חיבור מהמחשב המקומי שלכם למופע למטרות בדיקה מקומיות. משאירים את Cloud SQL Proxy פועל בזמן שבודקים את האפליקציה באופן מקומי.

./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

לאחר מכן, יוצרים משתמש ומסד נתונים חדשים ב-Cloud SQL.

  1. יוצרים מסד נתונים חדש באמצעות Google Cloud Console עבור מופע Cloud SQL בשם polls-instance. לדוגמה, אפשר להזין את השם 'סקרים'.
  2. יוצרים חשבון משתמש חדש באמצעות מסוף Cloud עבור מופע Cloud SQL בשם polls-instance.

הגדרת ההגדרות של מסד הנתונים

  1. פותחים את mysite/settings.py לעריכה.
  2. בשני מקומות, מחליפים את [YOUR-USERNAME] ואת [YOUR-PASSWORD] בשם המשתמש ובסיסמה של מסד הנתונים שיצרתם בקטע הקודם. כך אפשר להגדיר את החיבור למסד הנתונים לפריסה של App Engine ולבדיקות מקומיות.
  3. בשורה ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME],' מחליפים את [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] בערך שרשמתם בקטע הקודם.
  4. מריצים את הפקודה הבאה ומעתיקים את הערך של שם החיבור של המכונה לשלב הבא.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. מחליפים את [YOUR-CONNECTION-NAME] בערך שרשמתם בקטע הקודם.
  2. מחליפים את [YOUR-DATABASE] בשם שבחרתם בקטע הקודם.
# [START db_setup]
if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]'
        }
    }
# [END db_setup]
  1. סגירה ושמירה settings.py.
  1. במסוף של Dialogflow, לוחצים על . בכרטיסייה כללי, לצד מזהה הפרויקט, לוחצים על Google Cloud .
  2. לוחצים על תפריט הניווט ☰ > APIs & Services > Credentials.
  3. לוחצים על Create Credentials (יצירת אמצעי אימות) > Service account (חשבון שירות).
  4. בקטע פרטי חשבון השירות, מזינים appointment-scheduler בתור שם חשבון השירות ולוחצים על יצירה.

  1. בקטע הענקת גישה לחשבון השירות הזה לפרויקט, לוחצים על המשך כדי לדלג על השלב הזה.
  2. בקטע Grant users access to this service account (optional) (הענקת גישה למשתמשים לחשבון השירות הזה (אופציונלי)), לוחצים על Create Key (יצירת מפתח) > JSON > Create (יצירה).

קובץ JSON יורד למחשב. תצטרכו אותו בשלבי ההגדרה הבאים.

  1. בתיקיית הצ'אט, מחליפים את AppointmentScheduler.json בקובץ ה-JSON של פרטי הכניסה.
  2. בתיקיית הצ'אט views.py, משנים את GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" למזהה הפרויקט.

כדי להריץ את אפליקציית Django במחשב המקומי, צריך להגדיר סביבת פיתוח של Python, כולל Python,‏ pip ו-virtualenv. הוראות מפורטות זמינות במאמר הגדרת סביבת פיתוח בשפת Python.

  1. יוצרים סביבת Python מבודדת ומתקינים יחסי תלות:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. מריצים את ההעברות של Django כדי להגדיר את המודלים.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. מפעילים שרת אינטרנט מקומי.
python3 manage.py runserver
  1. בדפדפן האינטרנט, מזינים http://localhost:8000/. אתם אמורים לראות דף אינטרנט פשוט כמו בצילום המסך הבא:

דפי האפליקציה לדוגמה מועברים על ידי שרת האינטרנט של Django שפועל במחשב. כשמוכנים להמשיך, לוחצים על Control+S (Command+S ב-Macintosh) כדי להפסיק את שרת האינטרנט המקומי.

מריצים את הפקודה הבאה כדי להעביר את כל הקבצים הסטטיים של האפליקציה לתיקייה שצוינה על ידי STATIC_ROOT ב-settings.py:

python3 manage.py collectstatic

כדי להעלות את האפליקציה, מריצים את הפקודה הבאה בספרייה של האפליקציה שבה נמצא הקובץ app.yaml:

gcloud app deploy

מחכים להודעה שהעדכון הסתיים.

בדפדפן האינטרנט, מזינים את הכתובת https://<your_project_id>.appspot.com.

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

הפקודה app deploy פורסת את האפליקציה כמו שמתואר במאמר app.yaml ומגדירה את הגרסה החדשה שנפרסה כגרסת ברירת המחדל, כך שהיא תציג את כל התנועה החדשה.

עוברים לכתובת https://<your_project_id>.appspot.com ומזינים את הפרטים הבאים:

  1. משתמש: "Set an appointment for vehicle registration at 3 PM tomorrow".
  2. התשובה של הצ'אטבוט:

  1. התשובה תתווסף ליומן.

אם אתם מתכננים להשלים עוד סדנאות קוד של Dialogflow, דלגו על החלק הזה כרגע ותחזרו אליו מאוחר יותר.

מחיקת סוכן Dialogflow

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

יצרתם צ'אט בוט ב-Dialogflow ושילבתם אותו ביומן. הוגדרת כמפתח/ת של צ'אטבוטים.

מידע נוסף

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