使用 Actions SDK (第 1 級) 建構適用於 Google 助理的動作

1. 總覽

透過 Google 助理開發人員平台,您可以建立可擴充 Google 助理 (虛擬個人助理) 功能的軟體,支援超過 10 億部裝置,包括智慧音箱、手機、汽車、電視和耳機等。使用者可以透過 Google 助理對話處理生活大小事,例如購買雜貨或預約行程。開發人員可以使用 Google 助理開發人員平台,輕鬆建立及管理使用者和第三方執行服務之間的順暢有效對話體驗。

本程式碼研究室涵蓋初級概念,協助您瞭解如何使用 Actions SDK for Google 助理進行開發作業。即使沒有先前的使用經驗也沒問題。在本程式碼研究室中,您將建構一個適用於 Google 助理的簡易動作,讓使用者在 Gryffinberg 神話大地展開冒險。在 Actions SDK 級別 2 程式碼研究室中,您將進一步建構這項動作,以便根據使用者輸入內容自訂調整效果。

建構項目

在本程式碼研究室中,您將使用下列函式建構簡單的動作:

  • 使用問候語訊息回覆使用者
  • 向使用者提出問題,並根據使用者的選擇提供適當回應
  • 提供建議方塊,讓使用者點選即可輸入內容
  • 根據使用者是否為回訪者,修改問候語訊息

完成本程式碼研究室後,完成的動作將包含下列對話流程 (麥克風旁的文字代表使用者輸入內容,喇叭旁的文字則代表該動作的回應):

1c1e79902bed7230.png

18ef55647b4cb52c.png

課程內容

  • 如何在 Actions 主控台建立專案
  • 如何使用 gactions 工具,在 Actions 主控台和本機檔案系統之間推送及提取動作專案
  • 如何在叫用動作後傳送提示給使用者
  • 如何處理使用者的輸入內容並傳回回應
  • 如何在動作模擬工具中測試動作
  • 如何使用 Cloud Functions 編輯器實作執行要求

軟硬體需求

您的環境中必須包含下列工具:

  • 自選的 IDE 或文字編輯器
  • 用於執行 Node.jsnpm 殼層指令的終端機
  • 使用網路瀏覽器,例如 Google Chrome

2. 設定

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

檢查 Google 權限設定

如要測試您在本程式碼研究室中建構的動作,請啟用必要權限,模擬工具可以存取您的動作。

如要啟用權限,請按照下列步驟操作:

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

建立 Actions 專案

Actions 專案是 Action 的容器。

如要為本程式碼研究室建立 Actions 專案,請按照下列步驟操作:

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

8cd05a84c1c0a32f.png

  1. 按一下 [Create Project]
  2. 在「您想建構哪一種動作?」畫面中,選取「自訂」資訊卡。
  3. 點選「下一步」。
  4. 在「How you want to build it?」畫面中,選取「空白專案」資訊卡。
  5. 按一下「開始建構」

儲存動作的專案 ID

專案 ID 是動作的專屬 ID。在本程式碼研究室中,您需要使用專案 ID 的幾個步驟。

如要擷取專案 ID,請按照下列步驟操作:

  1. 在動作控制台中,按一下三個垂直圓點 (在這裡插入圖示)。
  2. 按一下「專案設定」

6f59050b85943073.png

  1. 複製專案 ID**。**

連結帳單帳戶

如果您還沒有帳單帳戶,請先建立帳單帳戶,並將該帳戶與 Google Cloud 中的專案建立關聯,以便稍後透過 Cloud Functions 部署執行要求。

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

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

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

安裝 gactions 指令列介面

在本程式碼研究室中,您將使用 gactions 指令列介面 (CLI) 工具,同步處理 Actions 主控台和本機檔案系統之間的 Actions 專案。

如要安裝 gactions CLI,請按照「安裝 gactions 指令列工具」中的指示操作。

下載 Actions 專案

如要開始開發動作,請從 Actions 主控台下載 Actions 專案。

如要下載 Actions 專案,請按照下列步驟操作:

  1. 如要建立新目錄並變更為該目錄,請執行下列指令:
mkdir myproject
cd myproject
  1. 如要將 Actions 專案的設定複製到本機檔案系統,請執行下列指令:
gactions pull --project-id <projectID>

瞭解檔案結構

您從 Actions 主控台下載的 Actions 專案會以 YAML 檔案結構表示。下圖顯示檔案結構的高層級表示法:

2aefeeab7c8eb32f.png

檔案結構如下:

  • actions/:代表您的 Actions 專案。系統叫用動作時,系統會呼叫 actions.yaml,然後呼叫 custom/global/actions.intent.MAIN.yaml 檔案。
  • custom/:用於修改動作的目錄。
  • global/:此目錄包含平台自動新增至專案的系統意圖。稍後您將在本程式碼研究室中進一步瞭解系統意圖。
  • manifest.yaml:含有可傳輸資訊的檔案,或不屬於任何特定專案的資訊,可以在專案之間移動。
  • settings/:代表動作專案的設定,例如顯示名稱、預設語言代碼和類別。

3. 發起對話

使用者透過叫用功能來與你的動作展開對話。舉例來說,如果動作名稱為「MovieTime」,使用者只要說出「Ok Google,說話 MovieTime」這類指令,即可叫用動作,其中 MovieTime顯示名稱。如要部署至正式環境,您的動作必須設有顯示名稱;不過,如要測試動作,則不需要定義顯示名稱。相反地,您可以在模擬器中使用「與我的測試應用程式交談」這個詞組叫用您的動作。本節稍後會進一步說明模擬工具。

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

根據預設,當您觸發叫用時,您的動作會提供一般提示 (「定義主要叫用,開始建構您的動作」)。

在下一節中,您將在 custom/global/actions.intent.MAIN.yaml 檔案中自訂主要叫用的提示。

設定主要叫用

您可以在 actions.intent.MAIN.yaml 檔案中編輯主要叫用提示。

如要修改動作在使用者叫用動作時傳回的提示,請按照下列步驟操作:

  1. 在文字編輯器中開啟 custom/global/actions.intent.MAIN.yaml
  2. 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.

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: 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.
transitionToScene: actions.scene.END_CONVERSATION
  1. 儲存檔案。

在模擬器中測試主要叫用

Actions 主控台提供名為模擬工具的網路工具,用於測試您的動作。該介面會模擬硬體裝置和相關設定,因此您可以像在智慧螢幕、手機、喇叭或 KaiOS 上執行動作一樣,展開動作。

叫用動作時,動作應會回應你新增的自訂提示,例如「超讚問候,探險家!...」

您可以使用 gactions deploy preview 指令在控制台中測試動作,而不必更新 Actions 專案版本。執行這個指令時,您在本機檔案系統中進行的變更不會套用至 Actions 專案的部署版本,但您可以在預覽版本中測試這些變更。

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

  1. 如要將專案部署至 Actions 主控台以便測試,請在終端機中執行下列指令:
gactions deploy preview

您應該會收到類似以下的輸出內容:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 複製所提供的網址並貼到瀏覽器中。
  2. 如要在模擬工具中叫用動作,請在「Input」欄位中輸入 Talk to my test app,然後按下 Enter 鍵。

656f5736af6a5a07.png

當您觸發動作的主要叫用時,Google 助理就會以您的自訂歡迎訊息回應。此時,Google 助理會在回應問候語後結束對話。在下一節中,您將修改動作,讓對話繼續執行。

查看事件記錄

您位於動作控制台的「測試」分頁時,面板會顯示「事件記錄」,其中以事件記錄的形式顯示對話記錄。每個事件記錄都會顯示對話期間發生的事件。

您的動作目前有一項事件記錄,其中會顯示使用者的輸入內容 (「與我的測試應用程式交談」) 和動作回應。以下螢幕截圖顯示動作的事件記錄:

a1b748d1fcebca80.png

只要在事件記錄中按一下 Talk to my test app 旁的向下箭頭,即可查看當次對話發生的事件 (依時間先後順序排列):

  • userInput:對應至使用者的輸入內容 (「與測試應用程式交談」)
  • interactionMatch:對應至動作的主要叫用回應 (由使用者輸入內容觸發)。如果您按一下箭頭展開這一列,就會看到您針對主要叫用新增的提示 (A wondrous greeting, adventurer!...)
  • endConversation:對應目前結束對話的 Main invocation 意圖中所選的轉場效果。如要進一步瞭解轉場效果,請參閱本程式碼研究室的下一節。

事件記錄可讓您瞭解動作的運作情形,並在發生問題時提供實用工具,協助您對動作進行偵錯。如要查看事件詳細資料,請按一下事件名稱旁的箭頭,如下方螢幕截圖所示:

fcc389b59af5bef1.png

4. 建立 Action 的對話

您已經定義使用者叫用動作後會發生什麼事,現在可以建立「動作」的其餘對話。在繼續本程式碼研究室之前,請先熟悉下列條款,瞭解動作的對話如何運作:

您的動作可以有一或多個場景,你必須啟用每個場景才能運作。您在本程式碼研究室中建構的動作只有一個標題為 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 SDK 建構的動作中,典型的對話回合流程。

這些場景、情境、意圖和轉場效果構成了對話邏輯,並定義使用者可在動作的對話中採取的不同路徑。在下一節中,您將建立場景,並定義使用者叫用動作後該場景的啟動方式。

從主要叫用轉換至場景

在本節中,您將建立名為 Start 的新場景,此情境會傳送提示給使用者,詢問他們是否要設定財富。此外,您要新增從主要叫用轉換到新的 Start 場景的轉場效果。

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

  1. 在文字編輯器中開啟 custom/global/actions.intent.MAIN.yaml
  2. transitionToScene 欄位 (actions.scene.END_CONVERSATION) 中的文字替換為以下內容:transitionToScene: Start

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: 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.
transitionToScene: Start

這個動作會指示動作從主要叫用轉換至 Start 場景。

  1. 儲存檔案。
  2. 在終端機中,在 custom 目錄中建立新的 scenes 目錄:
mkdir custom/scenes 
  1. scenes 目錄中建立名為 Start.yaml 的新檔案,代表動作中的 start 場景:
touch custom/scenes/Start.yaml 
  1. 在文字編輯器中開啟 Start.yaml
  2. 將下列程式碼貼入 Start.yaml 檔案:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?

Start.yaml 檔案程式碼中,有一個名為 onEnter 的欄位,這是在場景生命週期中執行的第一個階段。

在這種情況下,當使用者首次進入 Start 場景時,系統會將提示 (Before you continue on your quest...) 新增至提示佇列。

新增建議方塊

建議方塊會為動作提供可點擊的建議,使用者在輸入時執行動作。在本節中,您將新增剛剛設定的提示方塊 (Before you continue on your quest, would you like your fortune told?) 下方的 YesNo 建議方塊,為有螢幕裝置的使用者提供支援。

如要在 Start 場景的提示中新增建議方塊,請按照下列步驟操作:

  1. 請根據下列程式碼片段更新 Start.yaml 中的程式碼,包括設定建議方塊的程式碼:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?
        suggestions:
        - title: "Yes"
        - title: "No"
  1. 儲存檔案。

在模擬工具中測試動作

此時,您的動作應從主要叫用轉換為 Start 場景,並詢問使用者是否要收到通知。建議方塊也會顯示在模擬畫面中。

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

  1. 在終端機中執行下列指令:
gactions deploy preview

您應該會收到類似以下的輸出內容:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 複製所提供的網址並貼到瀏覽器中。
  2. 按一下「Test」(測試),前往模擬工具。
  3. 在「Input」欄位中輸入 Talk to my test app,然後按下 Enter 鍵。您的動作應透過 Main invocation 提示和新增的 Start 場景提示回應「在任務中繼續下一步,您是否想算命?」,並顯示建議方塊。

以下螢幕截圖顯示了這項互動:

3c2013ebb2da886a.png

  1. 按一下「是」或「否」建議方塊,即可回覆提示。(你也可以說「」或「否」,或是在「輸入」欄位中輸入 YesNo)。

當您回應提示時,您的動作會回應一則訊息,指出它無法理解您所輸入的內容:「抱歉,我沒聽清楚。可以請你再試一次嗎?」您尚未將 Action 設定為理解並回應「Yes」或「No」輸入內容,因此動作會將您輸入的內容與 NO_MATCH 意圖進行比對。

根據預設,NO_MATCH 系統意圖會提供一般回應,但您可以自訂這些回應,向使用者表明您不瞭解其輸入內容。Google 助理會在使用者輸入的內容達三次不符條件時,結束使用者的對話。

新增 yesno 意圖

使用者現在能夠回應您動作所提出的問題,您就可以設定動作,瞭解使用者的("Yes""No")。在後續章節中,您會建立在使用者說出「」或「」時配對的自訂意圖,然後將這些意圖新增至 Start 場景。

建立「yes」意圖

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

  1. 在終端機中,在 custom 目錄中建立名為 intents 的新目錄:
mkdir custom/intents 
  1. intents 目錄中建立名為 yes.yaml 的新檔案:
touch custom/intents/yes.yaml
  1. 在文字編輯器中開啟 yes.yaml
  2. 將下列包含訓練詞組的程式碼片段貼入 yes.yaml

yes.yaml

trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
  1. 儲存檔案。

yes 意圖新增至 Start 個場景

現在,動作可以瞭解使用者表示「是」意圖。您可以將 yes 自訂意圖新增至 Start 場景,因為使用者會回應 Start 提示 (「在繼續任務之前,你想收到財星嗎?」)。

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

  1. 在文字編輯器中開啟 custom/scenes/Start.yaml
  2. intentEventsyes 處理常式新增至 Start.yaml 檔案的結尾:

Start.yaml

intentEvents:
- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
  intent: "yes"
  transitionToScene: actions.scene.END_CONVERSATION

當比對出yes意圖時,以下提示「您未來取決於您在任務中使用的項目...」就會新增至提示佇列。接著,Start 場景會轉換至 actions.scene.END_CONVERSATION 系統場景,其會在提示佇列中提供提示並結束對話。

在模擬工具中測試 yes 意圖

這時,您的動作就能瞭解使用者想聽音樂,並傳回適當的回應。

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

  1. 在終端機中執行下列指令:
gactions deploy preview

您應該會收到類似以下的輸出內容:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 複製所提供的網址並貼到瀏覽器中。
  2. 按一下「Test」(測試),前往模擬工具。
  3. 如要在模擬工具中測試動作,請在「Input」欄位中輸入 Talk to my test app,然後按下 Enter 鍵。
  4. 在「Input」欄位中輸入 Yes,然後按下 Enter 鍵。您也可以按一下「是」建議方塊。

f131998710d8ffd8.png

您的動作會回應使用者,並告訴他們要根據他們選擇的援助力而戰。如此一來,由於您為 yes 意圖設定了 End conversation 轉換作業,因此動作會結束工作階段。

建立「no」意圖

現在,您可以建立 no 意圖,讓動作在使用者不想聽歌時瞭解並做出回應。

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

  1. 在終端機中,在 intents 目錄中建立名為 no.yaml 的新檔案:
touch custom/intents/no.yaml
  1. 在文字編輯器中開啟 no.yaml
  2. 將下列訓練詞組貼入 no.yaml 檔案:

no.yaml

trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
  1. 儲存檔案。

no 意圖新增至 Start 個場景

現在,動作可以瞭解使用者表示「否」或與「否」類似的結果 (例如「nope」)。由於使用者回應了 Start 提示,因此您必須將 no 自訂意圖新增至 Start 場景 (「在繼續任務之前,你想收到財星嗎?」)。

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

  1. 在文字編輯器中開啟 custom/scenes/Start.yaml
  2. Start.yamlyes 處理常式下方,新增下列 no 處理常式:

Start.yaml

- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: I understand, stranger. Best of luck on your quest! Farewell.
  intent: "no"
  transitionToScene: actions.scene.END_CONVERSATION
  1. 儲存檔案。

在模擬工具中測試 no 意圖

此時,您的動作就能瞭解使用者不想聽新聞,並傳回適當的回應。

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

  1. 在終端機中執行下列指令:
gactions deploy preview

您應該會收到類似以下的輸出內容:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 複製所提供的網址並貼到瀏覽器中。
  2. 按一下「Test」(測試),前往模擬工具。
  3. 在「Input」欄位中輸入 Talk to my test app,然後按下 Enter 鍵。
  4. 在「Input」欄位中輸入 No,然後按下 Enter 鍵。或者,按一下 No 建議方塊。

c0c8b04066577eb2.png

您的 Action 希望使用者不會因此出財,如此一來,由於您為 no 意圖設定了 End conversation 轉換作業,因此動作會結束工作階段。

5. 實作執行要求

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

執行要求可以識別使用者是回訪者或新使用者,並且修改回訪者的動作問候訊息。系統會縮短回訪者的問候訊息,並確認使用者傳回的訊息:「AJitro 問世,探險家!歡迎回到格林芬堡的神話大地!」

在本程式碼研究室中,您將使用 Cloud Functions 編輯器來編輯及部署執行要求程式碼。

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

建立執行要求

在這個部分中,您將修改執行要求,在回訪者和新使用者叫用動作時產生不同的提示。

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

  1. 在終端機中,請確認您位於專案的根目錄,然後建立新的 webhooks 目錄:
mkdir webhooks 
  1. webhooks 目錄中建立名為 ActionsOnGoogleFulfillment.yaml 的新檔案:
touch webhooks/ActionsOnGoogleFulfillment.yaml
  1. 在文字編輯器中開啟 ActionsOnGoogleFulfillment.yaml
  2. greeting 處理常式和 inlineCloudFunction 內容新增至 ActionsOnGoogleFulfillment.yaml 檔案:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

ActionsOnGoogleFulfillment.yaml 檔案會定義 Webhook 處理常式 (例如 greeting 處理常式),並指示動作使用 Cloud Functions 做為 Webhook 端點。

  1. webhooks 目錄中建立新的 ActionsOnGoogleFulfillment 目錄:
mkdir webhooks/ActionsOnGoogleFulfillment
  1. ActionsOnGoogleFulfillment 目錄中建立名為 index.js 的新檔案:
touch webhooks/ActionsOnGoogleFulfillment/index.js
  1. 在文字編輯器中開啟 index.js
  2. 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);

這個程式碼會定義 greeting 處理常式,以便將適當的問候語傳送給

內容。

  1. 儲存檔案。
  2. ActionsOnGoogleFulfillment 目錄中建立名為 package.json 的新檔案:
touch webhooks/ActionsOnGoogleFulfillment/package.json

package.json 檔案會指定 Webhook 的依附元件和其他中繼資料。

  1. 在文字編輯器中開啟 package.json
  2. 請複製這個 GitHub 存放區中的程式碼,然後貼到 package.json 檔案中。
  3. 儲存檔案。

瞭解程式碼

執行要求會使用 Node.js 適用的 Actions on Google Fulfillment 程式庫來回應 Google 助理的 HTTP 要求。

在先前的程式碼片段中,您要定義 greeting 處理常式,用來檢查使用者先前是否透過 lastSeenTime 屬性造訪動作。如未定義 lastSeenTime 屬性,使用者會是新的使用者,並收到為新使用者的問候語。否則,訊息會確認使用者的回傳,並產生修改的問候語。

更新主要叫用以觸發 Webhook

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

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

  1. 在文字編輯器中開啟 custom/global/actions.intent.MAIN.yaml
  2. 使用下列程式碼取代 actions.intent.MAIN.yaml 中的程式碼:

actions.intent.MAIN.yaml

handler:
  webhookHandler: greeting
transitionToScene: Start
  1. 儲存檔案。

現在,當主要叫用意圖相符時,系統就會呼叫 greeting Webhook 處理常式。

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

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

  1. 在終端機中執行下列指令:
gactions deploy preview

您應該會收到類似以下的輸出內容:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 複製所提供的網址並貼到瀏覽器中。
  2. 如要在模擬工具中測試動作,請在「Input」欄位中輸入 Talk to my test app,然後按下 Enter 鍵。

由於您之前在本程式碼研究室中測試了動作,因此不是新使用者,所以您將收到以下簡短問候:「漂亮的問候,,探險家!歡迎回到格林芬堡的神話大地!..."

6. 使用 Actions Builder 將動作視覺化

Actions SDK 與名為 Actions Builder 的網頁式 IDE 互通,且這些 IDE 已經整合至 Actions 主控台。您可以使用 gactions push 指令,將本機檔案系統推送至控制台中的動作草稿。有別於 gactions deploy preview,這只能在模擬器中測試動作,gactions push 會將本機檔案中的所有內容移至 Actions Builder。

Actions 主控台會以視覺化方式呈現動作設定。在開發過程中,以圖表呈現動作看起來很有用,並不會影響用來測試的動作版本。

如要推送 Actions 專案並在 Actions 主控台中查看該專案,請按照下列步驟操作:

  1. 在終端機中執行下列指令,將專案推送至 Actions 主控台:
gactions push

您應該會收到類似以下的輸出內容:

✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
  1. 複製所提供的網址並貼到瀏覽器中。
  2. Actions 主控台中,按一下頂端導覽列的「Develop」(開發)
  3. 按一下「Scenes」旁邊的下拉式箭頭,然後點選「Start」。動作的 Start 場景應以視覺化方式呈現,如以下螢幕截圖所示:

332404b148609e96.png

清理專案 [建議]

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

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

7. 恭喜!

您已瞭解使用 Actions SDK 建構 Actions for Google 助理的基本概念。

涵蓋內容

  • 如何在 Actions Console 中設定 Actions 專案
  • 如何使用 Actions SDK 在本機檔案系統中建構 Actions 專案
  • 如何在主要叫用中新增提示,讓使用者能用你的動作發起對話
  • 如何建立對話式介面,包括場景、意圖、轉場效果、建議方塊和執行要求。
  • 如何使用動作模擬工具測試動作

瞭解詳情

請參閱下列資源,進一步瞭解如何建構適用於 Google 助理的動作:

在 Twitter 追蹤 @ActionsOnGoogle,藉此掌握最新公告,並透過 #AoGDevs 分享您建構的內容!

意見回饋問卷調查

離開前,請先填寫一份簡短的問卷調查,告訴我們你的使用體驗。