Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tạo một ứng dụng Django phía trước để tạo trải nghiệm trò chuyện cho một ứng dụng Dialogflow. Cụ thể, bạn sẽ làm những việc sau:
- Tải xuống, thiết lập và chạy ứng dụng Django.
- Thiết lập điểm cuối detectIntent của Dialogflow để được gọi từ ứng dụng Django frontend.
- Triển khai ứng dụng lên 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 tất các lớp học lập trình sau:
- Tạo một trình lập lịch hẹn bằng Dialogflow
- Tìm hiểu về thực thể trong Dialogflow
- Tìm 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 Django cho khách hàng trên giao diện người dùng cho Dialogflow
- Cách triển khai ứng dụng Django cho khách hàng trên Google Cloud bằng App Engine
- Cách kiểm thử ứng dụng Dialogflow từ giao diện người dùng tuỳ 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 Django cho Dialogflow.
- Bạn sẽ triển khai ứng dụng Django cho khách hàng trên Google Cloud bằng App Engine.
- Bạn sẽ kiểm thử một ứng dụng Dialogflow từ giao diện người dùng tuỳ chỉnh đó.
Bạn cần có
- Có kiến thức cơ bản về Python
- Có kiến thức cơ bản về Dialogflow
Bạn sẽ sử dụng trải nghiệm trò chuyện Appointment Scheduler (Trình lập lịch hẹn) mà bạn đã tạo trước đó và tạo một giao diện người dùng tuỳ chỉnh cho ứng dụng. Bạn sẽ tạo giao diện người dùng bằng Django, chạy và kiểm thử giao diện đó cục bộ, đồng thời triển khai giao diện đó cho App Engine.
Người dùng sẽ gửi yêu cầu đặt lịch hẹn thông qua giao diện người dùng. Yêu cầu này sẽ gọi API detectIntent của Dialogflow để thiết lập lịch hẹn cho ngày và giờ được yêu cầu. Sau đó, dịch vụ thực hiện của Dialogflow sẽ gửi một yêu cầu đến Lịch để đặt cuộc hẹn tương ứng và trả về thông tin xác nhận cho người dùng thông qua Dialogflow.
Kết quả cuối cùng sẽ có dạng như sau:
- Sao chép kho lưu trữ vào máy cục bộ bằng cách nhập lệnh sau vào thiết bị đầu cuối cục bộ của máy tính:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- Chuyển đến 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 rồi giải nén.
cd Django-Dialogflow-Appointment-Scheduler
Khi được triển khai, ứng dụng của bạn sẽ sử dụng Cloud SQL Proxy được tích hợp trong môi trường chuẩn của App Engine để giao tiếp với phiên bản Cloud SQL. Tuy nhiên, để kiểm thử ứng dụng trên máy, bạn phải cài đặt và sử dụng bản sao cục bộ của Cloud SQL Proxy trong môi trường phát triển. Để biết thêm thông tin, hãy xem bài viết Giới thiệu về Cloud SQL Proxy.
Để thực hiện các tác vụ quản trị cơ bản trên phiên bản Cloud SQL, bạn có thể dùng ứng dụng Cloud SQL cho MySQL.
Cài đặt Cloud SQL Proxy
Tải và cài đặt Cloud SQL Proxy. Cloud SQL Proxy được dùng để kết nối với thực thể Cloud SQL 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ạo tệp thực thi proxy.
chmod +x cloud_sql_proxy
Tạo một phiên bản Cloud SQL
- Tạo một phiên bản Cloud SQL for MySQL thế hệ thứ hai. Đặt tên cho phiên bản là "polls-instance" hoặc một tên tương tự. Có thể mất vài phút thì phiên bản mới sẵn sàng. Sau khi sẵn sàng, phiên bản này sẽ xuất hiện trong danh sách phiên bản.
- Sử dụng công cụ gcloud để chạy lệnh sau, trong đó
[YOUR_INSTANCE_NAME]
là tên của phiên bản. Ghi lại giá trị xuất hiện cho tên kết nối của phiên bản cho bước tiếp theo, giá trị này xuất hiện ở đị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 để xem Tên kết nối phiên bản.
Khởi chạy phiên bản Cloud SQL
Khởi động Cloud SQL Proxy bằng cách sử dụng tên kết nối phiên bản ở bước trước. Thay thế [YOUR_INSTANCE_CONNECTION_NAME]
bằng giá trị mà bạn đã ghi lại ở bước trước. Thao tác này thiết lập kết nối từ máy tính cục bộ đến phiên bản của bạn cho mục đích kiểm thử cục bộ. Tiếp tục chạy Cloud SQL Proxy trong khi bạn kiểm thử ứng dụng cục bộ.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
Tiếp theo, hãy tạo một người dùng và cơ sở dữ liệu Cloud SQL mới.
- Tạo một cơ sở dữ liệu mới bằng Google Cloud Console cho phiên bản Cloud SQL có tên là polls-instance. Ví dụ: bạn có thể nhập "cuộc thăm dò" làm tên.
- 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 là polls-instance.
Định cấu hình chế độ cài đặt cơ sở dữ liệu
- Mở
mysite/settings.py
để chỉnh sửa. - Ở hai vị trí, hãy thay thế
[YOUR-USERNAME]
và[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 trong phần trước. Điều này giúp thiết lập kết nối với cơ sở dữ liệu để triển khai App Engine và kiểm thử cục bộ. - Trong dòng có nội dung
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME],'
, hãy thay thế[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
bằng giá trị mà bạn đã ghi lại trong phần trước. - Chạy lệnh sau và sao chép giá trị tên kết nối của phiên bản được xuất ra cho bước tiếp theo.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- Thay thế
[YOUR-CONNECTION-NAME]
bằng giá trị mà bạn đã ghi lại trong phần trước. - 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]
- Đóng và lưu
settings.py
.
- Trong bảng điều khiển của 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
.
- Nhấp vào Trình đơn điều hướng ☰ > API và dịch vụ > Thông tin xác thực.
- Nhấp vào Tạo thông tin xác thực > Tài khoản dịch vụ.
- Trong phần Chi tiết tài khoản dịch vụ, hãy nhập "appointment-scheduler" làm Tên tài khoản dịch vụ, rồi nhấp vào Tạo.
- Ở phần Cấp cho tài khoản dịch vụ này quyền truy cập vào dự án, hãy nhấp vào Tiếp tục để bỏ qua.
- Ở phần 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 khoá > JSON > Tạo.
Một tệp JSON sẽ được tải xuống máy tính của bạn. Bạn sẽ cần tệp này trong các phần thiết lập sau đây.
- Trong thư mục trò chuyện, hãy thay thế
AppointmentScheduler.json
bằng tệp JSON chứa thông tin đăng nhập của bạn. - Trong
views.py
trong thư mục trò chuyện, hãy thay đổiGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
thành mã dự án của bạ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ột 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.
- 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
- Chạy các lệnh di chuyển Django để thiết lập mô hình.
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- Khởi động một máy chủ web cục bộ.
python3 manage.py runserver
- 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:
Các trang ứng dụng mẫu được phân phối bởi máy chủ web Django chạy trên máy tính của bạn. Khi bạn đã sẵn sàng chuyển sang bước tiếp theo, 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 có chứa tệp app.yaml
:
gcloud app deploy
Đợi thông báo cho biết 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 sẽ được một máy chủ web chạy trong môi trường tiêu chuẩn của App Engine xử lý.
Lệnh app deploy
triển khai ứng dụng như mô tả trong app.yaml
và đặt phiên bản mới triển khai làm phiên bản mặc định, khiến phiên bản 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 rồi nhập nội dung sau:
- Người dùng: "Đặt lịch hẹn đăng ký xe lúc 3 giờ chiều mai."
- Chatbot sẽ phản hồi như sau:
- Lịch sẽ ghi lại câu trả lời.
Nếu bạn dự định hoàn thành các lớp học lập trình khác của Dialogflow, thì hiện tại, hãy bỏ qua phần này và quay lại sau.
Xoá nhân viên hỗ trợ Dialogflow
- Nhấp vào biểu tượng
bên cạnh tác nhân hiện có.
- Trong thẻ Chung, hãy di chuyển xuống dưới cùng rồi nhấp vào Xoá nhân viên này.
- Nhập Xoá vào cửa sổ xuất hiện rồi nhấp vào Xoá.
Bạn đã tạo một chatbot trong Dialogflow và tích hợp chatbot đó với Lịch. Bạn hiện là nhà phát triển chatbot!
Tìm hiểu thêm
Hãy tham khảo các tài nguyên sau để tìm hiểu thêm:
- Tích hợp Vision API với Dialogflow
- Mã mẫu trên trang Dialogflow Github