使用 Action Builder 製作 Google 助理的動作 (第 1 級)

1. 總覽

Google 助理開發人員平台可讓你建立軟體,將 Google 助理 (虛擬個人助理) 的功能拓展至超過 10 億個裝置,包括智慧型揚聲器、手機、汽車、電視、耳罩式耳機等。使用者會透過 Google 助理參與對話,完成各項工作,例如購買食品雜貨或叫車。開發人員可以使用 Google 助理開發人員平台,輕鬆建立並管理能滿足使用者需求的第三方服務,享受輕鬆愉快的對話體驗。

本程式碼研究室包含初學者的基本概念,適用於使用 Google 助理進行開發的平台;你不需要具備任何平台經驗,就能完成相關作業。在這個程式碼研究室中,您將為「Google 助理」建構一個簡單的動作,讓使用者知道其在 Gryffinberg 神秘土地中的冒險之旅。在 Action Builder 第 2 級代碼實驗室中,您進一步建構了這項動作,可根據使用者的輸入內容自訂他們的運勢。

建構項目

在這個程式碼研究室中,您可以使用下列函式建立簡單的動作:

  • 以問候訊息回應使用者
  • 向使用者提出問題。使用者作答後,你的動作就會根據使用者的選擇做出適當回應
  • 提供建議方塊,讓使用者點選即可提供輸入
  • 根據使用者是否為回訪者,調整問候語訊息

完成這個程式碼研究室後,已完成的動作將具有以下對話流程:

1c1e79902bed7230.png

18ef55647b4cb52c.png

課程內容

  • 如何在 Actions 主控台中建立專案
  • 如何在使用者叫用動作後傳送提示
  • 如何處理使用者的輸入內容並傳回回應
  • 如何在動作模擬工具中測試動作
  • 如何使用 Cloud Functions 編輯器實作執行要求

軟硬體需求

下列工具必須位於您的環境中:

2. 設定

以下各節將說明如何設定開發環境及建立 Actions 專案。

檢查 Google 權限設定

如要測試您在這個程式碼研究室中建立的動作,請啟用必要的權限,模擬工具才能存取您的動作。如要啟用權限,請按照下列步驟操作:

  1. 前往活動控制項頁面。
  2. 如果您尚未登入 Google 帳戶,請先登入。
  3. 啟用下列權限:
  • 網路和應用程式活動
  • 在「網路和應用程式活動」(App 活動) 底下,勾選 [包括 Chrome 歷史記錄以及採用 Google 服務的網站、應用程式和裝置中的活動記錄] 核取方塊。

建立 Actions 專案

您的 Actions 專案是您動作的容器。如要為這個程式碼研究室建立動作專案,請按照下列步驟操作:

  1. 開啟動作控制台
  2. 按一下 [新專案]
  3. 輸入專案名稱,例如 actions-codelab。(這個名稱僅供內部參考,您稍後可以為專案設定外部名稱。)

8cd05a84c1c0a32f.png

  1. 按一下 [Create Project]
  2. 在「您想建構哪種動作?」畫面,選取「自訂」資訊卡。
  3. 按一下「Next」(下一步)
  4. 選取「空白專案」資訊卡。
  5. 按一下 [開始建立建築物]

連結帳單帳戶

如要在稍後在這個程式碼研究室中使用 Cloud Functions 部署出貨要求,您必須將帳單帳戶與 Google Cloud 中的專案建立關聯。

如果您尚未將帳單帳戶與專案建立關聯,請按照下列步驟操作:

  1. 前往 Google Cloud Platform 帳單頁面
  2. 按一下 [新增帳單帳戶] 或 [建立帳戶]
  3. 輸入您的付款資訊。
  4. 按一下 [開始免費試用] 或 [提交資訊並啟用計費功能]
  5. 前往 Google Cloud Platform 帳單頁面
  6. 按一下 [我的專案] 分頁標籤。
  7. 在程式碼研究室的「動作」專案中,按一下「動作」下方的三個圓點。
  8. 按一下 [變更帳單]
  9. 在下拉式選單中,選取您設定的帳單帳戶。按一下 [設定帳戶]

為避免產生費用,請按照本程式碼研究室結尾處的「清除您的專案」一節中的步驟操作。

3. 發起對話

使用者可透過叫用與你的動作進行對話。舉例來說,如果您的動作名稱是 MovieTime,使用者只要說出 "Hey Google, Talk to MovieTime" 之類的詞組即可叫用動作,其中 MovieTime顯示名稱。如要將動作部署至實際工作環境,就必須提供顯示名稱;不過,如要測試動作,則不必定義顯示名稱。這時可以改用模擬工具中的「跟我的測試應用程式」來叫用動作。

您必須編輯主要叫用,以定義使用者叫用動作後會發生什麼情況。

根據預設,動作製作工具會在觸發叫用時提供一般的提示 (「藉由定義主要叫用來開始建立您的動作)」。

在下一節中,您將在動作主控台中自訂主叫用的提示。

設定主要叫用

如要修改「動作」會在使用者叫用動作時傳送給他們的提示,請按照下列步驟操作:

  1. 按一下導覽列中的 [主叫用]

966d037e1d7914df.png

  1. 在程式碼編輯器中,將 speech 欄位 (Start building your action...) 中的文字替換為下列歡迎訊息:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
  1. 按一下 [儲存]

在模擬工具中測試主要叫用

Actions 主控台提供可測試動作的網頁工具,稱為模擬工具。介面會模擬硬體裝置及其設定,因此您可以對動作執行動作,就像在智慧螢幕、手機、喇叭或 KaiOS 上執行的動作一樣。

叫用動作時,系統現在應立即新增您新增的提示 ("A wondrous greeting, adventurer!...")

如要在模擬工具中測試動作的主要叫用,請按照下列步驟操作:

  1. 按一下頂端導覽列中的 [測試] 以前往模擬工具。
  2. 如要在模擬工具中叫用您的動作,請在 [輸入] 欄位中輸入 Talk to my test app,然後按下 Enter

656f5736af6a5a07.png

當你觸發 Action 的主要叫用時,Google 助理會以自訂歡迎訊息回應。這時 Google 助理會在回覆問候語後結束對話。在下一個部分中,您將修改動作以繼續進行對話。

查看事件紀錄

進入「測試」分頁時,右側面板會顯示「事件記錄」,這項記錄會以事件記錄的形式顯示會話群組記錄。每個事件記錄都會顯示對話觸發期間發生的事件。

你的動作目前有一筆事件記錄,其中同時顯示使用者的輸入內容 ("Talk to my test app") 和你的動作回應。以下的螢幕截圖顯示了你的動作記錄:

443129bdcbecc593.png

您可以點選事件記錄中的向下箭頭,查看系統依照時間順序排列的事件:

  • userInput:對應使用者的輸入內容 ("Talk to my test app")。
  • interactionMatch:與動作的主要叫用回應相對應,該動作會由使用者的輸入內容觸發。如果您按一下箭頭展開此列,即可查看您為主要叫用 (A wondrous greeting, adventurer!...) 新增的提示。
  • endConversation:對應於 Main invocation 意圖中選定的轉場效果,該對話目前已經結束對話。(如需進一步瞭解轉場效果,請參閱這個程式碼研究室的下一節)。

事件紀錄可讓您掌握動作的運作情況,也能在您遇到任何問題時對動作進行偵錯。若要查看事件詳情,請按一下事件名稱旁的箭頭,如以下螢幕截圖所示:

fcc389b59af5bef1.png

4. 建立你的動作對話

您現已定義使用者叫用「動作」後會發生什麼事。繼續使用這個程式碼研究室之前,請先詳閱以下條款,瞭解動作的對話運作方式:

您的「動作」可以有一或多種場景,你必須先啟用各個場景才能加以執行。(您在這個程式碼研究室中建立的動作只有一個稱為 Start 的場景)。如要啟用場景,最常見的方法就是設定您的動作,如此一來,當使用者在某個場景中配對出相同的使用者意圖時,該意圖就會觸發轉換程序,再啟動另一個場景。

舉例來說,假設某個假設動作是由使用者提供動物的知識。當使用者叫用此動作時,系統會比對 Main invocation 意圖,並觸發轉換程序至名為 Facts 的場景。此轉換作業會啟用 Facts 場景,進而向使用者傳送以下提示:Would you like to hear a fact about cats or dogs? Facts 場景中稱為 Cat 的使用者意圖,其中包含使用者可能會聽到的貓咪情境 (例如「我想聽貓咪」「貓咪」)。當使用者要求收聽貓咪知識時,系統會比對 Cat 意圖,並觸發轉換結果至名為「Cat fact」的場景。Cat fact 場景會啟動及傳送提示,指出含有貓咪的事實。

a78f549c90c3bff6.png

圖 1. 使用 Actions Builder 所打造的動作

場景、意圖和轉場效果構成了對話邏輯,並定義使用者可透過「動作」對話採取的各種路徑。在下一節中,您將建立場景,並定義使用者叫用您的動作後啟用該場景的方式。

從主叫用轉換為場景

在本節中,您建立了名為「Start」的新場景,並傳送提示訊息給使用者,詢問他們是否希望獲得幸運。您也可以將主要叫用轉換為新的 Start 場景。

如要建立這個場景並加入轉場效果,請按照下列步驟操作:

  1. 按一下導覽列中的 [開發]
  2. 按一下側邊導覽列中的 [主要叫用]
  3. 在「轉換」部分中,按一下下拉式選單,然後在文字欄位中輸入 Start

29e12dff950a3bce.png

  1. 按一下「Add」(新增)。這會建立名為 Start 的場景,並指示動作在向使用者傳送歡迎提示後,轉換為 Start 場景。
  2. 按一下側邊導覽列中的 [場景],即可顯示場景清單。
  3. 按一下「Scenes」下方的 [Start] (開始) 即可查看 Start 場景。
  4. Start 場景的 [輸入時] 部分按一下 [+]
  5. 選取 [傳送提示]
  6. speech 欄位 (Enter the response that users will see or hear...) 中的句子替換為問題:Before you continue on your quest, would you like your fortune told?

3fc95466efd476f.png

  1. 按一下 [儲存]

Google 助理會在使用者輸入 Start 場景時,顯示提示 (Before you continue on your quest...)。

新增建議方塊

建議方塊在使用者執行動作時,提供可點選的建議使用者。在這個部分中,您可以新增建議方塊,為使用螢幕的裝置提供使用者支援。

如要在 Start 場景中使用建議方塊,請按照下列步驟操作:

  1. Start 場景中,按一下 [建議]。這個動作會新增單一建議方塊。
  2. title 欄位中,將 Suggested Response 替換為 'Yes'
  3. 使用相同的格式,手動新增名稱為「'No'」的建議方塊。您的程式碼看起來應該會像這樣:
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. 按一下 [儲存]

2d13c2ada791ec26.png

在模擬工具中測試您的操作

在這個階段,您的動作應從主要叫用轉換成 Start 場景,並詢問使用者是否有喜歡的命運。建議方塊應會顯示在模擬畫面中。

如要在模擬工具中測試動作,請按照下列步驟操作:

  1. 按一下導覽列中的 [測試],即可進入模擬工具。
  2. 如要在模擬工具中測試您的動作,請在 [輸入] 欄位中輸入 Talk to my test app,然後按下 Enter。您的操作應以 Main invocation 提示和新增的 Start 場景提示 "Before you continue on your quest, would you like your fortune told?" 進行回應。

以下螢幕截圖顯示此互動:

