情境與「意圖」結合,是對話模型的主要構成要素。場景代表對話的個別狀態,其主要用途是將對話整理成邏輯區塊、執行工作,以及向使用者顯示提示。
部分場景的功能包括:
- 循環執行 - 在迴圈中執行,直到符合定義的轉換條件。這可讓您在單一場景中,以更有效率的方式建立控制邏輯流程。
- 對話方塊分隔 - 情境結合意圖與意圖,可讓您將對話方塊分成邏輯區塊,讓您輕鬆建立使用者要求與動作回應組合。
- 意圖比對範圍 - 一次一次只能啟用一個情境,因此您可以將意圖比對範圍限定在所選場景中,而且只有在這些場景有效時才會比對。
- 運算單元填充:您可以在情境中使用運算單元填充功能,收集多種輸入的使用者輸入內容,而不必建立多個意圖
- 情境設定:您可以檢查運算單元、工作階段、使用者和家用儲存空間,執行簡單的條件式邏輯,而不觸發 Webhook。
您可以將對話模型定義為對話模型的一部分做為自訂場景。Google 助理的對話邏輯也包含為對話提供標準功能的系統場景。
自訂場景
自訂場景是對話邏輯的構成要素,構成了對話對話模型的一部分。自訂情境包含用來定義開始和方式的階段,稱為「啟用」、執行的對話處理作業 (稱為「執行生命週期」),以及場景的結束方式 (稱為「轉換」):
- 啟用 - 您必須先透過全域意圖比對或場景轉換來啟用場景。
- 執行 - 場景啟用時,會在定義明確的生命週期中執行,讓您執行各種工作,例如運算單元填充、條件檢查、提示產生,以及觸發 Webhook 事件。
- 轉換 - 當情境符合您定義的條件 (例如符合意圖或完成運算單元填充時),可轉換至其他場景以執行更多邏輯。或者,您也可以轉換至「結束對話」系統場景,該對話結束會與使用者結束對話。
實行
場景必須處於有效狀態,才能執行。一次只能啟用一個場景。您可以透過下列方式啟用場景:
- 叫用 - 當使用者輸入內容與全域意圖的語言模型相符時,您可以啟用情境來處理叫用。
- 靜態場景轉換 - 當情境符合轉換條件時,您可以定義轉換至其他場景的轉換。
- 動態場景轉換 - 您可以在 Webhook 處理常式中透過程式轉換至其他場景。
執行生命週期
當情境啟用時,系統會在定義完善的生命週期中執行該迴圈,直到場景符合您設定的轉換條件為止。情境的執行生命週期會分成選用階段,依照以下順序執行:
進入時 - 此階段只會在啟用情境時執行一次。您可以觸發 Webhook,或提示使用者一次設定情境。
條件 - 條件可讓您先評估特定條件,再開始生命週期階段、觸發 Webhook 或傳送提示。這個階段可以定義轉換條件,以結束執行迴圈。
「運算單元填充」 - 場景可以自動提示使用者,直到收集到所有必要的運算單元 (輸入的資料) 為止。情境會在其執行迴圈中每次提示一個運算單元。如果缺少任何位置,情境的生命週期最終會回退至運算單元填補階段,並詢問下一個必要的運算單元。這個階段可定義轉換條件,以結束執行迴圈。
提示 - Google 助理會將提示佇列提供給使用者並清除佇列。提示佇列是自合併這個階段自上次清除佇列以來經過彙整的提示集合。
「輸入」 - 「Google 助理」耗用和傳回使用者輸入內容到場景中,因此您可以處理此資料,包括意圖比對 (在情境中具有全域意圖或使用者意圖)、繼續插槽 (如果尚未完成),或是處理無比對或沒有輸入錯誤的錯誤。這個階段可以定義轉換條件,以結束執行迴圈。如果系統沒有轉換,執行迴圈就會回到條件階段。
以下各節將詳細說明各個生命週期階段。
進入時
進入時,只有在場景的執行迴圈中執行的階段。系統會依照以下順序,為您的場景進行一次性初始化作業:
- 如果 Google 助理執行階段可以填入先前比對意圖的任何運算單元,現在就會為運算單元填充階段做好準備。舉例來說,某些使用者輸入內容可能與意圖相符,並提供運算單元。此意圖比對會啟用情境,並在運算單元名稱相符時填入場景中的運算單元。
- Webhook 啟用時,會同步觸發事件,並等待網路服務傳回回應。
- 執行階段收到 Webhook 回應時,會解析提示中的所有參數參照,再根據使用者途徑選取提示候選項目,再選取一個候選項目供候選項目傳送給使用者。
- 如果 Webhook 回應包含提示,系統會將該提示新增至提示佇列。 假如同時有靜態提示,系統會先將 Webhook 提示合併為提示佇列,然後再合併靜態提示。
- 如果 Webhook 回應包含轉換作業,系統會立即執行。否則,場景會繼續進入運算單元填充階段。
條件
條件可讓您檢查條件是否成立,包含工作階段、使用者或運算單元資料。例如,您可以檢查是否已填入所有運算單元,並將其設為條件來轉換至其他場景來處理運算單元。
- 「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。根據預設,如果沒有任何相符項目且沒有輸入事件,則在發生 3 次之後,情境就會轉換至「結束對話」場景。
系統場景
系統場景可讓您使用 Google 助理提供的內建對話邏輯,讓您為使用者體驗新增標準對話流程。例如,透過帳戶連結系統場景,Google 助理可以暫時接手執行帳戶連結流程,並傳回實際連結使用者帳戶所需的資訊。系統場景不會遵循標準場景生命週期。
以下清單說明支援的系統場景和使用方式: