Xây dựng ứng dụng Django giao diện người dùng cho ứng dụng Dialogflow

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách xây dựng ứng dụng Django thuộc giao diện người dùng để tạo trải nghiệm trò chuyện cho một ứng dụng Dialogflow. Cụ thể là bạn sẽ thực hiện những thao tác sau:

  • Tải xuống, thiết lập và chạy ứng dụng giao diện người dùng Django.
  • Thiết lập điểm cuối Dialogflow IntentIntent để gọi từ ứng dụng giao diện người dùng Django.
  • Triển khai ứng dụng với Google Cloud trên App Engine.
  • Kiểm tra xem lời mời trên Lịch có được thiết lập theo yêu cầu của người dùng hay không.

Điều kiện tiên quyết

Trước khi tiếp tục, bạn cần hoàn thành các lớp học lập trình sau:

  1. Đặt lịch hẹn bằng Dialogflow
  2. Tìm hiểu về các thực thể trong Dialogflow
  3. Hiểu cách thực hiện bằng cách tích hợp Dialogflow với Lịch

Kiến thức bạn sẽ học được

  • Cách thiết lập và chạy ứng dụng giao diện người dùng Django cho Dialogflow
  • Cách triển khai ứng dụng giao diện người dùng Django cho Google Cloud trên App Engine
  • Cách kiểm tra một ứng dụng Dialogflow từ giao diện người dùng tùy chỉnh

Sản phẩm bạn sẽ tạo ra

  • Bạn sẽ thiết lập và chạy một ứng dụng giao diện người dùng Django cho Dialogflow.
  • Bạn sẽ triển khai ứng dụng giao diện người dùng Django cho Google Cloud trên App Engine.
  • Bạn sẽ thử nghiệm ứng dụng Dialogflow từ giao diện người dùng tùy chỉnh đó.

Bạn cần có

  • Kiến thức cơ bản về Python
  • Kiến thức cơ bản về Dialogflow

Bạn sẽ sử dụng trải nghiệm trò chuyện Người lập lịch hẹn mà trước đây bạn đã tạo và tạo giao diện người dùng tùy chỉnh cho ứng dụng. Bạn sẽ tạo giao diện người dùng với Django, chạy và thử nghiệm cục bộ và triển khai giao diện này cho App Engine.

Người dùng sẽ gửi yêu cầu đặt lịch hẹn qua giao diện người dùng. Lệnh gọi này sẽ gọi API DialogflowIntentIntent để thiết lập một cuộc hẹn cho ngày và giờ được yêu cầu. Sau đó, phương thức thực hiện Dialogflow sẽ gửi một yêu cầu đến Lịch để đặt lịch hẹn tương ứng và trả lại thông báo xác nhận cho người dùng qua Dialogflow.

Kết quả cuối cùng sẽ trông như sau:

  1. Sao chép kho lưu trữ vào máy cục bộ của bạn bằng cách nhập lệnh này vào thiết bị đầu cuối cục bộ trên máy tính:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Hãy thay đổi thư mục chứa mã. Ngoài ra, bạn có thể tải mẫu xuống dưới dạng tệp zip và trích xuất mẫu.
cd Django-Dialogflow-Appointment-Scheduler

Khi được triển khai, ứng dụng của bạn sử dụng Cloud SQL Proxy được tích hợp vào môi trường tiêu chuẩn của App Engine để giao tiếp với phiên bản Cloud SQL của bạn. Tuy nhiên, để thử nghiệm ứng dụng trên máy, bạn phải cài đặt và sử dụng một bản sao cục bộ của Cloud SQL Proxy trong môi trường phát triển của mình. Để biết thêm thông tin, hãy xem Giới thiệu về Proxy SQL SQL.

Để thực hiện các thao tác quản trị cơ bản trên phiên bản Cloud SQL, bạn có thể sử dụng ứng dụng Cloud SQL cho MySQL.

Cài đặt Cloud SQL Proxy

Tải xuống và cài đặt Proxy SQL SQL. Proxy Cloud SQL được dùng để kết nối với phiên bản Cloud SQL của bạn khi chạy cục bộ.

Tải proxy xuống.

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

Đặt proxy có thể thực thi.

chmod +x cloud_sql_proxy

Tạo một phiên bản Cloud SQL

  1. Tạo một Cloud SQL cho phiên bản MySQL thứ hai. Đặt tên cho thực thể "polls-instance" hoặc tên tương tự. Quá trình này có thể mất vài phút để sẵn sàng. Sau khi sẵn sàng, đối tượng sẽ hiển thị trong danh sách phiên bản.
  2. Dùng công cụ gcloud để chạy lệnh sau trong đó [YOUR_INSTANCE_NAME] đại diện cho tên phiên bản của bạn. Ghi lại giá trị được hiển thị cho tên phiên kết nối cho bước tiếp theo, được hiển thị ở định dạng [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

Ngoài ra, bạn có thể nhấp vào phiên bản này để xem tên kết nối của thực thể.

Khởi tạo phiên bản Cloud SQL của bạn

Khởi động Cloud SQL Proxy bằng cách sử dụng tên kết nối phiên bản từ bước trước. Thay thế [YOUR_INSTANCE_CONNECTION_NAME] bằng giá trị mà bạn đã ghi lại trong bước trước. Quá trình này thiết lập kết nối từ máy tính cục bộ của bạn với phiên bản của bạn cho mục đích thử nghiệm cục bộ. Giữ cho Cloud SQL Proxy chạy trong khi bạn thử nghiệm ứng dụng trên máy.

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

Tiếp theo, hãy tạo người dùng và cơ sở dữ liệu mới trên Cloud SQL.

  1. Tạo cơ sở dữ liệu mới bằng cách sử dụng Google Cloud Console cho phiên bản Cloud SQL có tên polls-instance. Ví dụ: bạn có thể nhập "polls" làm tên.
  2. Tạo một tài khoản người dùng mới bằng Cloud Console cho phiên bản Cloud SQL có tên polls-instance.

Định cấu hình tùy chọn cài đặt cơ sở dữ liệu

  1. Mở mysite/settings.py để chỉnh sửa.
  2. Ở hai vị trí, hãy thay thế [YOUR-USERNAME][YOUR-PASSWORD] bằng tên người dùng và mật khẩu cơ sở dữ liệu mà bạn đã tạo ở phần trước. Điều đó giúp thiết lập kết nối với cơ sở dữ liệu để triển khai App Engine và thử nghiệm cục bộ.
  3. Trong dòng có nội dung là ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME],' sẽ thay thế [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] bằng giá trị mà bạn đã ghi lại trong phần trước.
  4. Chạy lệnh sau và sao chép giá trị tên kết nối của phiên bản đã xuất cho bước tiếp theo.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. Thay thế [YOUR-CONNECTION-NAME] bằng giá trị mà bạn đã ghi lại trong phần trước.
  2. Thay thế [YOUR-DATABASE] bằng tên mà bạn đã chọn trong phần trước.