3c2013ebb2da886a.png

  1. 按一下 YesNo 建議方塊以回應提示。(您也可以說出「âquot;」或「"」或「輸入」YesNo或「輸入」 欄位)。

當你回覆提示時,你的動作會回應訊息,告知系統無法辨識你的輸入內容:"很抱歉,我沒聽清楚。請再試一次由於你尚未設定動作來解讀及回應「你」「否」輸入內容,因此你的動作會與「NO_MATCH」意圖相符。

根據預設,NO_MATCH 系統意圖會提供一般回應,但你可以自訂回應內容,讓使用者知道你不瞭解他們的輸入內容。當 Google 助理無法比對使用者輸入內容,因而結束了你的對話動作,Google 助理就會結束對話。

新增yesno意圖

現在用戶可以反應您的 Action 提出的問題,您可以配置您的操作以瞭解用戶'回復(&yest 是”” "否” )。在下列各節中,您會建立使用者意圖,這些條件會在使用者說出「“quot;」或「"」時進行配對,然後將這些意圖加入 Start 場景中。

建立yes意圖

如要建立 yes 意圖,請按照下列步驟操作:

  1. 按一下導覽列中的 [開發]
  2. 按一下導覽列中的 [自訂意願] 即可開啟意圖清單。
  3. 按一下意圖清單末端的 [+] (加號)。
  4. 將新意圖命名為 yes,然後按下 Enter
  5. 按一下 yes 意圖來開啟「yes」意願頁面。
  6. 在「新增訓練詞組」部分中,按一下 [輸入詞組] 文字方塊並輸入下列詞組:
  • Yes
  • Y
  • I would
  • Tell me

98440276cb9e7de8.png

  1. 按一下 [儲存]

yes 個意圖新增至 Start 個場景

現在,動作可以知道使用者何時表達「yes」的意圖。你可以將 yes 使用者意圖新增至 Start 場景,因為對方必須回應 Start 提示 (「繼續執行任務之前,你希望存取《財富雜誌》嗎?)

如要將這位使用者意圖新增至 Start 場景,請按照下列步驟操作:

  1. 按一下導覽列中的 [開始] 場景。
  2. 在「使用者意圖處理」旁的 Start 場景中,按一下 [+] (加號)。
  3. 在意圖下拉式選單中選取 [yes] (是)

681928e3d71abdbf.png

  1. 按一下 [Send 提示],然後更新「speech」欄位中的下列文字:Your future depends on the aid you choose to use for your quest. Choose wisely! Farewell, stranger.

在編輯器中,程式碼片段看起來應該像這樣:

candidates:
  - first_simple:
      variants:
        - speech: >-
            Your future depends on the aid you choose to use for your quest. Choose
            wisely! Farewell, stranger.
  1. 在「轉換」部分中,按一下下拉式選單,然後選取 [結束會話群組]
  2. 按一下 [儲存]

在模擬工具中測試 yes 意圖

在這個階段,您的動作會瞭解使用者想聽取內容及傳回適當回應的時間。

如要在模擬工具中測試意圖,請按照下列步驟操作:

  1. 按一下導覽列中的 [測試]
  2. 如要在模擬工具中測試您的動作,請在 [輸入] 欄位中輸入 Talk to my test app,然後按下 Enter
  3. 在「輸入」欄位中輸入 Yes,然後按下 Enter。您也可以點選 [是] 建議方塊。

f131998710d8ffd8.png

你的動作會回應使用者,並告知他們他們的幸運情況取決於他們選擇的輔助方式。由於您選取了「yes」意圖的End conversation轉換,因此您的動作會結束工作階段。

建立no意圖

現在,您必須建立 no 意圖,在使用者無法得知其命運時,瞭解及回應使用者。如要建立此意圖,請按照下列步驟操作:

  1. 按一下導覽列中的 [開發]
  2. 按一下導覽列中的 [自訂意願] 即可開啟意圖清單。
  3. 按一下意圖清單末端的 [+] (加號)。
  4. 將新意圖命名為 no,然後按下 Enter
  5. 按一下 [否] 開啟 **no**Intent 頁面。
  6. 在「新增訓練詞組」部分中,按一下「輸入詞組」文字方塊並輸入下列詞組:
  • No
  • N
  • I don't want
  • nope

2e7b8fd57eac94c5.png

  1. 按一下 [儲存]

no 個意圖新增至 Start 個場景

現在,動作能夠知道使用者何時表達「無」或類似「不」的類似字詞,例如「不等」。您必須將 no 使用者意圖新增至 Start 場景,因為該名使用者回應了 Start 提示 (「繼續執行任務之前,您是否要讓幸運雪橇告別」)。

如要為 Start 場景新增此意圖,請按照下列步驟操作:

  1. 按一下導覽列中的 [開始] 場景。
  2. 在「使用者意圖處理」旁的 Start 場景中,按一下 [+] (加號)。
  3. 在「Intent」(意圖) 區段的下拉式選單中,選取 [no] (否)

4aa558abdecb3121.png

  1. 按一下 [傳送提示]
  2. 使用以下文字更新「speech」欄位:I understand, stranger. Best of luck on your quest! Farewell.

在編輯器中,程式碼片段看起來應該像這樣:

 candidates:
  - first_simple:
      variants:
        - speech: >-
             I understand, stranger. Best of luck on your quest! Farewell.
  1. 在「轉場效果」部分的下拉式選單中,選取 [結束會話群組]
  2. 按一下 [儲存]

在模擬工具中測試 no 意圖

這時候,您的動作即可瞭解使用者不想聽到自己的運勢,並傳回適當的回應。

如要在模擬工具中測試意圖,請按照下列步驟操作:

  1. 按一下導覽列中的 [測試]
  2. 在「輸入」欄位中輸入 Talk to my test app,然後按下 Enter
  3. 在「輸入」欄位中輸入 No,然後按下 Enter。您也可以點選 [否] 建議方塊。

c0c8b04066577eb2.png

你的動作希望讓使用者在消費過程中保持良好的運氣,由於您選取了「no」意圖的End conversation轉換,因此您的動作會結束工作階段。

5. 執行要求

目前,您的操作回應是靜態的;當啟用提示的場景時,您的動作每次都會傳送相同的提示。在本節中,您需實作「執行要求」,其中包含建立動態對話回應的邏輯。

您的執行要求會識別使用者是否為回訪者或新使用者,並會修改「回訪者」動作的問候語。系統會減少向回訪者顯示問候語的訊息,並瞭解使用者的退貨內容:&hl=zh_TW驚人的問候!歡迎回到 Gryffinberg 的神秘土地!」

針對這個程式碼研究室,請使用動作主控台中的 Cloud Functions 編輯器來編輯及部署出貨程式碼。

您的動作會觸發 Webhook,以通知您在事件執行期間或特定場景特定部分發生時發生的事件。Webhook 觸發時,您的動作會將包含 JSON 酬載的要求傳送到您的執行要求,並加上用來處理事件的處理常式名稱。這個處理常式會執行一些邏輯並傳回對應的 JSON 回應。

建立訂單履行

您現在可以在內嵌編輯器中修改執行要求,為回訪者和新使用者叫用你的動作時產生不同的提示。

如要將這項邏輯新增至執行要求,請按照下列步驟操作:

  1. 按一下導覽列中的 [開發]
  2. 按一下導覽列中的 [Webhook] 分頁標籤。
  3. 勾選 [內嵌 Cloud Functions] 核取方塊。
  4. 按一下 [Confirm] (確認)。系統會自動為 index.jspackage.json 檔案新增樣板程式碼。

d4702f1de6404285.png

  1. index.js 的內容替換為下列程式碼:

index.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});


exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
  1. 按一下 [儲存執行要求]
  2. 按一下 [Deploy Fulfillment] (部署執行要求)

請稍候幾分鐘,讓 Cloud Functions 佈建及部署執行要求。您應該會在程式碼編輯器上方看見「Cloud Function 正在部署...」訊息。成功部署程式碼後,訊息會更新為「您的 Cloud 函式部署為最新版本」

瞭解程式碼

您的出貨要求會使用 Node.js 的 Actions on Google 執行要求資料庫,以回應來自 Google 助理的 HTTP 要求。

在先前的程式碼片段中,您可以定義 greeting 處理常式,這個函式會檢查 lastSeenTime 屬性,確認使用者是否先前曾造訪該動作。如果未定義 lastSeenTime,則使用者是新的,而 greeting 處理常式會提供新使用者問候語。

更新主要叫用以觸發 Webhook

現在您已定義 greeting 函式,現在可以在主要叫用意圖中設定 greeting 事件處理常式,這樣您的動作就會知道當使用者叫用您的動作時呼叫此函式。

如要將動作設定為呼叫新的 greeting 處理常式,請按照下列步驟操作:

  1. 按一下導覽列中的 [主叫用]
  2. 清除「傳送提示」
  3. 勾選 [Call your Webhook] 核取方塊。
  4. 在文字方塊中新增 greeting

a803afe4f7375a97.png

  1. 按一下 [儲存]

在模擬工具中測試更新的主要叫用

如要在模擬工具中測試動作,請按照下列步驟操作:

  1. 按一下導覽列中的 [測試],即可進入模擬工具。
  2. 在「輸入」欄位中輸入 Talk to my test app,然後按下 Enter

由於你先前已在這個程式碼研究室中測試過你的動作,因此你並非新使用者,因此會收到以下縮短的問候語:&hl=zh_TW歡迎回到 Gryffinberg 的神秘土地!...」

清除專案 [建議]

為了避免產生可能的費用,建議您移除不需要使用的專案。如要刪除您在這個程式碼研究室中建立的專案,請按照下列步驟操作:

  1. 如要刪除 Cloud 專案和資源,請完成關閉 (刪除) 專案一節中所列步驟。
  1. 選用:如要立即從 Actions 主控台移除專案,請完成刪除專案一節中列出的步驟。如果您未完成這個步驟,專案約在 30 天後就會自動移除。

6. 恭喜!

你瞭解建立「Google 助理」動作的基本操作。

說明

  • 如何使用 Actions 主控台設定 Actions 專案
  • 如何在主要叫用中加入提示,方便使用者與您的動作進行對話
  • 如何建立包含場景、意圖、轉場效果、建議方塊,以及出貨功能的對話介面
  • 如何使用動作模擬工具測試動作

瞭解詳情

探索下列資源,進一步瞭解如何建構 Actions for Google 助理:

意見回饋問卷調查

離開前,請填寫一份簡短的問卷調查,讓我們瞭解您的使用體驗。