建構對話模型

對話模型定義了使用者可對動作說的內容,以及動作回應使用者的方式。對話模型的主要構成元素為「意圖」、「類型」、「情境」和「提示」。叫用其中一個動作後,Google 助理會將使用者處理完成該動作,而動作會根據您的對話模型為使用者展開對話,當中包含:

  • 有效的使用者要求:如要定義使用者可對動作說出的內容,請建立一組意圖來擴充 Google 助理 NLU,以便瞭解特定動作專屬的要求。每個意圖都會定義訓練詞組,說明使用者可以說的話來符合該意圖。Google 助理 NLU 會擴充這些訓練詞組,加入類似的詞組,而這些詞組的匯總結果則會產生意圖的語言模型。

  • 動作邏輯和回應:場景程序意圖、執行必要的邏輯,並產生提示傳回給使用者。

圖 1. 對話模型由意圖、類型、情境和用來定義使用者體驗的提示組成。符合叫用資格的意圖也可用於在對話中進行比對。

定義有效的使用者要求

如要定義使用者可對動作說出的內容,請搭配使用意圖和類型。您可以運用使用者意圖和類型,以自己的語言模型擴充 Google 助理 NLU。系統意圖和類型可讓您利用內建語言模型和事件偵測功能,例如當使用者要求退出動作或 Google 助理時,完全不會偵測任何輸入內容。

建立使用者意圖

使用者意圖可讓您定義自己的訓練詞組,定義使用者可能會向您的動作說的內容。Google 助理 NLU 會使用這些詞組來訓練自己瞭解使用者說的話。當使用者說出的內容符合使用者意圖的語言模型時,Google 助理會比對該意圖並通知您動作,以便您執行邏輯並回應使用者。

圖 1. 使用者意圖範例

如何建立使用者意圖:

  1. 在「Develop」(開發) 分頁中,按一下「User intents」>「⊕ (New intent)」,指定名稱,然後按下 Enter 鍵建立意圖。
  2. 在左選單中按一下新建的意圖。畫面上隨即會顯示意圖編輯器
  3. 將訓練詞組新增至意圖。您應盡可能加入更多訓練詞組來訓練 Google 助理 NLU。
  4. 選用:為訓練詞組加上註解,指示 Google 助理 NLU 從使用者輸入內容中,剖析及擷取符合特定類型條件的參數:
    1. 在「新增參數」欄位中輸入參數名稱。
    2. 從下拉式選單中選取系統類型,或建立自訂類型
    3. 指定參數是否為清單。讓參數收集多個同類型的值。
    4. 在「新增訓練詞組」區段,醒目顯示要套用類型的文字。這會指示 Google 助理 NLU 將醒目顯示的文字視為參數。如果使用者說出的內容與類型相符,NLU 就會擷取該值做為參數。

建立系統意圖

系統意圖可讓您利用對常見事件 (例如使用者想退出動作,或使用者輸入逾時) 的意圖,利用預先定義的語言模型。如要建立系統意圖,請按照下列指示操作:

  1. 在「Develop」分頁中,按一下「System intents」。您可以使用一組系統意圖,例如 NO_MATCHNO_INPUTCANCEL
  2. 每個系統意圖都包含各自的處理常式,您可以為每種系統意圖自訂這些處理常式。舉例來說,您可以利用系統意圖觸發 Webhook 事件,並在事件發生時傳送靜態提示。

建立自訂類型

自訂類型可讓您建立自己的類型規格來訓練 NLU,藉此瞭解應對應至單一鍵的一組值。

圖 2. 自訂類型範例

如要建立自訂類型,請按照下列步驟操作:

  1. 在「Develop」(開發) 分頁中,依序按一下「Types」>「⊕ (New type)」
  2. 請在「支援此類型的值是什麼種類?」一節中選取如何提供類型值:

    • 字詞和同義詞可讓您將多個值對應至單一鍵,也稱為項目。您的類型可包含一或多個項目。如果選擇這個選項,您也可以啟用下列 NLU 設定:
      • 啟用模糊比對 - 允許比對超過一個字詞的項目,即使字詞以不同的順序朗讀。
      • 接受不明值:如果無法指定所有可能的值,系統就會根據周遭的輸入和意圖訓練資料接受未知的字詞或詞組,例如可能會加入雜貨清單的項目。
    • 規則運算式可讓類型根據 Google 的 RE2 標準,比對規則運算式模式。
    • 「任意形式文字」可讓類型與使用者說的內容進行比對。
  3. 在「新增項目」區段中指定類型值。如果選擇「任意形式文字」,您的類型就會比對任何文字,因此您不必提供任何項目。

建構動作邏輯和回應

Google 助理 NLU 會比對使用者要求和意圖,如此一來,您的動作就能在場景中處理要求。場景是強大的邏輯執行工具,可讓您在對話期間處理事件。

圖 3. 自訂場景範例

建立場景

以下各節說明如何建立情境,以及定義每個場景的生命週期階段的功能。

如何建立場景:

  1. 在「Develop」分頁中,依序按一下「Scenes」>「⊕ (New scene)」,指定名稱,然後按下「Enter」鍵建立場景。
  2. 在左選單中按一下新建的場景。系統隨即顯示「Scene Editor」(場景編輯器)

定義一次性設定

場景首次啟用後,您可以在「進入時」階段執行一次性工作。進入階段只會執行一次,是唯一不會在場景的執行迴圈內執行的階段。

  1. 在場景中,按一下「進入階段」階段即可指定功能。在這個階段,您可以指定下列功能:

    • 呼叫 Webhook:觸發 Webhook。如要進一步瞭解 Webhook,請參閱 Webhook 說明文件。
    • 「Send 提示」 - 指定靜態提示給使用者,讓他們知道如何繼續對話。如要進一步瞭解如何指定提示,請參閱提示說明文件。
    圖 4. 進入階段的場景範例

檢查條件

您可以運用條件檢查運算單元填充、工作階段儲存空間、使用者儲存空間和住家儲存空間參數,藉此控制場景執行流程。

  1. 在場景中,按一下「條件」階段的「+」圖示++。條件編輯器會顯示在右側。在這個階段,您可以指定下列功能:

    • 「Condition」:指定要做為基礎邏輯的實際條件陳述式。如需語法資訊,請參閱conditions說明文件。
    • 呼叫 Webhook:觸發 Webhook。如要進一步瞭解 Webhook,請參閱 Webhook 說明文件。
    • 「Send 提示」:指定要傳送給使用者的靜態提示,以便使用者瞭解如何繼續進行對話。如要進一步瞭解如何指定提示,請參閱提示說明文件。
    • 轉換 - 指定條件陳述式為 true 時要轉換的場景。
圖 5. 場景的條件階段範例

定義運算單元填充

運算單元可讓您從使用者輸入內容中擷取輸入的參數。

在場景編輯器中,按一下「Slot fill」+階段的「+」+圖示。畫面右側會顯示版位編輯器。您可以指定時段的下列屬性:

  • 運算單元名稱:指定運算單元的名稱。如果您想利用運算單元值對應,請使用與對應的意圖參數相同的名稱。
  • 運算單元類型:使用系統類型或自訂類型指定運算單元的類型
  • 這個版位必須:將此版位標示為必要。啟用後,只有在這個版位填入時,系統才會完成運算單元填充程序。
  • 為這個運算單元指派預設值:為從指定工作階段參數讀取的版位指定預設值。
  • 「CustomizeSlot value writeback」(自訂運算單元值寫入)指定工作階段參數,在運算單元填充完成後保留運算單元的值。
  • 運算單元驗證:在版位填入時觸發 Webhook。這項設定適用於所有運算單元。
  • 呼叫 Webhook (在需要運算單元時啟用):觸發 Webhook。如要進一步瞭解 Webhook,請參閱 Webhook 說明文件。
  • 「Send 提示」 (在需要運算單元時啟用):指定要傳送給使用者的靜態提示,讓他們知道如何繼續對話。如要進一步瞭解如何指定提示,請參閱提示說明文件。

針對特定版位類型 (例如與交易或使用者參與度相關的版位),系統會顯示額外區段,供您設定運算單元。運算單元設定可根據您提供的屬性變更使用者的對話體驗。

如要設定運算單元,請在執行要求 (以工作階段參數參照) 或內嵌 JSON 編輯器中提供 JSON 物件中的屬性。您可以在 Actions Builder JSON 參考資料中找到每種運算單元類型的可用屬性。舉例來說,actions.type.DeliveryAddressValue 版位類型會對應到 DeliveryAddressValue 位置的參考內容。

圖 6. 場景的運算單元填充設定範例

運算單元值對應

在許多情況下,先前的意圖比對可能包含部分或全部填滿相應場景版位值的參數。在這些情況下,如果運算單元名稱與意圖參數名稱相符,由意圖參數填入的所有運算單元都會對應至場景的運算單元填充。

舉例來說,如果使用者透過說出「I want to order a Large vanilla 咖啡」來比對用來訂購飲料的意圖,只要場景定義相同的運算單元,系統就會在對應的場景中填入現有尺寸、口味和飲料類型的現有運算單元。

處理輸入內容

在這個階段中,您可以讓 Google 助理 NLU 將使用者輸入內容和意圖進行比對。您可以將所需意圖新增至場景中,以將意圖比對範圍限制在特定場景。如此一來,您就可以指示 Google 助理在特定情境啟用時比對特定意圖,藉此控制對話流程。

  1. 在場景中,按一下「使用者意圖處理」+或「系統意圖處理」+階段的「+」+圖示。意圖處理常式的編輯器會顯示在右側。您可以指定意圖處理常式的下列功能:

    • Intent (意圖) - 指定您希望在這個場景中比對的意圖。
    • 呼叫 Webhook:觸發 Webhook。如要進一步瞭解如何處理 Webhook 要求,請參閱 Webhook 說明文件。
    • 「Send 提示」:指定靜態提示給使用者,讓他們知道如何回應。如要進一步瞭解如何指定提示,請參閱提示說明文件。
    • 「Transition (如果適用)」:指定當指定意圖相符時要轉換的場景。
圖 7. 場景的使用者意圖處理常式範例
圖 8. 場景的系統意圖處理常式範例