場景

場景與意圖結合使用,是對話模型的其他主要構成要素。場景代表對話的個別狀態,主要用途是將對話整理為邏輯區塊、執行工作,並向使用者傳回提示。

場景的部分功能包括:

  • 循環執行 - 場景在符合您定義的轉換條件之前,會在迴圈內執行。這樣就能更有效率地在單一場景中建立控制邏輯流程。
  • 對話方塊區隔 - 場景與意圖結合後,您就能將對話方塊歸入邏輯區塊,讓您輕鬆建立使用者要求和動作回應組合。
  • 意圖比對範圍 - 由於一次只能啟用一個場景,因此您可以將意圖比對的範圍限制為所選場景,並且只在這些場景啟用時進行比對。
  • 運算單元填充:您可以在場景中使用運算單元填充功能,收集多個輸入的使用者輸入內容,而不必建立多個意圖
  • 情境條件:您可以檢查運算單元、工作階段、使用者和家用儲存空間,在不觸發 Webhook 的情況下執行簡易的條件邏輯。

您可以將情境定義為對話模型的一部分,做為「自訂場景」。Google 助理的對話邏輯還包括提供標準對話功能的系統場景

自訂場景

自訂情境是對話邏輯的構成要素,構成動作的對話模型的一部分。自訂場景分為幾個階段,用於定義啟動方式和時機,稱為「啟用」、執行的對話處理 (稱為「執行生命週期」) 和場景結束方式 (稱為「轉換」):

  • 啟用 - 執行場景前,您必須先透過全域意圖比對或場景轉換來啟用場景。
  • 執行:場景啟用後,會在定義明確的生命週期中執行,讓您可以執行各種工作,例如運算單元填充、條件式檢查、提示產生及觸發 Webhook 事件。
  • 轉換 - 當場景符合您設定的條件 (例如比對意圖或完成運算單元填充) 時,您可以轉移到其他場景來執行更多邏輯。或者,您可以轉換至「結束對話」系統場景,結束與使用者的對話。
圖 1.常見的場景轉場效果。全域意圖會在叫用期間啟用情境,並使用使用者輸入內容比對意圖,而該意圖會轉場並啟用另一個場景。

實行

場景必須先處於啟用狀態,才能開始。一次只能啟用一個場景。啟用場景的方式如下:

  • 叫用:使用者輸入內容與全域意圖的語言模型相符時,您可以啟用情境來處理叫用。
  • 靜態場景轉換:在場景符合轉換條件時,您可以定義另一個場景的轉場效果。
  • 動態場景轉換:在 Webhook 處理常式中,您可以透過程式輔助方式轉換至其他場景

執行作業生命週期

當場景處於啟用狀態時,會在定義明確的生命週期中執行,直到場景符合您設定的轉換條件為止。場景的執行生命週期會分為選用階段,並依下列順序執行:

  1. 「進入時」:在場景啟用時,這個階段只會執行一次。您可以觸發 Webhook,或提示使用者進行一次性的情境設定。

  2. 條件 - 條件可讓您先評估特定條件,再繼續執行生命週期階段、觸發 Webhook 或傳送提示。這個階段可定義轉換條件,用來結束執行迴圈。

  3. 運算單元填充 - 在收集所有必要的運算單元 (類型資料) 之前,場景可以自動提示使用者。場景每次在執行迴圈中都會提示單一運算單元。如果缺少任何運算單元,場景的生命週期最終會循環回到運算單元填充階段,並提示下一個需要的運算單元。這個階段可定義轉換條件,以結束執行迴圈。

  4. 提示 - Google 助理會向使用者傳送提示佇列並清除佇列。提示佇列是自此階段上次清除佇列之後匯總的提示集合。

  5. 輸入內容:Google 助理會使用和傳回使用者輸入內容至場景,以便進行處理,這可能包括意圖比對 (在場景中通用意圖或使用者意圖)、接續運算單元填充 (如果內容未完成),或處理不相符或沒有輸入錯誤。這個階段可定義轉換條件,用來結束執行迴圈。如未轉換,執行作業迴圈會回到條件階段。

圖 2. 情境執行生命週期

以下各節將詳細說明各個生命週期階段。

入場時

Enter 時,是唯一不會在場景執行迴圈中執行的階段。此操作會依照下列順序對場景進行一次性初始化:

  • 如果 Google 助理執行階段可填入先前比對意圖的任何版位,現在就會為場景準備運算單元填充階段。例如,部分使用者輸入內容可能會與意圖相符,並提供運算單元。該意圖比對會啟用場景,如果運算單元名稱相符,就能填滿場景中的版位。
  • 如果啟用 Webhook,Webhook 會以同步的方式觸發事件,並等待網路服務傳回回應。
  • 執行階段收到 Webhook 回應時,會解析提示中的所有參數參照,並根據使用者途徑選取提示候選版本,然後選取一個變數,供候選項目稍後傳送給使用者。
  • 如果 Webhook 回應包含提示,系統會將該回應新增至提示佇列。如果也有靜態提示,則 Webhook 提示會先合併至提示佇列,接著再合併靜態提示。
  • 如果 Webhook 回應包含轉場效果,則會立即處理。否則,情境會繼續進行運算單元填充階段。

條件

條件可讓您檢查工作階段、使用者或運算單元資料,判斷條件為 true。例如,您可以查看所有版位是否填入廣告,並將其設定為轉換至其他場景來處理運算單元的條件。

  • Google 助理執行階段會按照指定順序評估每個條件。評估為 true 的第一個條件會執行相關聯的處理常式並停止條件評估。
  • 如果您進行運算單元填充,條件 else if scene.slots.status = "FINAL" 會自動新增至條件清單。這項選用條件會檢查運算單元填充是否完成,並可觸發 Webhook,或在提示佇列中新增提示。

條件評估之後,如果場景未定義轉場效果,則會繼續進行運算單元填充。

運算單元填充

這個階段會針對一個未填入和必要的版位新增版位提示。如果沒有在場景中定義任何版位,這個階段就不會有任何作用。

  • Google 助理執行階段會選取第一個未填入的運算單元,並將對應的提示新增至提示佇列。由於場景的執行迴圈,當執行迴圈返回這個階段時,系統會稍後處理其他未填滿的版位。
  • 目前使用中的運算單元可能會有錯誤處理提示,這類提示會覆寫場景輸入階段中定義的提示。
  • 當使用者填入運算單元時,您可以觸發 Webhook,在網路服務中驗證運算單元。

提示

Google 助理執行階段會將提示佇列傳送給使用者、清除佇列並取用使用者輸入內容。

輸入

Google 助理執行階段會嘗試將輸入內容與意圖或運算單元進行比對:

  • 如果是使用者意圖相符,場景就會執行相關聯的意圖處理常式 (使用者或系統意圖)。系統會優先採用場景的意圖處理常式,而非所有全域意圖。如未定義轉場效果,場景執行作業會迴圈回條件階段。
  • 如果版位相符,場景會回到運算單元填充階段。
  • 如果系統意圖相符 (例如沒有輸入內容或不相符),您可以將提示新增至提示佇列、觸發 Webhook 或轉換。如未定義多個比對提示,Google 助理執行階段會按照下列順序選擇最相關的提示:運算單元填充、情境,以及全域沒有比對提示。連續不相符時會產生對應的事件:

    • no_match_1
    • no_match_2
    • no_match_final

    沒有任何相符項目 (運算單元填充、場景和全域) 都可能會觸發 Webhook 事件。根據預設,第三次 (最後一個) 比對相符的項目則會結束對話。

轉場

轉換可能會分成下列幾個階段進行:

  • 條件:您可以根據自行定義的條件轉換至其他場景。常見的檢查條件是運算單元填充完成。
  • 輸入內容 (使用者意圖比對) - 如果意圖相符,就會觸發轉換至其他場景。
  • 輸入 (系統意圖比對):您可以在任何系統意圖比對事件期間觸發 Webhook。如果沒有相符結果且沒有輸入事件,場景預設會在三次後轉換為「結束對話」場景。

系統場景

系統場景可讓您使用 Google 助理提供的內建對話邏輯,以便為使用者體驗加入標準對話流程。舉例來說,帳戶連結系統情境可讓 Google 助理短暫完成帳戶連結流程,傳回實際連結使用者帳戶所需的資訊。系統場景不會遵循標準場景生命週期。

以下清單說明支援的系統場景和使用方式:

  • 「End end」(結束對話):關閉麥克風並結束與使用者的對話。在這個場景執行後,Google 助理會反向控管使用者體驗。
  • 帳戶連結:透過帳戶連結流程引導使用者,並提供您的「動作」必要資訊,以將後端伺服器的使用者帳戶和使用者的 Google 帳戶建立連結。請參閱帳戶連結說明文件,進一步瞭解如何使用這個場景。
  • 每日更新 - 引導使用者完成確認流程,將動作新增至使用者的每日更新。請參閱「每日更新」說明文件,進一步瞭解如何使用這個場景。
  • 通知 - 引導使用者完成確認流程,以便接收您動作的通知。如要進一步瞭解如何使用這個情境,請參閱推播通知說明文件。