輸入和輸出背景資訊會套用至意圖。這兩者會共同控管對話流程:
- 輸出背景資訊 控制 active 背景資訊。 系統比對意圖時,您為這項意圖設定的任何輸出背景資訊都會變為「使用中」狀態。
- 輸入背景資訊 可控管意圖比對。 如有任何背景資訊處於「使用中」狀態,Dialogflow 就會找出與現有「使用中」背景資訊相符的輸入背景資訊,並優先比對設有這類背景資訊的意圖。
你可以透過情境執行下列操作:
- 控管意圖比對順序。
- 使用相同的訓練詞組建立特定情境的意圖。
舉例來說,請考量下列意圖:
| Intent (意圖名稱) | 訓練詞組 | 參數 | 輸入背景資訊 | 輸出背景資訊 | 回應 |
|---|---|---|---|---|---|
| pet-init | 「這些元件會顯示如下:」 | - | - | - | 「你喜歡哪種寵物?」 |
| pet-select-dogs | 「I like dogs」(我喜歡狗) | - | - | dogs | 「你想瞭解狗狗的哪些資訊?」 |
| pet-select-cats | 「我喜歡貓」 | - | - | cats | 「你想知道貓的哪些資訊?」 |
| dog-show | 「這些元件會顯示如下:」 | - | dogs | - | 「這是狗的圖片。」 |
| cat-show | 「這些元件會顯示如下:」 | - | cats | - | 「這是貓的相片。」 |
當使用者說出 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 | 「這些元件會顯示如下:」「牠們的聲音是什麼樣的?」「有多大?」 | - | - | - | 「你喜歡哪種寵物?」 |
| pet-select | 「我喜歡狗」、「我喜歡貓」 | 寵物 | - | pet-chosen (lifespan = 2) | 「你想瞭解 $pet 的哪些資訊?」 |
| pet-show | 「這些元件會顯示如下:」 | - | pet-chosen | - | 「這是 #pet-chosen.pet 的相片。What else do you want to know?" |
| pet-audio | 「他們會發出什麼樣的聲音?」 | - | pet-chosen | - | 「Here is a #pet-chosen.pet sound. What else do you want to know?" |
| 寵物大小 | 「有多大?」 | - | pet-chosen | - | 「這是 #pet-chosen.pet 尺寸表。What else do you want to know?" |
下表顯示這個寵物資訊代理程式的對話範例,說明pet-chosen內容的生命週期:
| Turn | 對話方塊 | 說明 |
|---|---|---|
| 1 | 代理程式:What kind of pet do you like? (你喜歡哪種寵物?) | 系統比對出 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-chosen 內容已失效,因此系統會再次比對 pet-init 意圖。 |
輸入背景資訊
如果背景資訊處於「使用中」狀態,Dialogflow 就會找出與現有「使用中」背景資訊相符的輸入背景資訊,並優先比對設有這類背景資訊的意圖。詳細意圖比對規則如下:
- 意圖的輸入背景資訊清單必須是目前使用中背景資訊清單的子集,系統才會將其視為相符。這也適用於沒有輸入背景資訊的意圖。
- 如果意圖符合規則 1,輸入背景資訊清單與目前有效背景資訊清單最接近的意圖,就越有可能相符。
例如:
- 沒有輸入背景資訊的意圖隨時都可相符。
- 如果沒有任何背景資訊處於「使用中」狀態,系統只會比對沒有輸入背景資訊的意圖。
- 如果「A」和「B」背景資訊均處於「使用中」狀態,則含有「A」和「C」輸入背景資訊的意圖並不相符。
- 如果「A」、「B」和「C」背景資訊均處於「使用中」狀態,則含有「A」和「B」輸入背景資訊的意圖相符。
- 如果「A」和「B」背景資訊處於啟用狀態,則含有「A」和「B」輸入背景資訊的意圖,比對相符的機率會高於沒有輸入背景資訊的意圖,或只有「A」做為輸入背景資訊的意圖。