建立序列流程意圖

有了序列實體後,您可以建立意圖,從使用者收集序列。您至少需要三個意圖來執行以下工作:

  1. 主意圖意圖「序列」
    • 擷取語音片段,開始收集序列。
    • 由後續事件叫用,用於繼續擷取序列,直到使用者表示完成為止。
  2. 內容意圖「序列 - 編輯」
    • 擷取語音片段,以修正上次收集到的序列。
    • 以程式設計方式迴圈回「序列」意圖,收集修正過的序列。
  3. 內容意圖「序列 - 完成」
    • 擷取表示序列已完成的語音。

在下一節中,您將瞭解 webhook 如何連結所有這些項目,但首先讓我們設定意圖。

建立「序列」意圖

這是收集序列的主要意圖。請按照下列方式設定:

  1. 請將輸入內容設定為空白,方便使用者在通話開始時觸發這個意圖。
  2. 新增輸出背景資訊「收集序列」。我們會使用這個結構定義,在流程中啟用修正和完成意圖。
  3. 新增輸出背景資訊「editing-sequence」,並將生命週期設為 0。我們會在下一節中,使用「序列 - 編輯」意圖的生命週期啟用這個背景資訊,因此請務必在此處清除該背景資訊,以便在觸發「編輯」意圖後,立即啟用「編輯序列」背景資訊。
  4. 新增「continue-sequence」事件,讓 webhook 循環執行這項意圖,收集所有部分序列。

  5. 新增訓練詞組,方便使用者觸發這個意圖來啟動流程。這個範例使用「我的訂單狀態為何?」、「追蹤我的訂單」、「我的訂單在哪裡?」等字詞。

  6. 新增動作名稱「handle-sequence」,讓 webhook 知道何時觸發。在設定完所有意圖後,您將在本教學課程的下一節中編寫 webhook 程式碼。

  7. 使用您在上一節建立的正規表示式實體,新增必要參數「new_sequence」,以便收集部分序列。將實體類型設為「@alphanumeric」,並將值設為「$new_sequence」。

  8. 新增選用參數「existing_sequence」,其值為「#continue-sequence.existing_sequence」,即可從事件中擷取新的現有序列。您可以將實體類型留空。

  9. 新增選用參數「previous_sequence」,其值為「#continue-sequence.previous_sequence」,即可從事件中擷取先前的序列。您可以將實體類型留空。

  10. 為這個意圖啟用 Webhook 呼叫,以便為運算單元填充資料。

建立「序列 - 編輯」意圖

這個意圖會聆聽表示服務專員聽錯先前對話內容的語句。設定方式如下:

  1. 新增輸入背景資訊「收集序列」,這樣系統只會在序列流程中間才呼叫這個意圖。這是由「Sequence」意圖啟用的相同背景資訊。
  2. 為我們的執行 Webhook 參考,新增輸出背景資訊「editing-sequence」。啟用此意圖後,webhook 會將 Dialogflow 迴圈回主要的「序列」意圖,收集下一個序列。「Sequence」意圖的運算單元填充 webhook 會檢查是否有有效的「editing-sequence」背景資訊,以便向使用者提供「try again」回應。
  3. 新增「no」、「that's not right」等訓練詞組

  4. 新增「handle-sequence」動作名稱。這與「序列」意圖的動作相同,因此我們可以重複使用相同的 webhook 邏輯。

  5. 新增參數「new_sequence」,其值為「#collecting-sequence.previous_sequence」,即可從背景資訊中擷取先前的序列,有效撤銷上次的語音輸入。我們不會在此新增「existing_sequence」參數,以便 webhook 將現有序列覆寫為先前的序列。

  6. 為這個意圖啟用 Webhook 呼叫。

建立「序列 - 完成」意圖。

  1. 新增輸入背景資訊「收集序列」
  2. 新增輸出背景資訊「collecting-sequence」,並將生命週期設為 0,即可清除背景資訊。清除後,系統就不會再觸發「編輯」和「完成」意圖,因為代理程式已完成收集序列。
  3. 新增訓練詞組,例如「that's it」、「all done」等。

  4. 新增參數「sequence」,其值為「#collecting-sequence.existing_sequence」,即可從背景資訊中擷取最終序列。

  5. 為這個意圖啟用 Webhook 呼叫。

透過 Webhook 連結意圖

您現在已擁有為這些意圖編寫邏輯所需的一切。在下一節中,您將瞭解如何編寫 Webhook 程式碼,以便使用所有這些上下文、動作、參數和事件,完成序列驗證流程。