本頁內容適用於 Apigee 和 Apigee Hybrid。
  
    查看 
    Apigee Edge 說明文件。
  
  
       
 
  
總覽
ParseDialogflowRequest 政策可協助您整合 Dialogflow 與 Apigee。詳情請參閱將 Apigee 與 Contact Center AI 整合。
這項政策是可擴充政策,使用這項政策可能會產生費用或影響用量,具體情況取決於您的 Apigee 授權。如要瞭解政策類型和使用方式的影響,請參閱「政策類型」。
ParseDialogflowRequest 政策會處理 Dialogflow 代理程式的 WebhookRequest,然後將要求資料傳送至後端系統。這項政策會將 WebhookRequest 中的資料擷取到流程變數中,供您在整個 API 呼叫期間使用。您可以在後續的附註、查閱或協調邏輯中使用這些變數。如果您希望 Dialogflow 代理程式與舊版後端系統互動,這項政策就特別實用。將代理程式的資料傳送至後端系統前,您可以先剖析資料並建構資料結構,讓後端系統能夠使用。
如果您是後端服務整合人員,就不必花時間瞭解 Dialogflow WebhookRequest 的格式。ParseDialogflowRequest 政策可處理要求資料,無須額外設定。
如要在 Apigee 中存取 Dialogflow 代理程式的 WebhookRequest,您必須將代理程式的 Webhook 網址 (執行要求) 設為您在 Apigee 中設定的 ProxyEndPoint。ProxyEndPoint 應可公開存取。詳情請參閱「Webhook 服務需求條件」。
<ParseDialogflowRequest>
  定義 ParseDialogflowRequest 政策。
| 預設值 | 不適用 | 
| 必填與否 | 必填 | 
| 類型 | 複雜物件 | 
| 父項元素 | 不適用 | 
| 子元素 | <DialogflowVersion><DisplayName><VariablePrefix> | 
下表提供 ParseDialogflowRequest 政策專屬子元素的高階說明:
| 子元素 | 是否必要 | 說明 | 
|---|---|---|
| <VariablePrefix> | 選用 | 指定流程變數的自訂前置字串。 | 
| <DialogflowVersion> | 選用 | 指定 Dialogflow 版本。 | 
範例
以下範例顯示範例 Webhook 要求、對應的 ParseDialogflowRequest 政策,以及套用政策後產生的流程變數:
語法
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ParseDialogflowRequest continueOnError="false" enabled="true" name="POLICY_NAME"> <!-- The display name for this policy --> <DisplayName>DISPLAY_NAME</DisplayName> <!-- The optional prefix to be added to all variables created from the Dialogflow Webhook request. Note that all variables created from the WebhookRequest object will be within a container named "google.dialogflow" --> <VariablePrefix>CUSTOM_PREFIX</VariablePrefix> <!-- The version of Dialogflow for which this request policy is written up. This policy supports only the CX version. This element is optional and defaults to CX if unspecified --> <DialogflowVersion>DIALOGFLOW_VERSION</DialogflowVersion> </ParseDialogflowRequest>
Webhook 要求
以下範例顯示 Dialogflow 代理程式的 Webhook 要求 (JSON 格式)。
{
    "fulfillmentInfo": {
        "tag": "check-claim-status"
    },
    "sessionInfo": {
        "session": "projects/apigee-test/locations/global/agents/ea45003d-3f5c-46ba-ac6b-f4c6dc8db707/sessions/5ea2e8-7c1-cf4-2cf-8e4d89e72",
        "parameters": {
            "claimId": "1234",
            "policyId": "abcd"
        }
    },
    "sentimentAnalysisResult": {
      "score": -0.7,
      "magnitude": 0.7
  }
}如要查看可在要求中設定的各種欄位,請參閱 WebhookRequest。
請參閱下一個範例,瞭解 ParseDialogflowRequest 政策設定。
ParseDialogflowRequest policy
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ParseDialogflowRequest continueOnError="false" enabled="true" name="DialogflowRequest-InsuranceAgent"> <DisplayName>Insurance Agent Webhook Request Policy</DisplayName> <VariablePrefix>my-prefix</VariablePrefix> <DialogflowVersion>CX</DialogflowVersion> </ParseDialogflowRequest>
請前往下一個範例,查看政策建立的流程變數。
流程變數
google.dialogflow.my-prefix.fulfillment.tag = "check-claim-status" google.dialogflow.my-prefix.session.id = "5ea2e8-7c1-cf4-2cf-8e4d89e72" google.dialogflow.my-prefix.session.project.id = "apigee-test" google.dialogflow.my-prefix.session.agent.id = "ea45003d-3f5c-46ba-ac6b-f4c6dc8db707" google.dialogflow.my-prefix.session.parameters.claimId = "1234" google.dialogflow.my-prefix.session.parameters.policyId = "abcd" google.dialogflow.my-prefix.sentimentAnalysisResultScore = -0.7 google.dialogflow.my-prefix.sentimentAnalysisResultMagnitude = 0.7
所有產生的流程變數都會以 google.dialogflow 開頭,後接 <VariablePrefix> 元素中指定的前置字串 (my-prefix)。
這個元素包含下列所有政策都適用的屬性:
| 屬性 | 預設 | 是否必要? | 說明 | 
|---|---|---|---|
| name | 不適用 | 必要 | 政策的內部名稱。 您可以選擇使用  | 
| continueOnError | false | 選用 | 將其設為 false,即可在政策失敗時傳回錯誤。這是大多數政策的預期行為。將其設為true,即使政策失敗,流程執行作業仍會繼續進行。另請參閱: | 
| enabled | 是 | 選用 | 設為 true即可強制執行政策。設為false即可關閉政策。即使政策仍附加至流程,系統也不會強制執行這項政策。 | 
| async | false | 已淘汰 | 此屬性已淘汰。 | 
子元素參照
本節說明<ParseDialogflowRequest> 的子元素。
  
  
  
 
    
    
  
  
<DisplayName>
  除了 name 屬性之外,您也可以在管理 UI 代理程式編輯器中使用其他更自然的名稱標記政策。
