輸入和輸出背景資訊會套用至意圖。這兩者會共同控制對話流程:
- 輸出背景資訊會控制有效背景資訊。系統比對意圖時,您為這項意圖設定的任何輸出背景資訊都會變為「使用中」狀態。
- 輸入背景資訊可控管意圖比對作業。當背景資訊處於「使用中」狀態時,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 dogs
或 I 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 的意圖,如果輸入背景資訊清單與目前有效的背景資訊清單最為相符,則更有可能比對成功。
例如:
- 沒有輸入背景資訊的意圖隨時都可以比對。
- 如未啟用任何背景資訊,系統只能比對不含輸入背景資訊的意圖。
- 如果「A」和「B」背景資訊處於「使用中」狀態,則含有「A」和「C」輸入背景資訊的意圖無法比對。
- 如果「A」、「B」和「C」背景資訊均處於「使用中」狀態,則含有「A」和「B」輸入背景資訊的意圖可以比對。
- 如果「A」和「B」背景資訊處於「使用中」狀態,含有「A」和「B」輸入背景資訊的意圖,比起沒有輸入背景資訊的意圖,或只含有「A」輸入背景資訊的意圖,更有可能比對成功。