使用 Google Chat、Vertex AI 和 Firestore 管理專案

本教學課程說明如何製作 Google Chat 應用程式供團隊使用 即時管理專案Chat 應用程式會使用 Vertex AI 會協助團隊撰寫使用者故事 從使用者的觀點來看軟體系統) 和 將故事保留在 Firestore 資料庫中。

  • 提到專案管理應用程式,可提示應用程式提供協助。
    圖 1.Charlie 與團隊成員討論 Chat 聊天室的功能開發事宜。提及專案管理 Chat 應用程式,提示 Chat 應用程式提供協助。
  • 使用 /createUserStory 斜線指令建立故事。
    圖 2.小莉使用 /createUserStory 斜線指令建立故事。
  • Chat 專案管理應用程式使用 Vertex AI 撰寫故事說明。
    圖 3.Chat 專案管理應用程式使用 Vertex AI 撰寫故事說明,然後在聊天室中分享故事。
  • 小查完成了故事細節,
    圖 4.小查按一下「編輯」完成故事細節。AI 提供的敘述正確無誤,但小趙想查看更多詳細資訊,因此 Charlie 點按「展開」,要求 Vertex AI 為故事說明加入相關規定。小詩自行指派故事、設定開始播送狀態,選取適當的優先順序和大小,然後按一下「Save」
  • 管理所有團隊的使用者故事。
    圖 5.小莉隨時可以使用 /manageUserStories 斜線指令查看及管理團隊的所有使用者故事。

必要條件

目標

  • 建構可管理靈活軟體的 Chat 應用程式 Google Cloud 的 Resource Manager 工具 經特別設計,能以程式輔助方式協助您管理專案
  • 運用生成式 AI 協助使用者撰寫使用者故事 採用 Vertex AI 的 AI 輔助報導撰寫工具:
    • 產生並重新生成故事說明。
    • 展開故事說明,從附註拓展到完整規定。
    • 修正文法以修正錯字。
  • 透過寫入及讀取 Firestore 資料庫的方式,確保工作符合現況。
  • 允許使用者在 Chat 聊天室中促進協作 直接在對話中建立、編輯、指派及發起故事。

使用的產品

專案管理應用程式使用下列 Google Workspace 和 Google Cloud 產品:

  • Chat API: 這個 API 可用於開發 Google Chat 應用程式,以便接收及回覆 即時通訊互動事件,例如訊息。專案管理 Google Chat 應用程式會使用 Chat API 接收及回覆 以及如何設定能使 決定個人資料在 Chat 中的顯示方式,例如名稱和顯示圖片。
  • Vertex AI API: 生成式 AI 平台專案管理 Google Chat 應用程式使用 Vertex AI API 編寫使用者故事 廣告標題和說明。
  • Firestore: 無伺服器文件資料庫。專案管理 Google Chat 應用程式會使用 Firebase 儲存使用者故事資料。
  • Cloud Functions: 簡便的無伺服器運算服務 可回覆 Chat 訊息的單一用途獨立函式 無需管理伺服器或執行階段環境。 專案管理 Google Chat 應用程式使用 Cloud Functions 代管 HTTP 端點,以便 Chat 傳送互動事件給 運算平台來執行邏輯,處理及回應這些事件。

    Cloud Functions 使用下列 Google Cloud 產品進行建構、 處理互動事件,以及託管運算資源:

    • Cloud Build: 全代管的持續整合、推送和部署平台 執行自動化建構作業
    • Pub/Sub: 可擴充的非同步且可擴充的訊息服務,將服務分離 並由處理這些訊息的服務產生訊息。
    • Cloud Run Admin API: 用於執行容器化應用程式的全代管環境。

架構

專案管理 Google Chat 應用程式架構會接收及 在 HTTP 端點中處理 Chat 互動事件,並使用 Vertex AI 寫入使用者故事,然後將使用者故事詳細資料儲存在 Firestore 資料庫。 下圖顯示 Google Workspace 和 使用的 Google Cloud 資源。

Google Chat 應用程式管理專案的架構圖

專案管理 Google Chat 應用程式的運作方式如下:

  1. 使用者在 Chat 中傳送訊息,並叫用 專案管理 Google Chat 擴充應用程式,透過傳送訊息的方式 在聊天室中直接提及,或是輸入斜線指令

  2. Chat 會將同步 HTTP 要求傳送至 Cloud 函式的 HTTP 端點

  3. 專案管理 Google Chat 應用程式會處理 HTTP 要求:

    1. Vertex AI 會協助撰寫或更新使用者故事。

    2. Firestore 資料庫會儲存、擷取、更新或刪除使用者故事 資料。

  4. Cloud Functions 會向 Chat 傳回 HTTP 回應 會以訊息或對話方塊的形式向使用者顯示

準備環境

本節說明如何建立及設定 Chat 應用程式。

建立 Google Cloud 專案

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「選單」圖示 > IAM 與管理員 > 建立專案

    前往「建立專案」

  2. 在「Project Name」(專案名稱) 欄位,輸入專案的描述性名稱。

    選用:如要編輯「專案 ID」,請按一下「編輯」。無法變更專案 ID 因此請在專案建立後根據 專案。

  3. 按一下「地區」欄位中的「瀏覽」,即可查看可能的地理位置 專案。然後按一下「選取」
  4. 點選「建立」。Google Cloud 控制台前往「資訊主頁」頁面,已建立專案 幾分鐘內

gcloud CLI

在下列任一開發環境中,存取 Google Cloud CLI (`gcloud`):

  • Cloud Shell:透過 gcloud CLI 使用線上終端機 設定完畢,請啟用 Cloud Shell
    啟用 Cloud Shell
  • Local Shell:如要使用本機開發環境, 安裝初始化 使用 gcloud CLI
    如要建立 Cloud 專案,請使用「gcloud projects create」指令:
    gcloud projects create PROJECT_ID
    敬上 設定您要建立的專案 ID,以取代 PROJECT_ID

啟用 Cloud 專案的計費功能

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「帳單」。按一下 選單 > 帳單 >「我的專案」

    前往「我的專案帳單」頁面

  2. 在「選取機構」中,選擇相關聯的機構 管理 Google Cloud 專案
  3. 在專案列中,開啟「動作」選單 (), 按一下 [變更帳單],然後選擇 Cloud Billing 帳戶。
  4. 按一下 [設定帳戶]

gcloud CLI

  1. 如要列出可用的帳單帳戶,請執行:
    gcloud billing accounts list
  2. 將帳單帳戶連結至 Google Cloud 專案:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    更改下列內容:

    • PROJECT_ID 是以下項目的專案 ID: 您想啟用計費功能的 Cloud 專案。
    • BILLING_ACCOUNT_ID 是要連結的帳單帳戶 ID 套用配額

啟用 API

Google Cloud 控制台

  1. 前往 Google Cloud 控制台,啟用 Google Chat API、Vertex AI API Cloud Functions API、Firestore API、Cloud Build API Pub/Sub API 和 Cloud Run Admin API

    啟用 API

  2. 確認您已在正確的位置啟用 API Cloud 專案,然後點選「下一步」

  3. 確認您要啟用的 API 正確無誤,然後按一下「啟用」

gcloud CLI

  1. 如有需要,請將目前的 Cloud 專案設為 是使用 gcloud config set project 指令建立而成:

    gcloud config set project PROJECT_ID
    

    PROJECT_ID 替換為以下專案的專案 ID: 您建立的 Cloud 專案

  2. 啟用 Google Chat API、Vertex AI API、Cloud Functions API。 Firestore API、Cloud Build API、Pub/Sub API 搭配 gcloud services enable 指令執行 Cloud Run Admin API:

    gcloud services enable chat.googleapis.com \
    aiplatform.googleapis.com \
    cloudfunctions.googleapis.com \
    firestore.googleapis.com \
    cloudbuild.googleapis.com \
    pubsub.googleapis.com \
    run.googleapis.com
    

    如要使用 Cloud Build、Pub/Sub 和 Cloud Run Admin API, Cloud Functions

驗證及授權

連上這個平台時不需要驗證和授權設定 教學課程。

如要呼叫 Firestore 和 Vertex AI API,本教學課程會使用 應用程式預設憑證 擁有連結至 Cloud 函式的預設服務帳戶 不需要設定在實際工作環境中 通常 建立附加 連結至 Cloud 函式

建立及部署 Google Chat 應用程式

已建立並設定 Google Cloud 專案,可以開始建構 及部署 Google Chat 應用程式在本節中,您將執行 包括:

  1. 建立 Firestore 資料庫,用於保存及擷取使用者故事。
  2. 視需要查看程式碼範例。
  3. 建立 Cloud 函式來託管及執行 Chat 應用程式的程式碼,用於回應事件 以 HTTP 要求的形式接收來自 Chat 的流量
  4. 使用 Google Chat API 建立及部署 Google Chat 應用程式 設定頁面。

建立 Firestore 資料庫

在本節中,您將建立 Firestore 資料庫來保存及擷取 您並未定義資料模型已設定資料模型 在程式碼範例中,model/user-story.jsmodel/user.js 會以隱含的方式表示 檔案。

專案管理 Chat 應用程式資料庫採用 NoSQL 訓練資料模型 份文件 分類為 集合。詳情請參閱: Firestore 資料模型

下圖為專案管理總覽 Google Chat 應用程式的資料模型:

Firestore 資料庫的資料模型。

根集合為 spaces,其中每個文件都代表 在以下聊天室中建立的即時通訊應用程式。每個使用者故事 以 userStories 子集合中的文件表示,而每位使用者 以 users 子集合中的文件表示

查看集合、文件和欄位定義

spaces

Chat 應用程式建立故事所在的聊天室。

欄位
Document IDString
建立故事的特定聊天室專屬 ID,對應於 Chat API 中的聊天室資源名稱。
userStoriesSubcollection of Documents (userStories)
由 Chat 應用程式及其使用者建立的短片故事。對應與 Firebase 中 userStoriesDocument ID
usersSubcollection of Documents (user)
建立故事或指派故事的使用者。
displayNameString
Chat API 中的聊天室顯示名稱。未設定與使用者的即時訊息。

userStories

Chat 應用程式及其使用者建立的故事。

欄位
Document IDString
由 Chat 應用程式及其使用者建立的特定使用者故事專屬 ID。
assigneeDocument (user)
完成故事作業的使用者資源名稱。對應於 users 文件的 Document ID,以及 Chat API 中的使用者資源名稱。
descriptionString
從使用者觀點說明軟體功能。
priorityEnum
完成工作的急迫性。可能的值包括 LowMediumHigh
sizeEnum
工作量。可能的值包括 SmallMediumLarge
statusEnum
工作的階段。可能的值包括 OPENSTARTEDCOMPLETED
titleString
故事標題;接著來總結這堂課程的重點

users

建立故事或指派故事的使用者。

欄位
Document IDString
特定使用者的專屬 ID。對應於 Firebase 中 userStoriesassignee,以及 Chat API 中的使用者資源名稱。
avatarUrlString
代管使用者的 Chat 顯示圖片網址。
displayNameString
使用者的 Chat 顯示名稱。

以下說明如何建立 Firestore 資料庫:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台中的「Firestore」。按一下 選單 >「Firestore」

    前往 Firestore

  2. 按一下 [Create database] (建立資料庫)。

  3. 在「選取 Firestore 模式」中,按一下「原生模式」

  4. 按一下「繼續」

  5. 設定資料庫:

    1. 在「Name your database」(為資料庫命名) 中,將「Database ID」(資料庫 ID) 保留為 (default)

    2. 在「位置類型」中,指定資料庫的區域,例如 us-central1。為獲得最佳效能,請選取相同或鄰近位置 做為 Chat 應用程式的 Cloud 函式。

  6. 按一下 [Create database] (建立資料庫)。

