託管代理程式

本教學課程的最後一個步驟是託管 Dialogflow 代理。App Engine 易於設定且擴充性良好,因此用於託管。Dialogflow Messenger 整合功能用於代理使用者介面。

專案設定

理想情況下,Dialogflow 代理和 App Engine 執行個體應位於同一個專案中。此外,您必須啟用 Cloud Build API。

  1. 建立執行個體前,請先在 Google Cloud 控制台選取專案。

    前往專案選取器

  2. 為專案啟用 Cloud Build API。

    啟用 Cloud Build API

環境設定

您需要安裝及設定一些項目,才能開發 App Engine 的 Go 應用程式。按照「設定開發環境」中的步驟操作,完成尚未完成的步驟。

建立網路服務程式碼

本教學課程的範例程式碼是以 Go 編寫,但您可以使用 App Engine 支援的任何語言。在本機電腦上建立下列檔案結構:

  • go-app/:Go 服務的目錄。
    • templates/:Go HTML 範本的目錄。
      • index.html:Go HTML 範本。
    • app.yaml:服務的配置設定。
    • main.go:應用程式程式碼。

接下來的三個部分會提供這三個檔案的內容。

index.html 檔案的內容

這個 Go HTML 範本檔案包含首頁的 HTML。在這個檔案中填入以下內容:

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Tutorial agent</title>
  </head>
  <body>
    <p>Open the chat window in the bottom right corner.</p>
  </body>
</html>

app.yaml 檔案的內容

這個設定檔會指定服務的執行階段環境設定。您可以參閱 Go 1.12+ 執行階段環境文件,查看支援的 Go 版本清單。在這個檔案中填入以下內容:

runtime: go116  # or another supported version

main.go 檔案的內容

這個檔案包含應用程式程式碼。在這個檔案中填入以下內容:

// Package main is the main package
package main

import (
	"log"
	"net/http"
	"os"
	"text/template"
)

var templates *template.Template

func init() {
	templates = template.Must(template.New("").ParseGlob("templates/*"))
}

// indexHandler handles the homepage.
func indexHandler(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path != "/" {
		http.NotFound(w, r)
		return
	}
	if err := templates.ExecuteTemplate(w, "index.html", nil); err != nil {
		log.Fatal(err)
	}
}

func main() {
	// Register the handlers
	http.HandleFunc("/", indexHandler)

	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
		log.Printf("Defaulting to port %s", port)
	}

	log.Printf("Listening on port %s", port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		log.Fatal(err)
	}
}

部署您的網路服務

現在可以部署程式碼了。這些步驟使用 gcloud 工具進行部署:

  1. 確認 gcloud 設定的專案與 Dialogflow 代理程式相同。如要查看專案,請按照下列步驟操作:

    gcloud config get-value project

    如要變更專案,請按照下列步驟操作:

    gcloud config set project YOUR_PROJECT
  2. 在 app.yaml 檔案所在的 go-app 目錄中,使用下列指令將 網路服務部署至 App Engine:

    gcloud app deploy

    指令會提示您輸入區域。請務必選取與 Dialogflow 代理相同的區域。指令會輸出 target url 值,也就是網路服務的網址。

  3. 如要啟動瀏覽器並查看網路服務,您可以開啟上一個步驟中的目標網址,或執行下列指令:

    gcloud app browse

設定 Dialogflow Messenger

如要設定未經驗證的 Dialogflow CX Messenger 代理存取權,請按照下列步驟操作:

  1. 前往 Dialogflow CX 控制台。
  2. 選擇 Google Cloud 專案。
  3. 選取代理程式。
  4. 選取「管理」分頁標籤。
  5. 按一下左側側欄選單中的「整合」。
  6. 按一下「Dialogflow CX Messenger」上的「連結」。
  7. 設定對話方塊隨即開啟。
  8. 如果先前已為這個代理程式設定整合,您會看到可嵌入的 HTML 程式碼。無論您要驗證或不驗證,請按一下對話方塊底部的「Disable...」(停用...) 按鈕,以便在下一個步驟中重新設定。
  9. 選取「Environment」(環境)。
  10. 選取「Unauthenticated API」。
  11. 選取樣式。
  12. 視需要限制網域存取權。
  13. 按一下「Enable the unauthenticated API」。
  14. 對話方塊會顯示可嵌入網站的 HTML 程式碼。複製這組代碼。
  15. 按一下「完成」。

將代理嵌入網路服務

將複製的內嵌程式碼貼到 index.html 檔案中。<script> 和 <df-messenger> HTML 元素應位於網頁的 <body> 元素中。

再次使用 gcloud 部署 Web 服務應用程式。部署完成後,只要點選右下角的對話圖示,即可透過網頁與代理互動。

網頁中嵌入 Dialogflow 代理的螢幕截圖

您現在已完整部署 Dialogflow 虛擬服務專員!試著與代理對話。

清除所用資源

在執行本教學課程的步驟時,您建立了計費資源。如要避免系統向您的 Google Cloud 帳戶收取額外費用,請按照下列步驟操作:

  1. 刪除資料庫執行個體。
  2. 刪除函式:

    gcloud functions delete tutorial-telecommunications-webhook
  3. 停用應用程式。

  4. 刪除代理

更多資訊

如要進一步瞭解上述步驟,請參閱: