輸入和輸出背景資訊

輸入和輸出背景資訊會套用至意圖。這兩者會共同控制對話流程:

  • 輸出背景資訊會控制有效背景資訊。系統比對意圖時,您為這項意圖設定的任何輸出背景資訊都會變為「使用中」狀態。
  • 輸入背景資訊可控管意圖比對作業。當背景資訊處於「使用中」狀態時,Dialogflow 較有可能比對設有輸入背景資訊的意圖,這些輸入背景資訊是目前有效背景資訊的一或多個子集。

您可以透過上下文執行下列操作:

  • 控管意圖比對順序。
  • 使用相同的訓練詞組建立特定情境的意圖。

舉例來說,請考量下列意圖:

Intent (意圖名稱) 訓練詞組 參數 輸入背景資訊 輸出背景資訊 回應
pet-init 「他們長什麼樣子?」 - - - 「你喜歡哪種寵物?」
pet-select-dogs 「I like dogs」 - - 「你想瞭解狗的哪些資訊?」
pet-select-cats 「我喜歡貓」 - - 「你想瞭解貓咪的哪些資訊?」
dog-show 「他們長什麼樣子?」 - - 「這是一張狗的圖片。」
cat-show 「他們長什麼樣子?」 - - 「這是一張貓咪相片。」

如果使用者說出 I like dogs

  • 系統已比對 pet-select-dogs 意圖。
  • 輸出背景資訊為 dogs,因此會變成有效背景資訊。

如果使用者說出 I like cats

  • 系統已比對 pet-select-cats 意圖。
  • 輸出背景資訊為 cats,因此會變成有效背景資訊。

如果使用者說出 What do they look like?

  • 如果 dogs 是有效的背景資訊:
    • 系統已比對 dog-show 意圖。
    • 使用者會看到狗的圖片。
  • 如果 cats 是有效的背景資訊:
    • 系統已比對 cat-show 意圖。
    • 最終使用者會看到貓咪相片。
  • 如果沒有有效的內容:
    • 系統已比對 pet-init 意圖。
    • 系統會詢問使用者喜歡哪種寵物。

輸出背景資訊

您可以對同一項意圖套用多筆輸出背景資訊。系統比對意圖時,您為這項意圖套用的任何輸出背景資訊都會變為「使用中」狀態。

已啟用背景資訊的參數參照

當系統比對出含有輸出背景資訊的意圖時,其收集到的參數值可用於暫時儲存,並參照有效背景資訊的參數。只要背景資訊仍處於有效狀態,這些值就能在日後的意圖比對期間存取。

舉例來說,請參考下列上述寵物範例的變化版本:

Intent (意圖名稱) 訓練詞組 參數 輸入背景資訊 輸出背景資訊 回應
pet-init 「他們長什麼樣子?」 - - - 「你喜歡哪種寵物?」
pet-select 「我喜歡」、「我喜歡 寵物 - pet-chosen 「你想瞭解哪些關於 $pet 的資訊?」
pet-show 「他們長什麼樣子?」 - pet-chosen - 「這是 #pet-chosen.pet 的相片。」

當使用者說出 I like dogsI like cats 時:

  • 系統已比對 pet-select 意圖。
  • pet 參數已設為所選寵物類型。
  • 輸出背景資訊為 pet-chosen,因此會變成有效背景資訊。

如果使用者說出 What do they look like?

  • 如果 pet-chosen 是有效的背景資訊:
    • 系統已比對 pet-show 意圖。
    • 如果使用者在先前的對話回合中選取 dogs,系統就會向使用者顯示狗的圖片。
    • 如果使用者在先前的對話回合中選取 cats,系統就會向使用者顯示貓咪圖片。
  • 如果沒有有效的內容:
    • 系統已比對 pet-init 意圖。
    • 系統會要求使用者選取寵物類型。

效期

每個有效背景資訊都有一個生命週期,用來定義背景資訊保持有效狀態的對話回合數。預設生命週期為五個對話回合 (適用於一般意圖),或兩個對話回合 (適用於後續意圖)。您可以覆寫任何背景資訊的預設生命週期。此外,所有背景資訊都會在啟用後 20 分鐘後失效。當意圖與已啟用的輸出背景資訊比對時,系統會重設生命週期和到期時間計時器。

舉例來說,請參考寵物資訊代理程式適用的意圖說明:

Intent (意圖名稱) 訓練詞組 參數 輸入背景資訊 輸出背景資訊 回應
pet-init 「What do they look like?」「它們會發出什麼樣的聲音?」「它們有多大?」 - - - 「你喜歡哪種寵物?」
pet-select 「我喜歡」、「我喜歡 寵物 - pet-chosen (lifespan = 2) 「你想瞭解哪些關於 $pet 的資訊?」
pet-show 「他們長什麼樣子?」 - pet-chosen - 「這是 #pet-chosen.pet 的相片。請問還有什麼問題嗎?
pet-audio 「它們會發出什麼樣的聲音?」 - pet-chosen - 「這是 #pet-chosen.pet 的聲音。請問還有什麼問題嗎?
pet-size 「它們有多大?」 - pet-chosen - 「這是 #pet-chosen.pet 大小圖表。請問還有什麼問題嗎?

下表顯示此寵物資訊服務的對話範例,說明 pet-chosen 情境的生命週期:

Turn 對話方塊 說明
1 代理程式:你喜歡什麼樣的寵物? 系統已比對 pet-init 意圖。
2 使用者:我喜歡貓。
代理程式:你想瞭解貓咪的哪些資訊?
系統已比對 pet-select 意圖。pet-chosen 輸出背景資訊會變成「使用中」狀態。
3 使用者:牠們長什麼樣?
代理程式:這是貓咪的圖片。你還想知道什麼?
pet-show 意圖含有 pet-chosen 輸入背景資訊,因此系統會比對這項意圖。pet-chosen 背景資訊已啟用 1 個回合。
4 使用者:他們的聲音如何?
代理程式:這是貓的叫聲。還有什麼想知道的嗎?
pet-audio 意圖含有 pet-chosen 輸入背景資訊,因此系統會比對這項意圖。pet-chosen 背景資訊已啟用 2 個回合。
5 使用者:牠們有多大?
代理程式:你喜歡什麼類型的寵物?
pet-init 意圖再次比對成功,因為 pet-chosen 背景資訊已不再處於「使用中」狀態。

輸入背景資訊

如有背景資訊處於「使用中」狀態,Dialogflow 就會找出與現有「使用中」背景資訊相符的輸入背景資訊,並比對設有這類背景資訊的意圖。詳細的意圖比對規則如下:

  1. 意圖的輸入背景資訊清單必須是目前有效的背景資訊清單子集,系統才會將其視為相符。這也適用於沒有輸入內容的語音指令。
  2. 對於符合規則 1 的意圖,如果輸入背景資訊清單與目前有效的背景資訊清單最為相符,則更有可能比對成功。

例如:

  • 沒有輸入背景資訊的意圖隨時都可以比對。
  • 如未啟用任何背景資訊,系統只能比對不含輸入背景資訊的意圖。
  • 如果「A」和「B」背景資訊處於「使用中」狀態,則含有「A」和「C」輸入背景資訊的意圖無法比對。
  • 如果「A」、「B」和「C」背景資訊均處於「使用中」狀態,則含有「A」和「B」輸入背景資訊的意圖可以比對。
  • 如果「A」和「B」背景資訊處於「使用中」狀態,含有「A」和「B」輸入背景資訊的意圖,比起沒有輸入背景資訊的意圖,或只含有「A」輸入背景資訊的意圖,更有可能比對成功。