gcloud CLI

  • 使用以下指令,以原生模式建立 Firestore 資料庫: gcloud firestore databases create 指令:

    gcloud firestore databases create \
    --location=LOCATION \
    --type=firestore-native
    

    LOCATION 替換為 Firestore 的名稱 區域,例如 格式:us-central1

查看程式碼範例

建立 Cloud 函式之前,請先花點時間 熟悉 GitHub 代管的程式碼範例。

前往 GitHub 查看

以下是每個檔案的總覽:

env.js
用於部署 將即時通訊應用程式新增至指定的 Google Cloud 專案 區域。您必須更新這個檔案中的設定變數。
package.jsonpackage-lock.json
Node.js 專案設定和依附元件。
index.js
Chat 應用程式的 Cloud 函式進入點。這項服務 讀取 即時通訊事件: HTTP 要求、呼叫應用程式處理常式,並將 HTTP 回應發布為 JSON 物件。
controllers/app.js
主要應用程式邏輯。會處理 互動事件,方法是處理 Chat 應用程式中的提及和斜線指令。 如要回應資訊卡點擊,該程式碼會呼叫 app-action-handler.js
controllers/app-action-handler.js
處理資訊卡點擊的應用程式邏輯 即時通訊互動事件
services/space-service.jsservices/user-service.jsservices/user-story-service.js
這些檔案內含 使用 Chat 聊天室專屬的應用程式邏輯 以及使用者、使用者故事這些檔案中的函式會由 app.js 呼叫 或 app-action-handler.js。如要執行資料庫作業, 這些檔案會呼叫 firestore-service.js 中的函式。
services/firestore-service.js
處理資料庫作業。 此檔案中的函式會由 services/space-service.jsservices/user-service.jsservices/user-story-service.js
services/aip-service.js
呼叫 Vertex AI API 以取得生成式 AI 文字 預測結果
model/*.js
這些檔案包含應用程式的類別和列舉定義 服務用於在函式之間儲存及傳遞資料。他們把 用於 Firestore 資料庫的資料模型
views/*.js
這個目錄中的每個檔案都會例項化 資訊卡物件 即時通訊應用程式隨後透過以下方式傳回 Chat: 資訊卡訊息對話方塊動作回應
views/widgets/*.js
每個檔案都會執行例項化 一種小工具 應用程式用於建構 views/ 目錄中資訊卡的物件。
test/**/*.test.js
這個目錄及其子目錄中的每個檔案都包含單元測試 ,以便設定對應的函式、控制器、服務、檢視畫面或小工具。 您可在npm run test 專案的根目錄

建立及部署 Cloud 函式

在本節中,您將建立及部署 Cloud 函式,其中包含 專案管理 Chat 擴充應用程式的應用程式邏輯。

Cloud 函式會因應 收到來自 Chat 的 HTTP 要求 互動事件。執行時,Cloud Function 程式碼會處理事件並 會傳回 Chat 的回應,而 Chat 會顯示為 訊息、對話方塊或其他類型的使用者互動如果情況提供, 函式也會從 Firestore 資料庫讀取或寫入至 Firestore 資料庫。

建立 Cloud 函式的方式如下:

