對話動作可讓您使用自己的對話介面擴充 Google 助理,讓使用者能夠存取您的產品和服務。動作會利用 Google 助理的強大自然語言理解 (NLU) 引擎處理及瞭解自然語言輸入內容,並根據該輸入內容執行任務。
總覽
對話動作是一種簡單的物件,用來定義對話中的進入點 (稱為叫用):
- 「叫用」會定義使用者如何要求 Google 助理啟動其中一項動作的對話。Action 的叫用是由單一 意圖定義,
- 「對話」會定義使用者在叫用後與動作的互動方式。請使用意圖、類型、情境和提示建構對話。
- 此外,動作還能將額外的工作委派給「執行要求」,也就是透過 Webhook 與「動作」進行通訊的網路服務。這可讓您執行資料驗證、呼叫其他網路服務、執行商業邏輯等。
您可以根據使用者重視的用途,將一或多個動作合併為名為「動作」專案的邏輯容器。您的動作專案包含完整的叫用模型 (所有叫用的集合),可讓使用者從對話模型的邏輯位置開始 (所有使用者可以說的指令,以及所有傳回給使用者的方法)。
叫用
叫用的關聯顯示名稱代表品牌、名稱或人物角色,以便使用者要求 Google 助理叫用動作。使用者可以單獨使用這個顯示名稱 (稱為主要叫用動作) 或選擇性的深層連結詞組,來叫用動作。
舉例來說,使用者可以用以下詞組叫用專案中顯示名稱為「Facts for Google」的三個獨立動作:
- 「Ok Google,與 Google 交談。」
- 「Ok Google,與 Google 聯絡以獲得公司事實」
- 「Ok Google,與 Google 交談以獲得歷史事實」
範例中的第一個叫用是主要叫用。這個叫用與名為 actions.intent.MAIN
的特殊系統意圖相關聯。第二個和第三個叫用是深層連結叫用,方便您指定其他詞組,讓使用者要求特定功能。這些叫用會對應到您指定為全域的使用者意圖。這個範例中的每個叫用作業都會提供一個進入點,對應一個動作。
圖 2 說明典型的主要叫用流程:
- 使用者要求某項動作時,通常會要求 Google 助理提供顯示名稱。
- Google 助理會比對使用者的要求和對應的要求相符。在本例中為
actions.intent.MAIN
。 - 此動作會收到意圖比對通知,並回應對應的提示以與使用者開始對話。
對話
對話會定義使用者在叫用動作後如何與動作互動。您只要為對話定義有效的使用者輸入內容、處理該輸入的邏輯,以及要回覆使用者的對應提示,系統就會建立這些互動。以下圖表顯示了一般對話如何與對話的低階元件搭配運作:意圖、類型、情境和提示。
圖 3 說明一般對話回合:
- 使用者說出內容時,Google 助理 NLU 會將輸入內容與適當的意圖進行比對。如果意圖的語言模型能與使用者輸入內容密切或完全一致,系統就會比對意圖。您可以指定「訓練詞組」或使用者想表達的內容範例,以定義語言模型。Google 助理會使用這些訓練詞組並加以擴充,以建立意圖的語言模型。
- 當 Google NLU 比對意圖時,就可以從輸入內容中擷取所需的參數。這些參數有相關聯的「類型」,例如日期或數字。請為意圖訓練詞組的特定部分加上註解,以指定要擷取的參數。
- 接著,情境會處理相符的意圖。您可以將場景視為動作的邏輯執行者,執行繁瑣的工作並擺脫必要的邏輯,以便推動對話。場景會以迴圈的形式執行,並提供靈活的執行生命週期,方便您驗證意圖參數、執行運算單元填充、傳送提示給使用者等等。
- 情境執行完畢後,通常會傳送提示給使用者,以繼續對話或視情況結束對話。
出貨
叫用或對話時,您的動作會觸發 Webhook,通知執行要求執行某些工作。
圖 4 說明如何使用執行要求產生提示,這是使用執行要求的常見方式:
- 在動作執行作業的特定時間點,可能會觸發 Webhook 透過 JSON 酬載將要求傳送至已註冊的 Webhook 處理常式 (您的執行服務)。
- 執行要求會處理要求,例如呼叫 REST API 進行某些資料查詢,或驗證 JSON 酬載中的部分資料。執行要求的常見做法是在執行階段產生動態提示,讓對話更貼近目前使用者。
- 執行要求會傳回回應 (包含 JSON 酬載) 的回應。它會使用酬載中的資料繼續執行,並回應使用者。