在此 Codelab 中,您将学习如何构建前端 Django 客户端,以便为 Dialogflow 应用创建对话体验。具体而言,您将执行以下操作:
- 下载、设置并运行 Django 前端客户端。
- 设置要从 Django 前端客户端调用的 Dialogflow detectIntent 端点。
- 将应用部署到 Google Cloud 上的 App Engine。
- 测试是否根据用户请求设置了日历邀请。
前提条件
在继续操作之前,您需要完成以下 Codelab:
学习内容
- 如何为 Dialogflow 设置和运行 Django 前端客户端
- 如何将 Django 前端客户端部署到 Google Cloud 上的 App Engine
- 如何从自定义前端测试 Dialogflow 应用
构建内容
- 您将为 Dialogflow 设置并运行 Django 前端客户端。
- 您将把 Django 前端客户端部署到 Google Cloud 上的 App Engine。
- 您将从该自定义前端测试 Dialogflow 应用。
所需条件
- 对 Python 有基本的了解
- 对 Dialogflow 有基本的了解
您将使用之前构建的预约安排程序对话体验,并为该应用创建自定义前端。您将使用 Django 构建前端,在本地运行和测试该前端,然后将其部署到 App Engine。
用户将通过前端发送预约请求,该请求将调用 Dialogflow detectIntent API 来安排所请求日期和时间的预约。然后,Dialogflow fulfillment 会向 Google 日历发送请求,以设置相应的预约,并通过 Dialogflow 向用户返回确认信息。
最终结果将如下所示:
- 在本地终端中输入以下命令,将代码库克隆到本地机器:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- 切换到包含该代码的目录。或者,您也可以下载该示例的 zip 文件并将其解压缩。
cd Django-Dialogflow-Appointment-Scheduler
部署后,您的应用会使用 App Engine 标准环境中内置的 Cloud SQL 代理与 Cloud SQL 实例进行通信。但是,如需在本地测试应用,您必须在开发环境中安装和使用 Cloud SQL 代理的本地副本。如需了解详情,请参阅 Cloud SQL 代理简介。
如需在 Cloud SQL 实例上执行基本管理任务,您可以使用 Cloud SQL for MySQL 客户端。
安装 Cloud SQL 代理
下载并安装 Cloud SQL 代理。Cloud SQL 代理用于在本地运行时连接到您的 Cloud SQL 实例。
下载代理。
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
使该代理可以执行。
chmod +x cloud_sql_proxy
创建 Cloud SQL 实例
- 创建一个 Cloud SQL for MySQL 第二代实例。将该实例命名为“polls-instance”或类似名称。该实例可能需要几分钟才能准备就绪。准备就绪后,它应该显示在实例列表中。
- 使用 gcloud 工具运行以下命令,其中
[YOUR_INSTANCE_NAME]
表示您的实例的名称。记下实例连接名称显示的值以供下一步使用,该值以[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
格式显示
gcloud sql instances describe [YOUR_INSTANCE_NAME]
或者,您也可以点击实例以查看实例连接名称。
初始化您的 Cloud SQL 实例
使用上一步中的实例连接名称启动 Cloud SQL 代理。将 [YOUR_INSTANCE_CONNECTION_NAME]
替换为您在上一步中记录的值。此步骤会建立从本地计算机到您的实例的连接,以便进行本地测试。在您对应用进行本地测试时,请确保 Cloud SQL 代理一直运行。
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
接下来,创建一个新的 Cloud SQL 用户和数据库。
- 使用 Google Cloud 控制台为名为 polls-instance 的 Cloud SQL 实例创建一个新数据库。例如,您可以输入“polls”作为名称。
- 使用 Cloud 控制台为名为 polls-instance 的 Cloud SQL 实例创建一个新用户账号。
配置数据库设置
- 打开
mysite/settings.py
进行修改。 - 将两处
[YOUR-USERNAME]
和[YOUR-PASSWORD]
替换为您在上一部分中创建的数据库用户名和密码。这有助于建立与数据库的连接,以便进行 App Engine 部署和本地测试。 - 在
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME]'
这一行中,将[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
替换为您在上一部分中记录的值。 - 运行以下命令并复制输出的实例连接名称值,以便在下一步中使用。
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- 将
[YOUR-CONNECTION-NAME]
替换为您在上一部分记录的值。 - 将
[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]
- 关闭并保存
settings.py
。
- 在 Dialogflow 的控制台中,点击
。在常规标签页中,点击项目 ID 旁边的 Google Cloud
。
- 依次点击导航菜单 ☰ > API 和服务 > 凭据。
- 依次点击创建凭据 > 服务账号。
- 在服务账号详情中,输入“appointment-scheduler”作为服务账号名称,然后点击创建。
- 在显示向此服务账号授予对项目的访问权限的位置,点击继续以跳过它。
- 在显示向用户授予对此服务账号的访问权限(可选)的位置,依次点击创建密钥 > JSON > 创建。
系统会将 JSON 文件下载到您的计算机,您在后续设置过程中需要使用此文件。
- 在聊天文件夹中,将
AppointmentScheduler.json
替换为您的凭据 JSON 文件。 - 在聊天文件夹中的
views.py
中,将GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
更改为您的项目 ID。
要在本地计算机上运行 Django 应用,您需要设置 Python 开发环境,包括 Python、pip 和 virtualenv。如需查看说明,请参阅设置 Python 开发环境。
- 创建一个独立的 Python 环境,并安装依赖项:
virtualenv env source env/bin/activate pip install -r requirements.txt
- 运行 Django 迁移命令来设置模型。
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- 启动本地网络服务器。
python3 manage.py runserver
- 在网络浏览器中,输入 http://localhost:8000/。您应该会看到一个简单的网页,如以下屏幕截图所示:
示例应用页面由您的计算机上运行的 Django 网络服务器提供。准备好继续操作后,请按 Control+S
(Macintosh 上为 Command+S
)以停止本地网络服务器。
运行以下命令,将应用的所有静态文件移动到 settings.py
中的 STATIC_ROOT
指定的文件夹中:
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,然后输入以下内容:
- 用户:“Set an appointment for vehicle registration at 3 PM tomorrow.”
- 聊天机器人会做出如下回答:
- 日历会预订回复。
如果您计划完成其他 Dialogflow Codelab,请暂时跳过此部分,稍后再回来查看。
删除 Dialogflow 代理
- 点击现有代理旁边的
。
- 在常规 (General) 标签页中,滚动到底部,然后点击删除此代理 (Delete this Agent)。
- 在随即显示的窗口中输入 Delete,然后点击删除。
您在 Dialogflow 中创建了一个聊天机器人,并将它与日历集成。您现在已经是聊天机器人开发者了!
了解详情
请查看以下资源以了解详情: