本頁面說明使用 Dialogflow ES 的基本概念。在繼續瀏覽其他文件或快速入門導覽課程之前,建議您先詳閱這個頁面。
協助使用者與技術產品互動
傳統版電腦介面必須取得可預測的結構化輸入內容才能正常運作,不過這項特性有時卻導致這類介面變得不自然且難以使用。如果使用者無法輕易理解這類結構化輸入內容,就無法瞭解應該採取何種行動。在理想情況下,您的介面應該可以依據使用者提供的自然語言內容推論出他們的需求。
以簡單的使用者要求「今天的天氣概況如何?」為例,其他使用者可能也會以下列方式提問:
- 「今天天氣如何?」
- 「舊金山明天氣溫幾度?」
- 「21 日的天氣如何?」
您會發現即便是這麼簡單的問題,對話也有可能難以延續。如想解讀及處理自然語言,您就必須使用相當穩固可靠的語言剖析器。Dialogflow 可以為您處理這個問題,方便您提供高品質的使用者對話體驗。
代理程式
Dialogflow「代理程式」是虛擬服務專員,可用來處理與使用者的並行對話。這種自然語言理解模組可以解讀人類語言的細微差異。Dialogflow 會將使用者在對話期間提供的文字或音訊內容轉譯為應用程式與服務可以解讀的結構化資料。您可以設計並建構 Dialogflow 代理程式來處理您的系統所需要的對話類型。
Dialogflow 代理程式與客服中心的真人客服專員類似,您可以訓練代理程式和客服專員來處理預期的對話情境,而且您的訓練內容不必過於明確。
意圖
意圖可將使用者在一個對話回合中的意圖歸類。您通常會為一個代理程式定義多項意圖,您的意圖組合則可處理完整對話。當使用者輸入或說出某項內容時 (稱為「使用者表達內容」),Dialogflow 會為使用者表達內容進行比對,找出代理程式中最相符的意圖。比對意圖的作業也稱為「意圖分類」。
舉例來說,您可以建立天氣代理程式來辨識及回應使用者提出的天氣相關問題。您可能會針對天氣預測的相關問題定義意圖。如果使用者說出「天氣概況如何?」,Dialogflow 會將該使用者表達內容與預報意圖進行比對。您也可以定義意圖,以從使用者表達內容中擷取有用的資訊,例如所需天氣預報的時間或地點。您的系統必須使用這類擷取資料,才能順利處理使用者傳送的天氣查詢。
基本意圖中包含以下幾項元素:
- 訓練詞組:這些是使用者可能說出的詞組範例。如果使用者表達內容與其中一個詞組相近,Dialogflow 就會將其視為與意圖相符。您無須定義所有可能的範例,因為 Dialogflow 內建的機器學習技術會依據其他類似的詞組擴充清單。
- 動作:您可以為各項意圖定義動作。Dialogflow 會在意圖比對完畢後將動作提供給系統,您就能使用該項動作觸發系統中定義的特定動作。
- 參數:在執行階段中比對意圖時,Dialogflow 會提供從使用者表達內容中擷取的值來當做參數。每項參數都含有實體類型,可明確指出資料的擷取方式。與原始使用者輸入內容不同,參數是結構化的資料,可輕鬆用於執行某些邏輯或產生回應。
- 回應:您所定義要傳回給使用者的文字、語音或視覺回應,可能是向使用者提供答案、詢問更多資訊或結束對話。
下圖呈現了意圖比對和回應使用者的基本流程:
實體
每項意圖參數都含有實體類型,可明確指出系統從使用者表達內容中擷取資料的方式。
Dialogflow 提供預先定義的系統實體,可以比對許多常見的資料類型。舉例來說,您可以使用系統實體來比對日期、時間、顏色、電子郵件地址等。不過,您也可以自行建立自訂實體來比對自訂資料。舉例來說,您可以定義「蔬菜」實體,以便比對可在日用品商店代理程式中購買的蔬菜種類。
背景資訊
Dialogflow 背景資訊與自然語言脈絡相似。如果有人對您說「這些是橘色的」,您必須取得背景資訊才能瞭解「這些」指的是什麼。同理,為了讓 Dialogflow 順利處理使用者表達的內容,您必須提供背景資訊,系統才能正確比對意圖。
您可以使用背景資訊來控管對話流程。您可以設定輸入和輸出背景資訊 (以字串名稱識別),藉此設定意圖的背景資訊。系統比對意圖時,您為這項意圖設定的任何輸出背景資訊都會變為「使用中」狀態。如有任何背景資訊處於「使用中」狀態,Dialogflow 就會找出與現有「使用中」背景資訊相符的輸入背景資訊,並更有可能比對設有這類背景資訊的意圖。
下圖呈現的範例將背景資訊用於銀行代理程式。
- 使用者詢問自有支票帳戶的相關資訊。
-
Dialogflow 將使用者表達的內容與
CheckingInfo
意圖相互比對。這項意圖含有checking
輸出背景資訊,因此背景資訊會變為「使用中」狀態。 - 代理程式詢問使用者需要何種支票帳戶資訊。
- 使用者回覆「my balance」(餘額)。
-
Dialogflow 將使用者表達的內容與
CheckingBalance
意圖相互比對。這項意圖含有checking
輸入背景資訊,因此這項背景資訊必須處於「使用中」狀態,系統才能比對這項意圖。如果savings
背景資訊處於「使用中」狀態,系統可能也會使用相似的SavingsBalance
意圖來比對同一項使用者表達內容。 - 系統執行必要的資料庫查詢之後,代理程式回覆支票帳戶餘額。
後續追蹤意圖
您可以使用後續追蹤意圖自動設定意圖組合的背景資訊。後續追蹤意圖是相關聯父項意圖的子項。在您建立後續追蹤意圖之後,輸出背景資訊會自動新增至父項意圖,具備相同名稱的輸入背景資訊則會新增至後續追蹤意圖。前一個對話回合中的父項意圖必須比對成功,後續追蹤意圖才能比對成功。您也可以建立多層級的巢狀後續追蹤意圖。
針對常見的使用者回覆 (例如「是」、「否」或「取消」),Dialogflow 提供許多預先定義的後續追蹤意圖。不過,您也可以自行建立後續追蹤意圖來處理自訂回覆。
Dialogflow 主控台
Dialogflow 提供名為「Dialogflow 主控台」的網頁版使用者介面 (參閱說明文件、開啟主控台)。您可以使用這個主控台來建立、建構及測試代理程式。
Dialogflow 主控台與 Google Cloud Platform (GCP) Console 不同 (參閱說明文件、開啟主控台)。Dialogflow 主控台用於管理 Dialogflow 代理程式,GCP Console 則用於管理 GCP 專屬的 Dialogflow 設定 (例如計費功能設定) 和其他 GCP 資源。
在大多數情況下,我們會建議您使用 Dialogflow 主控台來建構代理程式,但您也可以透過 Dialogflow API 建構適用於進階情境的代理程式。
使用者與整合項目之間的互動
Dialogflow 已與多個常見的對話平台相互整合,例如 Google 助理、Slack 和 Facebook Messenger。如果您要為上述平台建構代理程式,建議您從眾多「整合」選項中擇一使用。這些功能可以為您處理直接的使用者互動,讓您專心建構代理程式。每個整合項目都會以平台專屬方式處理使用者互動,因此請參閱整合平台的說明文件,瞭解詳細資訊。
整合項目的執行要求
根據預設,代理程式會使用靜態回應回覆已比對的意圖。如果您使用某個整合選項,可以使用執行要求提供更動態的回應。當您為意圖啟用執行要求時,Dialogflow 會呼叫您定義的服務,回應該意圖。舉例來說,如果使用者想要預約星期五剪髮,您的服務可以檢查資料庫,並以星期五是否可預約的資訊回應使用者。
每項意圖都含有啟用執行要求的設定。如果意圖需要系統動作或動態回應,則應為該意圖啟用執行要求。如果系統比對的是未啟用執行要求的意圖,Dialogflow 就會使用您為該項意圖定義的靜態回應。
如果系統比對的是已啟用執行要求的意圖,Dialogflow 則會將要求傳送至「Webhook」服務,並附上相符意圖的相關資訊。您的系統可以執行任何必要操作,並將操作進行方式回覆給 Dialogflow啟用執行要求後,只有在Webhook 服務失敗時,系統才會使用您為意圖定義的靜態回應。下圖呈現了執行要求的處理流程。
- 使用者輸入或說出表達內容。
- Dialogflow 比對出使用者表達內容與意圖相符並擷取參數。
- Dialogflow 將 Webhook 要求訊息傳送至您的 Webhook 服務,這則訊息中包含相符意圖、操作和參數的相關資訊,並提供為意圖定義的回應。
- 您的服務會視需要執行動作,例如進行資料庫查詢或外部 API 呼叫。
- 您的服務將 Webhook 回應訊息傳送給 Dialogflow,這則訊息中包含要傳送給使用者的回應。
- Dialogflow 將回應傳送給使用者。
- 使用者看到或聽到回應。
使用者與 API 之間的互動
如果您未採用其中一個整合選項,則須編寫可直接與使用者互動的程式碼。另外,您也必須在每個會話回合中直接與 Dialogflow 的 API 進行互動,以便傳送使用者表達內容並接收意圖比對結果。下圖呈現了與 API 互動時的處理流程。
- 使用者輸入或說出表達內容。
- 您的服務會在偵測意圖要求訊息中,將此使用者表達內容傳送至 Dialogflow。
- Dialogflow 將偵測意圖回應訊息傳送至您的服務。這則訊息中包含相符意圖、操作和參數的相關資訊,並提供為意圖定義的回應。
- 您的服務視需求執行操作,像是查詢資料庫或呼叫外部 API。
- 服務將回應傳送給使用者。
- 使用者看見或聽見回應內容。