# [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. Đóng và lưu settings.py.
  1. Trong bảng điều khiển Dialogflow, hãy nhấp vào . Trong thẻ Chung bên cạnh Mã dự án, hãy nhấp vào Google Cloud .
  2. Nhấp vào Trình đơn điều hướng ☰ > API & Dịch vụ > Thông tin xác thực.
  3. Nhấp vào Tạo thông tin xác thực và gt; Tài khoản dịch vụ.
  4. Trong phần Chi tiết tài khoản dịch vụ, nhập "appointment-cho lịch biểu" làm Tên tài khoản dịch vụ, rồi nhấp vào Tạo.

  1. Khi thấy thông báo Cấp quyền truy cập vào dự án cho tài khoản dịch vụ này, hãy nhấp vào Tiếp tục để bỏ qua.
  2. Khi thấy thông báo Cấp cho người dùng quyền truy cập vào tài khoản dịch vụ này (không bắt buộc), hãy nhấp vào Tạo khóa > JSON > Tạo.

Tệp JSON sẽ tải xuống máy tính để bạn có thể sử dụng trong phần thiết lập sau đây.

  1. Trong thư mục trò chuyện, hãy thay thế AppointmentScheduler.json bằng tệp JSON chứa thông tin xác thực của bạn.
  2. Trong views.py trong thư mục trò chuyện, hãy thay đổi GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" thành mã dự án.

Để chạy ứng dụng Django trên máy tính cục bộ, bạn cần thiết lập môi trường phát triển Python, bao gồm Python, pip và Virtualenv. Để biết hướng dẫn, hãy xem phần Thiết lập môi trường phát triển Python.

  1. Tạo một môi trường Python riêng biệt và cài đặt các phần phụ thuộc:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Chạy quá trình di chuyển Django để thiết lập mô hình của bạn.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Khởi động máy chủ web cục bộ.
python3 manage.py runserver
  1. Trong trình duyệt web, hãy nhập http://localhost:8000/. Bạn sẽ thấy một trang web đơn giản như trong ảnh chụp màn hình sau đây:

Các trang ứng dụng mẫu do máy chủ web Django chạy trên máy tính của bạn phân phối. Khi bạn đã sẵn sàng tiến hành, hãy nhấn Control+S (Command+S trên Macintosh) để dừng máy chủ web cục bộ.

Chạy lệnh sau để di chuyển tất cả các tệp tĩnh của ứng dụng vào thư mục do STATIC_ROOT chỉ định trong settings.py:

python3 manage.py collectstatic

Tải ứng dụng lên bằng cách chạy lệnh sau trong thư mục của ứng dụng chứa tệp app.yaml:

gcloud app deploy

Chờ thông báo cho bạn biết rằng quá trình cập nhật đã hoàn tất.

Trong trình duyệt web, hãy nhập https://<your_project_id>.appspot.com.

Lần này, yêu cầu của bạn được máy chủ web chạy trong môi trường App Engine theo tiêu chuẩn.

Lệnh app deploy triển khai ứng dụng như mô tả trong app.yaml và đặt phiên bản mới được triển khai làm phiên bản mặc định, khiến ứng dụng này phân phát tất cả lưu lượng truy cập mới.

Truy cập https://<your_project_id>.appspot.com và nhập các thông tin sau:

  1. Người dùng: " Đặt lịch hẹn đăng ký xe lúc 3 giờ chiều mai;"
  2. Bot trò chuyện trả lời như sau:

  1. Lịch sẽ phản hồi.

Nếu bạn định hoàn thành các lớp học lập trình khác cho Dialogflow, hãy bỏ qua phần này ngay bây giờ và quay lại sau.

Xoá tác nhân Dialogflow

  1. Nhấp vào bên cạnh nhân viên hỗ trợ hiện có.
  1. Trong thẻ Chung, hãy di chuyển xuống dưới cùng rồi nhấp vào Xóa nhân viên hỗ trợ này.
  2. Nhập Delete vào cửa sổ xuất hiện rồi nhấp vào Delete (Xóa).

Bạn đã tạo một bot trò chuyện trong Dialogflow và tích hợp bot đó với Lịch. Bạn hiện là một nhà phát triển bot trò chuyện!

Tìm hiểu thêm

Hãy tham khảo những tài nguyên sau để tìm hiểu thêm: