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

1. 總覽

Google 助理開發人員平台可讓您建立軟體,將 Google 助理 (虛擬個人助理) 的功能擴充至超過 10 億部裝置,包括智慧音箱、手機、汽車、電視、耳機等。使用者可以與 Google 助理對話,完成購買雜貨或預約叫車等工作。開發人員可以使用 Google 助理開發人員平台,輕鬆建立及管理使用者與第三方執行服務之間的對話式體驗,提供令人滿意且有效的服務。

本程式碼實驗室涵蓋使用 Google 助理 Actions SDK 開發的初級概念,您不需要具備任何平台經驗,即可完成本實驗室。在本程式碼實驗室中,您將建構一個簡單的 Google 助理動作,在使用者開始探索 Gryffinberg 神秘大地時,為他們占卜運勢。在 Actions SDK 第 2 級程式碼實驗室中,您將進一步建構這個動作,根據使用者的輸入內容自訂運勢。

建構項目

在本程式碼實驗室中,您將建構具有下列功能的簡單動作:

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

完成本程式碼實驗室後,您建構的動作將具備下列對話流程 (麥克風旁的文字代表使用者輸入內容,喇叭旁的文字代表動作的回應):

1c1e79902bed7230.png18ef55647b4cb52c.png

課程內容

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

軟硬體需求

環境中必須具備下列工具:

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

2. 設定

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

檢查 Google 權限設定

如要測試您在本程式碼實驗室中建構的動作,請啟用必要權限,讓模擬器可以存取您的動作。

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

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

建立動作專案

動作專案是動作的容器。

如要為這個程式碼實驗室建立動作專案,請按照下列步驟操作:

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

8cd05a84c1c0a32f.png

  1. 按一下 [Create Project]。
  2. 在「What kind of Action do you want to build?」畫面中,選取「Custom」資訊卡。
  3. 點選 [下一步]。
  4. 在「How do you want to build it?」畫面中,選取「Blank project」資訊卡。
  5. 按一下「Start building」(開始建構)。

儲存動作的專案 ID

專案 ID 是動作的專屬 ID。本程式碼實驗室有多個步驟需要用到專案 ID。

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

  1. 在 Actions 主控台中,按一下三個垂直點 (在此插入圖示)。
  2. 按一下「專案設定」。

6f59050b85943073.png

  1. 複製專案 ID。

連結帳單帳戶

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

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

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

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

安裝 gactions 指令列介面

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

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

下載動作專案

從 Actions 控制台下載 Actions 專案,開始開發動作。

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

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

瞭解檔案結構

從 Actions 控制台下載的 Actions 專案會以 YAML 檔案結構呈現。下圖顯示檔案結構的概略表示法:

2aefeeab7c8eb32f.png

檔案結構包含下列項目:

  • actions/:代表動作專案。叫用動作時,系統會呼叫 actions.yaml,接著呼叫 custom/global/actions.intent.MAIN.yaml 檔案。
  • custom/:您要用來修改動作的目錄。
  • global/:這個目錄包含平台自動新增至專案的系統意圖。本程式碼實驗室稍後會進一步說明系統意圖。
  • manifest.yaml:包含可傳輸資訊的檔案,或不屬於任何特定專案且可在專案之間移動的檔案。
  • settings/:代表動作專案的設定,例如顯示名稱、預設語言代碼和類別。

3. 開始對話

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

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

根據預設,叫用動作時,動作會提供一般提示 (「Start building your Action by defining main invocation.」)。

在下一節中,您將在 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 上執行一樣。

叫用動作時,動作現在應該會以您新增的自訂提示 (「A wondrous greeting, adventurer!...」) 回應。

您可以使用 gactions deploy preview 指令在控制台中測試動作,不必更新動作專案版本。執行這項指令時,您在本機檔案系統中所做的變更,都不會套用至已部署的動作專案版本,但您可以在預先發布版中測試這些變更。

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

  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 助理會在回應問候語後結束對話。在下一節中,您將修改動作,讓對話繼續進行。

查看事件記錄

在 Actions 主控台的「Test」分頁中,面板會顯示事件記錄,其中包含對話記錄。每個事件記錄都會顯示該對話輪次中發生的事件。

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

a1b748d1fcebca80.png

在事件記錄中,點選 Talk to my test app 旁的向下箭頭,即可查看該輪對話中發生的事件 (按時間順序排列):

  • userInput:對應使用者的輸入內容 (「與我的測試應用程式交談」)
  • 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 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...) 會加入提示佇列。

新增建議方塊

建議方塊會向使用者提供可點選的建議,而動作會將這些建議視為使用者輸入內容進行處理。在本節中,您將新增 Yes 和 No 建議方塊,這些方塊會顯示在您剛才設定的提示 (Before you continue on your quest, would you like your fortune told?) 下方,為使用螢幕裝置的使用者提供支援。

如要在 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. 按一下「是」或「否」建議方塊,回應提示。(你也可以說「是」或「否」,或在「輸入」欄位中輸入 Yes 或 No)。

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

根據預設,NO_MATCH 系統意圖會提供一般回覆,但您可以自訂這些回覆,向使用者表示您不瞭解他們輸入的內容。如果 Google 助理三次無法比對使用者輸入內容,就會結束使用者與動作的對話。

新增 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. 在 Start.yaml 檔案結尾新增 intentEvents 和 yes 處理常式:

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 意圖相符時,系統會將提示「Your future depends on the item you choose to use for your quest...」新增至提示佇列。接著,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. 按一下「測試」,前往模擬工具。
  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 場景

現在,動作可以理解使用者何時表達「不」或類似「不」的意思,例如「不要」。您需要將 no 自訂意圖新增至 Start 場景,因為使用者正在回應 Start 提示 (「在繼續任務之前,您想算命嗎?」)。

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

  1. 在文字編輯器開啟 custom/scenes/Start.yaml。
  2. 在 Start.yaml 的 yes 處理常式下方,新增下列 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. 按一下「測試」,前往模擬工具。
  3. 在「Input」(輸入) 欄位中輸入 Talk to my test app,然後按下 Enter 鍵。
  4. 在「Input」(輸入) 欄位中輸入 No,然後按下 Enter 鍵。或者,點選「No」建議方塊。

c0c8b04066577eb2.png

您的動作不會提供運勢,而是祝使用者旅途順利。由於您為 no 意圖設定了 End conversation 轉換,動作會結束工作階段。

5. 導入執行要求

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

執行要求會判斷使用者是回訪者還是新使用者,並修改回訪者的動作問候訊息。回訪者會看到較短的問候語,並確認使用者回訪:「歡迎回來,冒險家!歡迎回到神祕的格里芬堡!

在本程式碼實驗室中,您將使用 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 處理常式,會根據使用者輸入的名稱,

user。

  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 執行要求程式庫,回應 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 可與網頁式 IDE Actions Builder 互通,後者已整合至 Actions 主控台。您可以使用 gactions push 指令,將本機檔案系統推送至控制台中的動作草稿。gactions deploy preview 只能在模擬器中測試動作,gactions push 則會將本機檔案中的所有內容移至 Actions Builder。

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. 按一下「場景」旁的下拉式箭頭,然後點選「開始」。您應該會看到動作 Start 場景的視覺呈現,如下方螢幕截圖所示:

332404b148609e96.png

清理專案 [建議]

為避免產生費用,建議您移除不打算使用的專案。如要刪除在本程式碼實驗室建立的專案,請按照下列步驟操作:

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

7. 恭喜!

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

涵蓋內容

  • 如何在 Actions 控制台中設定動作專案
  • 如何使用 Actions SDK 在本機檔案系統上建構動作專案
  • 如何在主要叫用中加入提示,讓使用者可以開始與動作對話
  • 如何使用場景、意圖、轉換、建議方塊和執行要求建立對話介面
  • 如何使用動作模擬器測試動作

瞭解詳情

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

在 Twitter 上追蹤 @ActionsOnGoogle,隨時掌握最新公告,並在推文中加入 #AoGDevs 主題標記,分享你的作品!

意見回饋問卷調查

離開前,請填寫簡短的問卷調查,分享你的體驗。