Google Cloud 控制台

  1. 從 GitHub 將程式碼下載為 ZIP 檔案。

    下載 ZIP 檔案

  2. 將下載的 ZIP 檔案解壓縮。

    擷取的資料夾包含整個 Google Workspace 範例 Cloud Storage 也提供目錄同步處理功能

  3. 在擷取的資料夾中,前往 google-chat-samples-main/node/project-management-app/,然後壓縮 「project-management-app」資料夾放入 ZIP 檔案。

    ZIP 檔案的根目錄必須包含下列項目 檔案和資料夾:

    • env.js
    • README.md
    • gcloudignore.text
    • package-lock.json
    • package.json
    • index.js
    • model/
    • controllers/
    • views/
    • services/
  4. 前往 Google Cloud 控制台中的「Cloud Functions」頁面。

    前往 Cloud Functions 頁面

    請確認 已選取 Chat 應用程式。

  5. 按一下 「Create Function」

  6. 在「Create function」(建立函式) 頁面中設定函式:

    1. 在「環境」中,選取「第 2 代」
    2. 在「Function name」(函式名稱) 中輸入 project-management-tutorial
    3. 在「Region」(區域) 中,選取區域。
    4. 在「Authentication」下方選取 允許未經驗證的叫用
    5. 點選「下一步」。
  7. 在「執行階段」中,選取「Node.js 20」

  8. 刪除「進入點」中的預設文字並輸入 projectManagementChatApp

  9. 在「原始碼」中,選取「壓縮上傳」

  10. 在「目的地值區」中, 建立 或選取值區:

    1. 點選「瀏覽」
    2. 選擇值區。
    3. 按一下「選取」

    Google Cloud 將 ZIP 檔案上傳到並擷取元件檔案 指定值區Cloud Functions 然後將元件檔案 並存取 Cloud 函式

  11. ZIP 檔案中,上傳從 GitHub 下載的 ZIP 檔案。 擷取及重壓縮:

    1. 點選「瀏覽」
    2. 瀏覽並選取 ZIP 檔案。
    3. 按一下「開啟」
  12. 按一下「部署」

    「Cloud Functions 詳細資料」頁面隨即開啟,您的函式隨即顯示。 ,其中包含兩個進度指標:一個用於建構,另一個用於服務。 當兩個進度指標消失並替換成勾號時 標記,表示函式已部署完成且準備就緒。

  13. 編輯程式碼範例來設定常數:

    1. 在「Cloud Function details」(Cloud 函式詳細資料) 頁面點選「Edit」(編輯)
    2. 點選「下一步」。
    3. 在「原始碼」中,選取「內嵌編輯器」
    4. 在內嵌編輯器中開啟 env.js 檔案。
    5. 使用您的 Cloud 專案 ID 取代 project-id
    6. 選用:將 us-central1 更新為採用 支援地區 適用於 Cloud 函式
  14. 按一下「部署」

  15. 當函式完成部署後,請複製觸發條件網址:

    1. 在「函式詳細資料」頁面中點選「觸發條件」
    2. 複製網址。您需要這個指令碼來設定 以下部分中的 Chat 擴充應用程式。

gcloud CLI

  1. 從 GitHub 複製程式碼:

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  2. 切換至含有這項專案程式碼的目錄 管理 Chat 擴充應用程式:

    cd google-chat-samples/node/project-management-app
    
  3. 如要設定環境變數,請編輯 env.js 檔案:

    1. project-id 替換為您的 Google Cloud 專案 ID。
    2. us-central1 替換為您的 Google Cloud 專案位置。
  4. 將 Cloud 函式部署至 Google Cloud:

    gcloud functions deploy project-management-tutorial \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=projectManagementChatApp \
    --trigger-http \
    --allow-unauthenticated
    

    REGION 替換為 Cloud 函式位置 ,例如 us-central1

  1. 當函式完成部署時,請從url 回應。這就是您在下一節中使用的觸發條件網址 設定 Google Chat 應用程式。

在 Google Cloud 控制台中設定 Google Chat 應用程式

