代管代理程式

本教學課程的最後一個步驟是代管 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 Messenger,請按照下列步驟操作:

  1. 前往 Dialogflow ES 主控台
  2. 按一下左側欄選單中的「整合」
  3. 按一下「Dialogflow Messenger」
  4. 設定對話方塊隨即開啟。
  5. 選擇環境
  6. 按一下「啟用」
  7. 複製嵌入程式碼,貼到網站中。
  8. 按一下 [關閉]

將代理程式嵌入網路服務

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

使用 gcloud 再次部署網路服務應用程式。部署完成後,只要按一下右下角的聊天圖示,即可透過網頁與客服專員互動。

網頁上嵌入的 Dialogflow 代理程式螢幕截圖

您現在已部署完整的 Dialogflow 代理程式!請嘗試與服務專員對話。

清除所用資源

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

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

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

  4. 刪除服務專員

更多資訊

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