每個會話回合都會發生互動。在互動期間,使用者會將輸入內容傳送至 Conversational Agents (Dialogflow CX),而 Conversational Agents (Dialogflow CX) 會傳送回應。實作系統以處理互動時,您有兩種選擇:使用 API 或整合。
使用 API 時,系統需要處理下列項目:
- 建構代理程式。
- 為使用者提供使用者介面。
- 針對每個對話回合呼叫 Dialogflow API,將使用者輸入內容傳送至 API。
- 除非您的對話方回應完全是靜態的 (不常見),否則您需要代管Webhook 服務,以便處理支援 Webhook 的執行要求。
使用整合時,您的系統只需處理下列項目:
- 建構代理程式。
- 視需要實作 Webhook 服務。
下圖顯示會話階段的步驟。
- 使用者輸入或說出內容,稱為「使用者輸入內容」。
- 使用者介面或整合系統會接收輸入內容,並在偵測意圖要求中轉送至 Dialogflow API。
- Dialogflow API 會收到偵測意圖要求。它會將輸入內容比對至意圖或表單參數,視需要設定參數,並更新工作階段狀態。如果需要呼叫支援 Webhook 的執行要求,系統會將 Webhook 要求傳送至 Webhook 服務,否則請前往步驟 6。
- 您的 Webhook 服務會收到 Webhook 要求。您的服務會採取任何必要動作,例如呼叫外部 API、查詢或更新資料庫等。
- Webhook 服務會建立回應,並將 Webhook 回應傳回 Conversational Agents (Dialogflow CX)。
- Conversational Agents (Dialogflow CX) 會建立檢測意圖回應。如果呼叫 Webhook,則會使用 Webhook 回應中提供的回應。如果未呼叫 webhook,系統會使用在代理程式中定義的靜態回應。Conversational Agents (Dialogflow CX) 會將偵測意圖回應傳送至使用者介面或整合系統。
- 您的使用者介面或整合系統會收到意圖偵測回應,並將文字或音訊回應轉寄給使用者。
- 使用者看到或聽到回應。
指南用途
本指南說明如何針對未使用整合服務的服務機器人,為單一對話輪次呼叫 API (上圖第 2 步驟)。本指南不會說明如何為使用者實作使用者介面。
事前準備
閱讀本指南之前,請先完成下列工作:
- 請參閱流程基本概念。
- 執行設定步驟。
- 建立新的代理程式,或繼續使用您在使用流程建構代理程式或使用劇本建構代理程式時建立的代理程式
收集 ID
下列範例需要幾個 ID 做為輸入內容。如要找出專案 ID、區域 ID 和服務專員 ID,請按照下列步驟操作:
Dialogflow CX 主控台
- 開啟 Dialogflow CX 控制台。
- 選取 Google Cloud 專案即可開啟代理程式選取器。
- 按一下清單中某個服務專員的 more_vert 選項選單。
- 按一下「複製名稱」filter_none 按鈕。
- 這會複製代理程式的完整識別名稱,包括專案 ID、區域 ID 和代理程式 ID,格式如下:
projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID
AI Applications 控制台
前往 AI Applications 控制台:
主控台頂端會顯示專案 ID。
「位置」欄會顯示區域 ID。
選取應用程式。
agents/
後方的瀏覽器網址路徑區段包含了代理程式應用程式 ID。
您也需要會話 ID。「工作階段」代表 Conversational Agents (Dialogflow CX) 代理程式與使用者之間的對話。您可以在對話開始時建立專屬的工作階段 ID,並將其用於每一回合的對話。為了試用 API,您可以使用任何長度不超過 36 個位元組的字串 ID,例如 test-session-123
。
呼叫偵測意圖
以下範例會呼叫 Sessions.detectIntent
方法。
選取工作階段參照項目的通訊協定和版本:
通訊協定 | V3 | V3beta1 |
---|---|---|
REST | 工作階段資源 | 工作階段資源 |
RPC | 工作階段介面 | 工作階段介面 |
C++ | SessionsClient | 不適用 |
C# | SessionsClient | 不適用 |
Go | SessionsClient | 不適用 |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | 不適用 | 不適用 |
Python | SessionsClient | SessionsClient |
Ruby | 不適用 | 不適用 |
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- AGENT_ID:你的代理人 ID
- REGION_ID:您的區域 ID
- SESSION_ID:您的工作階段 ID
- END_USER_INPUT:使用者輸入內容
HTTP 方法和網址:
POST https://REGION_ID-dialogflow.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID/sessions/SESSION_ID:detectIntent
JSON 要求主體:
{ "queryInput": { "text": { "text": "END_USER_INPUT" }, "languageCode": "en" }, "queryParams": { "timeZone": "America/Los_Angeles" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "responseId": "38e8f23d-eed2-445e-a3e7-149b242dd669", "queryResult": { "text": "I want to buy a shirt", "languageCode": "en", "responseMessages": [ { "text": { "text": [ "Ok, let's start a new order." ] } }, { "text": { "text": [ "I'd like to collect a bit more information from you." ] } }, { "text": { "text": [ "What color would you like?" ] } }, {} ], "currentPage": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/flows/00000000-0000-0000-0000-000000000000/pages/ce0b88c4-9292-455c-9c59-ec153dad94cc", "displayName": "New Order" }, "intent": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/intents/0adebb70-a727-4687-b8bc-fbbc2ac0b665", "displayName": "order.new" }, "intentDetectionConfidence": 1, "diagnosticInfo": { ... }, "match": { "intent": { "name": "projects/PROJECT_ID/locations/us-central1/agents/133b0350-f2d2-4928-b0b3-5b332259d0f7/intents/0adebb70-a727-4687-b8bc-fbbc2ac0b665", "displayName": "order.new" }, "resolvedInput": "I want to buy a shirt", "matchType": "INTENT", "confidence": 1 } } }
Java
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
正式化
在實際工作環境中執行服務前,請務必實作實際工作環境最佳做法。