本節說明如何在 會顯示 Chat 應用程式相關資訊的 Google Cloud 控制台 包括 Chat 應用程式名稱、支援的斜線 指令和 Chat 應用程式雲端的觸發網址 向其傳送 Chat 互動事件的函式。

  1. 在 Google Cloud 控制台中,按一下「選單」 > 更多產品 > Google Workspace > 產品庫 > Google Chat API > 管理 > 設定

    前往 Chat API 設定

  2. 在「應用程式名稱」中輸入 Project Manager

  3. 在「顯示圖片」中輸入 https://developers.google.com/chat/images/quickstart-app-avatar.png

  4. 在「說明」中輸入 Manages projects with user stories.

  5. 按一下「啟用互動功能」切換鈕,將其設為「開啟」。

  6. 在「功能」下方,選取「接收 1:1 訊息」、「加入聊天室和群組對話」

  7. 在「連線設定」下方,選取「應用程式網址」

  8. 在「App URL」(應用程式網址) 中,貼上您從 Cloud 複製的觸發條件網址 函式部署項目,格式為 https://REGION-PROJECT_ID.cloudfunctions.net/project-management-tutorial。 如果您是透過 gcloud CLI 部署 Cloud 函式,這就是 url 資源。

  9. 註冊 Chat 應用程式的 斜線指令。如要註冊斜線指令:

    1. 在「斜線指令」下方,按一下「新增斜線指令」
    2. 對於下表詳述的每個斜線指令, 輸入名稱指令 ID說明,然後選取是否要 斜線指令「開啟對話方塊」,然後按一下「完成」

      名稱 指令 ID 說明 開啟對話方塊
      /createUserStory 1 使用指定標題建立故事。 已取消選取
      /myUserStories 2 列出指派給使用者的所有故事。 已取消選取
      /userStory 3 顯示指定報導的目前狀態。 已取消選取
      /manageUserStories 4 可開啟可編輯故事的對話方塊。 已選取
      /cleanupUserStories 5 刪除聊天室中的所有故事。 已取消選取
  10. 在「Visibility」(顯示設定) 下方選取 將這個即時通訊應用程式設為可供下列成員和群組使用: Workspace 網域並輸入您的電子郵件地址。

  11. (選用) 在「記錄」下方,選取「將錯誤記錄到 Logging」

  12. 按一下 [儲存]。畫面上會顯示設定儲存訊息,表示 Chat 擴充應用程式

測試 Chat 應用程式

以傳送訊息的方式測試專案管理 Chat 應用程式 並使用斜線指令建立、編輯及刪除使用者故事

  1. 使用你使用的 Google Workspace 帳戶開啟 Google Chat (在您將自己新增為信任的測試人員時提供)。

    前往 Google Chat

  2. 按一下「新的即時通訊」圖示
  3. 在 [新增 1 或多位使用者] 欄位中,輸入你的使用者名稱 Chat 應用程式。
  4. 從搜尋結果中選取 Chat 應用程式。直接 訊息隨即開啟。

  5. 在與應用程式互傳的新即時訊息中,輸入 Hello 並 按下 enter。專案管理 即時通訊應用程式會在說明選單中提供詳細回應 。
  6. 如要建立故事,請在/createUserStory Test story 傳送訊息專案管理 Chat 應用程式會以資訊卡訊息回應, 運用 Vertex AI 的生成式 AI 生成的使用者故事
  7. 在控制台中檢查 Firestore 資料庫以查看 系統會記錄您新增的聊天室 也就是曾與應用程式互動的使用者 以及剛剛建立的使用者故事

    前往 Firestore

  8. 返回 Google Chat。

    前往 Google Chat

  9. 如要編輯故事,請按一下「編輯」。滿意 請點選 [儲存]
  10. 測試應用程式支援的各個斜線指令。如要查看,請輸入 /或提及 Chat 應用程式。
  11. 發出 /cleanupUserStories,刪除測試使用者故事 斜線指令另外 移除或解除安裝應用程式。 移除後,應用程式會刪除在該聊天室中建立的所有使用者故事。

疑難排解

Google Chat 應用程式或 card 會傳回錯誤, 即時通訊介面顯示「發生錯誤」的訊息。 或「無法處理你的要求」。有時使用 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或 資訊卡產生非預期的結果例如資訊卡訊息 顯示。

雖然 Chat UI 中可能不會顯示錯誤訊息, 提供描述性錯誤訊息和記錄資料,協助您修正錯誤 。如需觀看說明, 偵錯及修正錯誤,請參閱 疑難排解並修正 Google Chat 錯誤

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取 但建議採用 Cloud 專案

  1. 在 Google Cloud 控制台中,前往「管理資源」頁面。按一下 選單 > IAM 與管理員 >「管理資源」

    前往 Resource Manager

  2. 在專案清單中選取要刪除的專案,然後按一下 刪除
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除 專案。