<DisplayName> 元素適用於所有政策。
| 預設值 | 不適用 | 
| 是否必要? | (非必要) 如果省略 <DisplayName>,系統會使用政策的name屬性值。 | 
| 類型 | 字串 | 
| 上層元素 | <PolicyElement> | 
| 子元素 | 無 | 
<DisplayName> 元素使用以下語法:
語法
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
範例
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName> 元素沒有屬性或子項元素。
<VariablePrefix>
指定流程變數的自訂前置字串。這個元素中指定的值會加到 ParseDialogflowRequest 政策產生的所有變數名稱前面。根據預設,政策產生的所有變數都會加上 google.dialogflow 前置字元。如果您已指定 VariablePrefix 元素,自訂前置字元會新增至 google.dialogflow 後方。因此,變數名稱開頭為 google.dialogflow.CUSTOM_PREFIX。
如果未指定 VariablePrefix 元素,變數名稱只會加上 google.dialogflow 前置字元。
| 預設值 | 不適用 | 
| 必填與否 | 選用 | 
| 類型 | 字串 | 
| 父項元素 | <ParseDialogflowRequest> | 
| 子元素 | 無 | 
<VariablePrefix> 元素使用下列語法:
語法
<VariablePrefix>VARIABLE_PREFIX</VariablePrefix>
範例
以下範例會將 VariablePrefix 設為 my-prefix:
<VariablePrefix>my-custom-prefix</VariablePrefix>
根據這項設定,所有變數名稱都會以 google.dialogflow.my-custom-prefix 開頭。
<DialogflowVersion>
指定 Dialogflow 版本。ParseDialogflowRequest 政策僅支援 CX 版本。如未在政策中指定這個元素,版本預設為 CX。
| 預設值 | 不適用 | 
| 必填與否 | 選用 | 
| 類型 | 字串 | 
| 父項元素 | 不適用 | 
| 子元素 | 無 | 
<DialogflowVersion> 元素使用下列語法:
語法
<DialogflowVersion>DIALOGFLOW_VERSION</DialogflowVersion>
範例
以下範例會將 DialogflowVersion 設為 CX:
<DialogflowVersion>CX</DialogflowVersion>
錯誤代碼
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
| 錯誤代碼 | HTTP 狀態 | 原因 | 修正 | 
|---|---|---|---|
| steps.parsedialogflowrequest.InvalidSessionInfo | 500 | 如果 Dialogflow 要求中含有無效的 sessionInfo.session 欄位,就會發生這個錯誤。Webhook 可以使用這個欄位來識別工作階段。如要瞭解支援的工作階段格式,請參閱 SessionInfo 類別。 | |
| steps.parsedialogflowrequest.MalformedInput | 500 | 如果您向這項政策提供的 JSON 無效或格式不正確,就會發生這個錯誤。 | 
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
| 錯誤名稱 | 原因 | 修正 | 
|---|---|---|
| UnsupportedOperation | 如果您在 DialogflowVersion元素中指定不支援的 Dialogflow 版本,就會發生這項錯誤。ParseDialogflowRequest 政策僅支援CX版本。 | 
錯誤變數
每當政策發生執行錯誤時,Apigee 就會產生錯誤訊息。您可以在錯誤回應中查看這些錯誤訊息。很多時候,系統產生的錯誤訊息可能與產品情境無關。您可能會根據錯誤類型自訂錯誤訊息,讓訊息更有意義。
如要自訂錯誤訊息,您可以使用錯誤規則或 RaiseFault 政策。如要瞭解錯誤規則和 RaiseFault 政策的差異,請參閱 FaultRules 與 RaiseFault 政策。您必須在錯誤規則和 RaiseFault 政策中使用 Condition 元素檢查條件。Apigee 會提供每項政策專屬的錯誤變數,而錯誤變數的值會在政策觸發執行階段錯誤時設定。您可以使用這些變數,檢查特定錯誤情況並採取適當行動。如要進一步瞭解如何檢查錯誤條件,請參閱「建構條件」。
下表說明這項政策的特定錯誤變數。
| 變數 | 地點 | 範例 | 
|---|---|---|
| fault.name="FAULT_NAME" | FAULT_NAME 是錯誤名稱,如執行階段錯誤表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "UnresolvedVariable" | 
| ParseDialogflowRequest.POLICY_NAME.failed | POLICY_NAME 是擲回錯誤的政策的使用者指定名稱。 | ParseDialogflowRequest.My-Parse-Dialogflow-Req.failed = true | 
相關主題
Apigee GitHub 提供 Apigee Proxy 和共用流程的參考實作,說明如何使用 ParseDialogflowRequest 政策。詳情請參閱對話式 AI 參考實作。