建立 Dialogflow ES 虛擬服務專員

使用 Dialogflow ES 主控台建構及測試代理程式。

事前準備

開始之前,請先完成下列步驟:

建立虛擬服務專員

  1. 前往 Dialogflow ES 主控台
  2. 如果系統提示,請登入 Dialogflow 主控台。詳情請參閱「Dialogflow 主控台總覽」。
  3. 按一下側欄選單中的「代理程式」
  4. 選取「已部署的代理程式」分頁標籤。
  5. 按一下「建立代理」
  6. 輸入代理程式名稱、預設語言和預設時區。
  7. 輸入現有專案。如要讓 Dialogflow 主控台建立專案,請選取「建立新的 Google 專案」
  8. 按一下「Create」(建立)。

意圖

「意圖會針對一回合的對話來分類使用者的意圖。您可為各個代理程式定義許多意圖,好讓這些意圖能夠合併起來處理完整的對話。

預設意圖

建立代理程式時,Dialogflow 會為您建立兩個預設意圖

  • 預設歡迎意圖:當使用者開始與代理程式對話時,系統就會比對此意圖。此意圖會傳回回應,讓使用者知道代理程式的功能,或可說出什麼內容開始對話。
  • 預設備用意圖:當代理程式無法將使用者表達內容比對到任何其他意圖時,便符合此意圖。

如要查看這些意圖,請前往代理程式的意圖清單:

  1. 前往 Dialogflow ES 主控台
  2. 選取您建立的代理程式。
  3. 按一下側欄選單中的「意圖」

Dialogflow 主控台中間會列出代理程式的意圖。

意圖清單螢幕截圖

測試預設備用意圖

模擬工具螢幕截圖

Dialogflow 模擬工具位於主控台的右側,使用此模擬工具,您可透過語音或輸入訊息的方式來測試代理程式。

現在就來試用代理程式:

  1. 按一下「立即試用」欄位。
  2. 輸入「What is your name?」。
  3. 按下 Enter 鍵。

代理程式的回應會顯示在「Default Response」(預設回應) 區段。由於您的輸入與任何意圖都不相符,所以與預設備用意圖相符,因此會收到其中一個預設回覆。

建立意圖

本節的步驟會建立意圖,回答「你的名字是什麼?」這個問題。您必須為每個意圖定義許多訓練詞組。訓練詞組是指使用者可能對代理程式輸入或說出的內容範例,也稱為使用者表達內容。定義訓練詞組有助於 Dialogflow 將表達內容與意圖相符。

建立意圖:

  1. 在側邊欄選單中,按一下「Intents」(意圖) 旁的新增意圖 按鈕。
  2. 在「Intent name」(意圖名稱) 欄位中輸入 get-agent-name
  3. 在「Training Phrases」(訓練詞組) 區段中,按一下「Add training phrases」(新增訓練詞組)
  4. 輸入下列訓練詞組:

    • What is your name?
    • Do you have a name?
    • Tell me your name

    訓練詞組螢幕截圖

  5. 在「Responses」(回應) 區段的「Text Response」(文字回應) 區段中,輸入下列內容:

    • My name is Dialogflow!

    訓練詞組螢幕截圖

  6. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

測試您的意圖

模擬工具螢幕截圖

在模擬工具中輸入 What's your name?,然後按 Enter 鍵。

即使該表達內容與提供的訓練詞組稍有不同,代理程式還是能夠正確回應。

Dialogflow 會使用訓練詞組做為範例,讓機器學習模型比對使用者表達內容與意圖。模型會將表達內容與代理程式中的每個意圖進行比對,並為每個意圖打分數,然後將分數最高的意圖判定為相符。如果得分最高的意圖分數很低,就是符合備用意圖。

參數與實體

當 Dialogflow 在執行階段比對出相符的意圖時,就會提供從使用者表達內容中擷取到的值做為參數。每個參數都有一個類型,稱為實體類型,此類型會明確指定資料的擷取方式。不同於原始使用者輸入內容,您可以輕鬆使用參數這類結構化資料來執行特定的邏輯或產生回應。

如要控制建構代理程式時的資料擷取方式,請為部分訓練詞組加註,並設定相關聯的參數。

建立參數

建立意圖參數:

  1. 在側邊選單中,按一下「Intents」(意圖) 旁的加號 按鈕。
  2. 在意圖表單頂端,將意圖命名為 set-language
  3. 請新增以下訓練詞組:
    • I know English
    • I speak French
    • I know how to write in German
  4. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

    有註解的訓練詞組螢幕截圖

Dialogflow 會自動偵測訓練詞組中屬於系統實體的參數。這些實體由 Dialogflow 提供,適用於許多常見的資料類型,如地點、顏色和日期。

新增訓練詞組後,Dialogflow 會在「動作和參數」表格中建立資料列:

有註解的訓練詞組螢幕截圖

  • Required (必要):未勾選,因此這項參數不是必要的。
  • Parameter Name (參數名稱):系統將參數判定為一種語言,因此自動將其命名為 language
  • 實體:系統會將其視為 @sys.language 系統實體。
  • Value (值):參照此參數值時所使用的 ID。
  • Is List (是清單):未勾選,因此這項參數不是清單。

在回應中使用參數資料

您可以在回應中使用參數的值。舉例來說,建構代理程式時,您可以在回應中使用 $language 參數參照。在執行階段,代理程式會將其替換為終端使用者運算式中指定的語言。

新增使用參數的回覆:

  1. 前往「Responses」(回應) 部分。
  2. 在「Text Response」(文字回應) 區段中,新增以下內容: Wow! I didn't know you knew $language.
  3. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

測試您的參數

模擬工具螢幕截圖

在模擬工具中輸入 I know Russian。您可以看到 Dialogflow 正確擷取值為「Russian」的 language 參數,然後在回應中使用參數參照處正確插入了「Russian」。

建立您自己的實體

在大部分情況下,您必須向使用者收集系統實體未提供的特定資料。您可以建立自訂實體來處理這類情況。

建立自訂實體:

  1. 在側邊選單中,按一下「Entities」(實體) 旁的新增實體 按鈕。
  2. 輸入 language-programming 做為實體名稱。
  3. 新增以下實體項目 (資料列):

    參照值 同義詞
    JavaScript JavaScript、js、ECMAScript
    Java Java
    Python Python、py
  4. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

實體運用的螢幕截圖

Dialogflow 可處理單複數和大小寫等簡單的差異。請為項目新增所有可能的同義詞。新增的同義詞越多,代理程式就越能正確識別實體。

使用新實體

將訓練詞組新增至 set-language 意圖,並使用新實體:

  1. 按一下側欄選單中的「意圖」
  2. 按一下 set-language 意圖。
  3. 請新增以下訓練詞組:
    • I know javascript
    • I know how to code in Java
  4. 請注意,系統會為這些訓練詞組中的程式設計語言自動加註,然後將其新增到「動作和參數」區段的參數。
  5. 在「Responses」(回應) 區段中,新增以下第二個文字回應: $language-programming is an excellent programming language
  6. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

測試您的新實體

模擬工具螢幕截圖

在模擬工具中輸入 I know how to code in py。Dialogflow 會正確擷取 language-programming 參數的 py,將其識別為 Python 實體,並在回應中插入該值。

背景資訊

如要控制對話的流程,您可以使用背景資訊

新增後續追蹤意圖

後續追蹤意圖可讓您控制對話,而不必手動建立及管理背景資訊。

建立後續追蹤意圖時,系統會將輸出背景資訊加到父項意圖,並將同名的輸入背景資訊加到子項意圖。這代表只有在前一輪對話符合父項意圖時,後續追蹤意圖才會比對成功。

set-language 意圖新增自訂的後續追蹤意圖:

  1. 選取您在先前步驟中建立的 set-language 意圖。
  2. 在「Response」(回應) 區段,更新文字回應:
    • Wow! I didn't know you knew $language. How long have you known $language?
  3. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。
  4. 按一下側欄選單中的「意圖」
  5. 將游標移至 set-language 意圖上,然後按一下「新增後續追蹤意圖」
  6. 按一下清單中的「自訂」
  7. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

Dialogflow 會自動將後續追蹤意圖命名為 set-language - custom

後續螢幕截圖

後續追蹤意圖的比對作業

只有在已有相符父項意圖時,系統才會比對後續追蹤意圖。由於只有在 set-language 意圖之後才會比對出 set-language - custom 意圖,因此代理程式剛剛向使用者詢問的是「How long have you known $language?」(您學 $language 多久了?)。請為該問題新增使用者可能會回答的訓練詞組:

  1. 按一下側欄選單中的「意圖」
  2. 按一下 set-language - custom 意圖。
  3. 請新增以下訓練詞組:
    • 3 years
    • about 4 days
    • for 5 years
  4. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

測試您的後續追蹤意圖

在模擬工具中輸入 I know French,然後以 about 2 weeks 回答問題 How long have you known French

雖然第二個表達內容 (about 2 weeks) 沒有任何回應,但您可以看到系統將表達內容配對至正確的意圖 (set-language - custom),並正確剖析出時間長度參數 (2 weeks)。

意圖和背景資訊

檢查 set-language 意圖,可以看到 set-language-followup 列為輸出背景資訊,前面有數字 2。這個數字稱做效期

輸出背景資訊的螢幕截圖

比對出 set-language 意圖後,set-language-followup 背景資訊就會啟用,並附加至對話的下兩個回合 (效期為 2)。因此,當您回覆 How long have you known $language? 這類問題時,set-language-followup 背景資訊就會啟用。

檢查 set-language - custom 意圖,會發現系統將 set-language-followup 列為輸入背景資訊,與 set-language 意圖的輸出背景資訊相同。

如果意圖的輸入背景資訊與啟用的背景資訊相符,Dialogflow 在比對意圖時就會優先選擇此意圖。

背景資訊和參數

背景資訊會儲存參數值,當 set-language 意圖的輸出背景資訊啟用時,您可以存取這個意圖所定義的參數值。在 set-language - custom 意圖中,您只問了使用者懂該語言多久的時間,而未要求使用者提及所參照的語言。

如要參照回覆中的語言:

  1. set-language - custom 意圖文字回應更新為 I can't believe you've known #set-language-followup.language for $duration!
  2. 按一下「儲存」按鈕,然後等待「代理程式訓練」對話方塊顯示訓練完成訊息。

#set-language-followup.language 參照是已啟用背景資訊的參數參照

測試背景資訊參數

在模擬工具中輸入 I know French,然後以 1 week 回答問題。請注意,language 參數值是擷取自背景資訊。

正式環境

在正式環境中執行代理程式前,請先實作正式環境最佳做法

後續步驟

請嘗試出貨快速入門導覽課程