對話動作已於 2023 年 6 月 13 日淘汰。詳情請參閱「對話動作已淘汰」。

場景

意圖結合使用時,場景是「對話模式」的主要構成要素。情境代表對話的個別狀態,其主要用途是將對話內容整理成邏輯區塊、執行工作以及回傳提示訊息。

包括:

  • 循環執行 - 場景在迴圈中執行,直到符合您定義的轉換條件。如此一來,在單一情境中,就能以更有效率的方式建立控制邏輯流程。
  • 對話方塊分隔 - 與意圖搭配使用,可讓您將對話方塊分成邏輯區塊,方便您建立使用者要求和動作回應組合。
  • 意圖比對範圍 - 一次只能啟用一個情境,因此,您可將意圖比對範圍限定於您選擇的場景,然後只在這些場景啟用時。
  • 運算單元填充 - 您可以在場景中使用運算單元填充功能收集各類型使用者輸入內容,不必建立多個意圖
  • 情境感知條件:您可以檢查運算單元、工作階段、使用者和家庭儲存空間,藉此在不觸發 Webhook 的情況下執行簡單的條件邏輯。

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

自訂場景

自訂場景是對話邏輯的構成要素,構成動作對話模型的一部分。自訂場景包含如何定義開始和方式 (稱為「啟用」)、執行情境的對話處理作業 (稱為「執行生命週期」),以及場景的結束方式 (稱為「轉換」):

  • 啟用 - 您必須先在全域意圖比對或情境轉換中啟用情境,才能執行情境。
  • 執行 - 情境啟用時,會在定義良好的生命週期中執行,讓您執行各種不同的工作,例如運算單元填充、條件檢查、提示產生以及觸發 Webhook 事件。
  • 轉場效果 - 如果情境符合您定義的條件 (例如比對意圖或填滿運算單元填充),您可以切換至其他場景以執行更多邏輯。或者,您也可以改用「End 對話」系統情境,結束與使用者的對話。
圖 1.常見的場景轉換。全域意圖會在叫用期間啟用情境,場景會耗用使用者輸入內容並比對意圖,而該意圖會轉換並啟用其他情境。

實行

情境必須先啟用,才能執行。一次只能使用一個情境。你可以透過下列方式啟用場景:

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

執行生命週期

使用中的情境時,系統會在明確的定義生命週期中執行,直到該場景符合您設定的轉換條件為止。情境的執行週期分成以下選用階段:

  1. 「Enter on」:這個情境只會在啟用情境時執行一次。您可以觸發 Webhook,或提示使用者進行情境一次設定。

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

  3. 運算單元填充 - 情境可以自動提示使用者,直到收集所有必要運算單元 (類型資料) 為止。情境會在每次執行迴圈時提示一個運算單元。如果缺少任何版位,情境的生命週期最終會回回運算單元填充階段,並提示下一個下一個版位。這個階段可定義轉換條件,藉此結束執行迴圈。

  4. 提示 - Google 助理會將提示佇列傳送給使用者,並清除佇列。提示佇列是自上次這個階段清除佇列後匯總的提示提示。

  5. 輸入 - Google 助理會取用和傳回使用者輸入的內容,方便您進行處理,其中可能包含意圖比對 (全域意圖或情境中的使用者意圖)、繼續運算單元填補 (如果未完成),或是處理不相符或沒有輸入錯誤。這個階段可定義要執行執行迴圈的轉換條件。如果沒有轉換,執行迴圈就會回到條件階段。

圖 2. 情境執行生命週期

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

輸入時

進入時,唯一隻會在情境的執行迴圈中執行。系統會依下列順序一次初始化場景:

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

條件

條件 可讓您檢查工作階段、使用者或運算單元資料,才是條件。舉例來說,您可以檢查是否已填妥所有運算單元,並將其設為另一個場景處理工作階段的條件。

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

條件評估完成後,如果場景未定義轉場效果,就會繼續執行運算單元填充作業。

運算單元填充

這個階段會針對單一空缺和必填的版位新增版位提示。如果您未在情境中定義任何運算單元,這個階段就不會執行任何動作。

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

提示

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

輸入

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

  • 在使用者意圖相符時,情境會執行關聯的意圖處理常式 (使用者或系統意圖)。情境的意圖處理常式的優先順序高於任何全域意圖。如果您未定義轉場效果,情境執行迴圈就會返回條件階段。
  • 以版位比對的方式時,情境會回到運算單元填充階段。
  • 如果系統意圖相符 (例如沒有任何輸入內容或沒有相符項目),您可以為提示佇列新增提示、觸發 Webhook 或轉換。如果未定義多個相符項目提示,Google 助理執行階段會按照下列順序選擇最相關的項目:運算單元填充、情境,以及全域不相符提示。假設沒有相符項目,即會產生相應的事件:

    • no_match_1
    • no_match_2
    • no_match_final

    每個層級的無相符項目 (版位供應、情境和全域) 都可以觸發 Webhook 事件。根據預設,第三個和最終的結尾不會結束對話。

轉場

過渡階段可分為以下幾個階段:

  • 條件 - 您可以根據自行定義的條件轉換至其他情境。要檢查的常見條件是運算單元填滿。
  • 輸入 (使用者意圖比對) - 如果意圖相符,就會觸發轉換到其他情境。
  • 輸入 (系統意圖比對):您可以在任何系統意圖比對事件期間觸發 Webhook。根據預設,如果沒有任何相符項目和輸入事件,則場景在三次出現後會轉換為結束對話情境。

系統場景

系統場景可讓您使用 Google 助理提供的內建對話邏輯,以便為使用者體驗新增標準對話流程。例如,帳戶連結系統情境可讓 Google 助理暫時進行帳戶連結程序,傳回傳回實際連結使用者的資訊。系統場景不會遵循標準情境生命週期。

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

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