為 Dialogflow 應用程式建構前端 Ruby 用戶端

在本程式碼研究室中,您將瞭解如何建構前端 Ruby 用戶端,以便為 Dialogflow 應用程式建立對話體驗。具體來說,您必須執行下列動作:

  • 下載、設定並執行 Ruby 前端用戶端。
  • 設定 Dialogflow IntentIntent 端點,以呼叫 Ruby 前端用戶端。
  • 在 App Engine 上將應用程式部署至 Google Cloud。
  • 測試是否針對每位使用者要求設定了日曆邀請。

必要條件

如要繼續操作,請先完成下列程式碼研究室:

  1. 使用 Dialogflow 建立預約時間表
  2. 瞭解 Dialogflow 中的實體
  3. 將 Dialogflow 與 Google 日曆整合以掌握出貨

課程內容

  • 如何設定及執行 Dialogflow 的 Ruby 前端用戶端
  • 如何在 App Engine 上將 Ruby 前端用戶端部署到 Google Cloud
  • 如何從自訂前端測試 Dialogflow 應用程式

建構項目

  • 您將為 Dialogflow 設定並執行 Ruby 前端用戶端。
  • 您將在 App Engine 上將 Ruby 前端用戶端部署到 Google Cloud。
  • 您將從該自訂前端測試 Dialogflow 應用程式。

軟硬體需求

  • 對 Python 有基本瞭解
  • 對 Dialogflow 有基本瞭解

您會使用先前建立的 Appointment Scheduler 對話體驗,並為應用程式建立自訂前端。您將使用 Ruby 建構前端、在本機執行並測試前端,然後部署至 App Engine。

使用者會透過前端傳送預約要求,此呼叫會呼叫 DialogflowdetectIntent API 為預約的日期和時間設定預約。接著,Dialogflow 執行要求會傳送要求至 Google 日曆,以設定個別的預約,並透過 Dialogflow 傳送確認給使用者。

最終結果如下所示:

  1. 在電腦的本機終端機中輸入下列指令,將存放區複製到本機電腦:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. 變更為包含程式碼的目錄。您也可以將樣本下載為 zip 檔,然後解壓縮。
cd Django-Dialogflow-Appointment-Scheduler

部署應用程式之後,您的應用程式會使用 App Engine 標準環境內建的 Cloud SQL Proxy 與您的 Cloud SQL 執行個體進行通訊。不過,如要在本機上測試應用程式,您必須在開發環境中安裝及使用 Cloud SQL Proxy 的本機複本。詳情請參閱關於 Cloud SQL Proxy

如要在 Cloud SQL 執行個體上執行基本管理員工作,您可以使用 MySQL 適用的 Cloud SQL 用戶端。

安裝 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. 建立 MySQL 適用的 Cloud SQL 第二代執行個體。將執行個體命名為「polls-instance」。或類似的名稱。執行個體可能需要幾分鐘的時間才能準備就緒。這個執行個體準備就緒後,應會顯示在執行個體清單中。
  2. 使用 gcloud 工具執行下列指令,其中 [YOUR_INSTANCE_NAME] 代表您的執行個體名稱。記下後續步驟中顯示的執行個體連線名稱值,格式為 [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

或者,您也可以點選執行個體,查看 [Instance connection 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 為名為 polls-instance 的 Cloud SQL 執行個體建立新資料庫。舉例來說,你可以輸入「polls」做為名稱。
  2. 使用 Cloud Console 為名為 polls-instance 的 Cloud SQL 執行個體建立新的使用者帳戶。

進行資料庫設定

  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 中,按一下 。在「一般」分頁中的「專案 ID」旁邊,按一下 [Google Cloud]
  2. 按一下 [導覽] 選單 ☰ > [API 與服務] > [憑證]
  3. 按一下 [Create Credentials] (建立憑證) > [Service account] (服務帳戶)
  4. 在「Service account details」(服務帳戶詳細資料) 中輸入「quop;appointment-Schedulingr」做為「Service account name」(服務帳戶名稱),然後按一下 [Create] (建立)

  1. 在顯示「授予這個服務帳戶存取專案」的位置按一下 [繼續],即可略過此步驟。
  2. 畫面顯示「授予使用者這個服務帳戶的存取權限 (選用)」時,按一下 [建立金鑰] > [JSON] > [建立]

JSON 檔案會下載到您的電腦,在以下的設定部分中需要您下載該檔案。

  1. 在即時通訊資料夾中,將 AppointmentScheduler.json 替換為您的憑證 JSON 檔案。
  2. 在即時通訊資料夾的「views.py」中,將「GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"」改成您的專案 ID。

如要在本機電腦上執行 Ruby 應用程式,您必須設定 Python 開發環境,包括 Python、pip 及 virtualenv。如需操作說明,請參閱設定 Python 開發環境

  1. 建立獨立的 Python 環境,並安裝依附元件:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. 執行 Ruby 遷移作業以設定模型。
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. 啟動本機網路伺服器。
python3 manage.py runserver
  1. 在網路瀏覽器中輸入 http://localhost:8000/。如下方螢幕截圖所示,您應該會看到簡單的網頁:

範例應用程式的網頁是由您電腦上的 Ruby 網路伺服器所傳送。當你準備好繼續瀏覽時,請按下 Control+S (Macintosh 上的 Command+S) 以停止本機網路伺服器。

執行下列指令,將應用程式的所有靜態檔案移至 settings.pySTATIC_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 並輸入以下內容:

  1. 使用者:「應於明天下午 3 點設定車輛登記。」
  2. 聊天機器人的回應如下:

  1. 日曆會預訂回覆。

如果您打算完成其他 Dialogflow 程式碼研究室,請暫時略過這個部分,稍後再回來查看。

刪除 Dialogflow 代理程式

  1. 按一下現有代理程式旁邊的 []。
  1. 在「一般」分頁中,捲動至底部,然後按一下 [刪除這個代理程式]
  2. 在顯示的視窗中輸入 Delete,然後按一下 [Delete]

您在 Dialogflow 中建立了一個聊天機器人,並與 Google 日曆整合。你現在是聊天機器人開發人員了!

瞭解詳情

詳情請參閱下列資源: