為代理啟用 Cloud Logging
為代理程式啟用 Cloud Logging。這對於擷取資料及診斷實際對話中的問題至關重要。
收集對話 ID
如果發生非預期行為,請收集 Dialogflow 對話 ID。這些 ID 位於對話記錄中,可追蹤對話的執行路徑,並檢查特定互動。
API 呼叫遭拒
問題
收到 API 呼叫的 PERMISSION_DENIED 回應。
解決方案
請確認您已正確設定 (Dialogflow CX、Dialogflow ES) 驗證和角色。請特別注意,請務必完成以下操作:
- 已建立服務帳戶,且未誤刪。
- 為服務帳戶提供角色,授予呼叫所選方法的權限。
- 已下載服務帳戶私密金鑰檔案。
- 將
GOOGLE_APPLICATION_CREDENTIALS環境變數設為私密金鑰檔案。
API 呼叫提及不明專案
問題
收到 API 呼叫的錯誤訊息。Dialogflow API has not been used in project 32555940559
解決方案
請確認你已完成下列事項:
- 設定
GOOGLE_APPLICATION_CREDENTIALS環境變數 (請參閱PERMISSION_DENIED)。 - 提供給 API 呼叫的專案 ID 正確無誤。
API 呼叫發生驗證憑證無效錯誤
問題
收到 API 呼叫的回應。Request had invalid authentication credentials.
Expected OAuth 2 access token, login cookie
or other valid authentication credential.
解決方案
這可能是因為您使用用戶端程式庫手動建立憑證時,指定了非預設區域。如需相關指引,請參閱下列文章:
API 呼叫回應要求切換至其他主機
問題
收到 API 呼叫的 Please switch to 'REGION-dialogflow.googleapis.com' to access resources
located in 'REGION' 回應,其中 REGION 是特定區域 ID。
解決方案
如果您在要求中指定區域,但未指定端點,就會發生這種情況。如需相關指引,請參閱下列文章:
API 呼叫回應缺少欄位
問題
API 回應缺少部分欄位。
解決方案
如果您預期 API 回應中的特定欄位會是數值,但傳回值為 0 時,該欄位可能不會出現在回覆中。
如要進一步瞭解預設值行為 (包括非數值),請參閱:
由於有防刪除鎖定,因此無法刪除專案
問題
嘗試刪除 Google Cloud 專案時,您會收到通知,指出專案有留置權,因此無法刪除,且其中一項留置權與 Dialogflow ES 相關。
解決方案
請確認您不再需要與專案相關聯的 Dialogflow ES 虛擬服務專員。如果收到代理程式不存在的通知,表示該代理程式已遭刪除。
Dialogflow ES 主控台
開啟 https://dialogflow.cloud.google.com/#/agent/project-id/intents。
請注意,這個連結與 Google Cloud 專案刪除對話方塊中的連結不同。
Dialogflow API
使用
agent類型的search方法。取得留置權名稱。
gcloud
如要列出專案的留置權,請使用 gcloud alpha resource-manager liens list 指令,詳情請參閱「列出專案的留置權」說明文件。
API Explorer
在「Method: liens.list」(方法:liens.list) 頁面使用「Try this API」(試用這個 API) 面板:
- 按照參數說明中的建議,填寫
parent欄位。 - 點選「Execute」。
- 按照參數說明中的建議,填寫
刪除防刪除鎖定。
gcloud
如要移除防刪除鎖定,請使用 gcloud alpha resource-manager liens delete LIEN_NAME 指令,詳情請參閱「移除專案的防刪除鎖定」說明文件。
API Explorer
在「Method: liens.delete」頁面使用「Try this API」面板:
- 在「
name」欄位中填入您在步驟 2 中取得的防刪除鎖定名稱。 - 點選「Execute」。
- 在「
關閉專案。
Dialogflow CX 網頁服務掛鉤失敗,並顯示逾時錯誤
問題
從 Dialogflow CX 呼叫的 Webhook 可能會失敗,並顯示以下錯誤訊息:
Webhook call failed. Error: DEADLINE_EXCEEDED
這可能是因為 Webhook 呼叫超過 Webhook 逾時限制。以下是 Webhook 呼叫可能超過逾時限制的原因:
- 嘗試觸發不存在的意圖。
- Webhook 後端 (例如 Cloud Functions) 的冷啟動問題。
- Webhook 會呼叫其他服務,導致回應時間變長。
- 代理程式與 Webhook 後端之間沒有連線 (例如負載平衡器設定錯誤)。
- 機構政策禁止執行輸入流量或 Dialogflow 方法。
解決方法
Webhook 的預設逾時上限為 5 秒。您可以建立或編輯 Webhook 資源,藉此提高 Webhook 的逾時限制,讓 Webhook 有更多時間回應。
控制台無法設定專案
問題
使用控制台建立代理程式時,收到 Failed to set up GCP project 錯誤。
解決方案
您可能沒有建立專案的權限。 Google Cloud 確認是否可以直接從控制台建立 Google Cloud 專案。如果無法建立專案,請按照錯誤訊息中的建議操作。
回覆中顯示工作階段參數參照
問題
Dialogflow 傳回的回應包含參數參照,而非參數值。例如:
Hello, $session.params.customer_name
如果系統在目前工作階段中找不到參數,或參數的使用方式不符合其類型,系統就不會解析參數,而是顯示參數參照。
解決方案
如果使用的參數未納入對話、有錯字,或與使用的類型不同,就可能會出現這個問題。
如果未啟用 API,控制台就無法建立代理程式
問題
使用控制台建立代理程式時發生錯誤。Dialogflow API has not been enabled for the project. Code: FAILED_PRECONDITION
解決方案
按照設定步驟啟用 Dialogflow API。
嘗試從機構帳戶存取控制台時,收到服務錯誤訊息
問題
嘗試從機構帳戶存取控制台時,收到 You don't have access to this service 錯誤訊息。
解決方案
請與貴機構的系統管理員聯絡,確認貴機構的設定允許存取控制台。否則,請檢查您從其他機構遷移的帳戶是否已遭 Google 標示為受限。如果貴機構的其他使用者可以存取控制台,但您無法存取,這很可能就是問題所在。
或者,您也可以向支援團隊尋求協助。
缺少流程,因此無法以 JSON 格式匯出代理程式
問題
代理程式以原始位元組形式匯出時成功,但以 JSON 格式匯出時失敗,並顯示類似以下的錯誤訊息:
Flow 'projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/flows/FLOW_ID' does not exist in the agent
如果測試案例參照的流程已刪除,就會發生這個問題。
解決方案
如要解決這個問題,請找出未使用的測試案例,確認錯誤訊息中參照的流程是否用於任何測試案例,然後刪除確認的測試案例。
電話閘道連線
問題
使用電話閘道時,收到忙線訊號或通話中斷。
解決方案
這項功能設有配額與限制。如果收到忙線訊號或通話中斷,表示可能已超過配額。
嘗試建立新電話號碼時發生 RESOURCE_EXHAUSTED 錯誤
問題
在 Dialogflow CX、Dialogflow ES 或 Agent Assist 中嘗試建立新電話號碼時,系統會傳回 RESOURCE_EXHAUSTED 錯誤。
解決方案
這個錯誤表示您已超出每個專案的電話號碼上限。如要建立新的電話號碼,請刪除與專案相關聯的未使用電話號碼,直到低於上限為止。
如果您在 Dialogflow CX Phone Gateway 或 Dialogflow ES Phone Gateway 中建立電話號碼,可以在主控台中刪除。請注意,刪除代理程式時,如果沒有一併刪除電話號碼,與該代理程式相關聯的電話號碼就不會刪除。
或者,您也可以按照下列步驟使用 API。
步驟 1:找出與專案相關聯的所有電話號碼
如要找出與專案相關聯的電話號碼,請針對可能已建立電話號碼的所有區域,使用 projects.phoneNumbers/list 或 projects.locations.phoneNumbers.list API 方法。
如為
global區域,請使用下列指令:curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/phoneNumbers如果是其他區域,您需要在兩個位置指定區域:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/phoneNumbers
步驟 2:(選用) 找出與對話設定檔相關聯的代理程式
透過對話設定檔取得與電話號碼相關聯的 Dialogflow CX 服務專員 ID,有助於判斷服務專員是否仍在使用中,以及是否仍需要該電話號碼。方法是使用 projects.conversationProfiles/get API 方法。您可以在步驟 1 中執行的指令回覆中找到對話設定檔 ID。
如為
global區域,請使用下列指令:curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/conversationProfiles/CONVERSATION_PROFILE_ID如為其他區域,請在兩個位置指定區域:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/conversationProfiles/CONVERSATION_PROFILE_ID
在 Dialogflow CX 控制台的「View all agents」頁面,使用「Search」選項依 ID 尋找服務專員。
如果是 Dialogflow ES,一個專案最多只能與五個代理程式建立關聯,且一個 Dialogflow ES 代理程式只能與一個電話號碼建立關聯。因此,您可以透過 https://dialogflow.cloud.google.com/#/editAgent/PROJECT_ID/intents,在 Dialogflow ES 控制台中開啟代理程式。
如果找不到代理人,但確定不再需要該電話號碼,仍可刪除。
步驟 3:刪除未使用的電話號碼
如要刪除不再需要的電話號碼,請使用 projects.phoneNumbers/delete 或 projects.locations.phoneNumbers.delete API 方法。您可以在步驟 1 中執行的指令回覆中,找到電話號碼 ID。
如為
global區域,請使用下列指令:curl -X DELETE \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_ID如為其他區域,請指定區域:
curl -X DELETE \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ https://REGION_ID-dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_ID
Dialogflow CX Messenger 沒有回應
問題
Dialogflow CX Messenger 互動沒有服務專員回應。
解決方案
如果沒有收到 Dialogflow CX Messenger 的任何回覆,請確認專案已啟用帳單功能,且專案已啟用 Dialogflow API。請參閱設定操作說明。
參數值相符,但不是實體同義字
問題
- 一般情況:即使與參數相應的實體不含相符值做為同義字,系統仍會在執行階段擷取參數值。
- 更具體的案例:從實體刪除同義詞並重新訓練代理程式後,系統仍會將該同義詞擷取為這個實體的參數值。
解決方案
- 使用「搜尋」選項,檢查代理程式中是否可能存在相符值 (做為隱含實體) (Dialogflow CX、Dialogflow ES)。找出所有含有這個參數和實體的註解意圖。
- 修正註解,確保這些註解都不會套用至代表不當相符值的文字。
- 在執行階段測試代理程式,確認問題是否已解決。
- 如果問題仍未解決,請確認進階實體設定中的「自動擴展」和「模糊比對」選項均未勾選,然後再次測試代理程式。
語音機器人略過部分回覆
問題
如果服務專員同時支援文字和語音,語音機器人不會朗讀部分回覆。
解決方案
如果為特定對話輪次定義了至少一個輸出音訊文字回應,請確保在該對話輪次的所有步驟中,代理程式的完成和 Webhook 回應都一律提供輸出音訊文字選項。
SSML 標記未生效
問題
代理程式履行中定義了 SSML 標記,但語音機器人讀取合成文字時,沒有套用 SSML 效果。
解決方案
請確認 Dialogflow 主控台中的每個回覆資訊卡,或 API/Webhook 提供的每個回覆訊息物件,都只包含一組 <speak></speak>。
語音虛擬服務專員將數字 0 唸成字母 O
問題
如果是專為語音設計的代理程式,語音代理程式會將零讀成字母 O,而不是數字 0。
解決方案
- 將「Agent says」(虛擬服務專員說) 變更為使用「Output audio text dialogue option」(輸出音訊文字對話選項) 。
- 勾選 SSML 核取方塊。
- 使用 SSML 標記包圍文字:
<speak> <say-as interpret-as='verbatim'>YOUR_TEXT</say-as> </speak> - 。
舉例來說,信用卡號碼中的零會唸成「零」:
<speak>
<say-as interpret-as='verbatim'>5177 7702 8500 4578</say-as>
</speak>合成發音不符預期
問題
合成的服務專員回覆發音 (例如專有名詞、縮寫) 不如預期。
解決方案
如要確保系統能正確發音不常見的字詞,請在代理程式回覆中使用 SSML say-as 或 phoneme 標記。
已達允許的狀態機器執行步驟上限
問題
將執行階段要求傳送至服務專員時,在 Dialogflow CX 控制台或記錄中收到下列錯誤訊息:
You have reached the maximum allowed state machine execution steps. You may consider simplifying your agent/flow design. Current execution steps are: [<array_of_objects>]
錯誤訊息中的陣列包含要求執行步驟的清單。如果步數過多,清單可能不完整。
解決方案
這則錯誤訊息通常表示單一對話輪的轉移次數過多。常見的例子是轉換至同一網頁,這會建立無限迴圈。
如要解決這個問題,請按照下列步驟操作:
- 從錯誤訊息複製 JSON 陣列。
- (選用) 將複製的陣列格式化為美觀的 JSON,方便閱讀。 如果錯誤訊息遭到截斷,請搜尋最後一個「Step」物件,刪除不完整的步驟物件和前面的半形逗號,然後在驗證及美化 JSON 之前,新增右方括號。
- 查看每個步驟的
"TriggeredTransitionRouteId"和"TargetPage"值。如果是無限迴圈,大部分步驟的"TriggeredTransitionRouteId"和"TargetPage"欄位都會重複值。 - 修改代理程式設計,移除無限迴圈轉換,或減少單一對話回合的轉換次數。
規則運算式比對過於廣泛
問題
建立正則運算式實體 (Dialogflow CX、Dialogflow ES) 時收到錯誤 Regular expression match is too broad。
解決方案
請考慮下列做法:
- 在規則運算式中使用
^和$,分別表示文字的開頭和結尾。 - 使用具有必要參數的 Regexp 實體 (Dialogflow CX、Dialogflow ES)。
- 定義必要參數提示,要求使用者只提供實體值,不要加上任何周圍的字詞。
語音辨識插入非英數的字元
問題
嘗試比對英數字元時,語音辨識器會插入非英數字元 (空格、破折號等),導致實體不相符。
解決方案
- 如果使用系統實體比對數字,建議改用 regexp 實體 (Dialogflow CX、Dialogflow ES)。
- 請按照「regexp 實體無法準確辨識英數字」一節中的所有建議操作。
- 如要使用電話整合功能比對號碼,除了語音辨識功能外,也可以考慮使用 DTMF 選項。
語音輸入的轉錄稿空白
問題
語音輸入的 Dialogflow 回應會傳回空白轉錄稿。系統會將要求視為沒有輸入內容或沒有相符項目。
解決方案
聆聽音訊錄音內容,確認是否含有語音。
確認已在虛擬服務專員設定中啟用語音適應功能 (Dialogflow CX、Dialogflow ES)。
如果啟用語音適應功能後問題仍未解決,請在非正式環境中實驗下列語音模型,並使用可產生最佳結果的模型:
latest_shortphone_callcommand_and_search
如要瞭解支援的語音模型,請參閱 Speech-to-Text 支援的語言說明文件。
指定語音模型的方式,取決於您如何設定與 Dialogflow 的互動。
如果是 API 要求,請在
InputAudioConfig(Dialogflow CX、Dialogflow ES) 的model欄位中提供模型名稱。如果您使用 Phone Gateway (Dialogflow CX、Dialogflow ES),可以更新對話設定檔中的語音模型。啟用整合功能時,Dialogflow 會建立對話設定檔:
擷取對話設定檔 ID:
- 使用
conversationProfiles.list方法,擷取連結至專案的所有對話設定檔。 - 找出要更新的對話設定檔,然後複製
name欄位值。
如果是 Dialogflow CX Phone Gateway,對話設定檔顯示名稱會顯示在整合設定中。如果是 Dialogflow ES Phone Gateway,對應的對話設定檔顯示名稱就是啟用整合功能的代理程式名稱。
如果有多個對話設定檔使用相同的顯示名稱,請從
conversationProfiles.list方法回應的automatedAgentConfig欄位中驗證代理程式 ID。- 使用
使用
conversationProfiles.patchAPI 方法更新SpeechToTextConfig中的model欄位。
如果是 Contact Center AI 整合,請洽詢電話整合商,瞭解如何更新整合或個別要求的語音模型。
瞭解應對手冊迴圈錯誤
問題
連結應對手冊時發生錯誤 Playbook <playbookID> caused loop in playbook routes。
解決方案
如果您嘗試將路徑導向「上層」劇本 (直接或間接呼叫目前劇本的劇本),可能會發生迴圈。如要修正這個問題,請確認劇本路徑是單向,且不會在同一條對話路徑中返回父項劇本。
比較代理程式版本時,出現空白畫面錯誤「檔案大小超過 2 MB」
問題
嘗試比較兩個不同代理程式版本時,畫面會空白,並顯示以下錯誤訊息:
File size exceeds 2MB
這是因為其中一個檔案超過 2 MB。
解決方案
如要比較代理程式版本,但其中一個檔案的大小超過 2 MB,建議使用 API 方法 compareVersion。
規則運算式實體無法準確辨識英數語音
問題
收到語音輸入的英數字元轉錄稿不正確,這些英數字元設計為與正則運算式實體 (Dialogflow CX、Dialogflow ES) 相符。
解決方案
- 確認已在虛擬服務專員設定中啟用語音適應功能 (Dialogflow CX、Dialogflow ES)。
- 請確認至少有一個實體項目符合所有規則運算式項目的規定 (Dialogflow CX、Dialogflow ES)。
- 如為特定模式,請使用最明確的規則運算式。舉例來說,如果英數字元開頭為兩個字母,後面接著五個數字,請使用
[a-zA-Z]{2}\d{5},而非[a-zA-Z0-9]{7}。 - 請確認您的 Regexp 實體允許比對語音辨識器可能插入的非英數字元 (空格、破折號等)。如要符合這份清單中的規定 2,請建立多個實體項目:一個項目用於滿足這份清單的規定 2,另一個項目則用於處理非英數字元。舉例來說,如要比對五位數,並允許非英數字元:
\d{5}(\d[^a-zA-Z0-9]*){5} - 請確認虛擬服務專員符合參數定義規定 (Dialogflow CX、Dialogflow ES)。
Dialogflow CX 範例
Dialogflow ES 範例
- 請確認虛擬服務專員符合訓練詞組註解規定。
Dialogflow ES 範例
- 請確認測試符合測試規範 (Dialogflow CX、Dialogflow ES)。
- 如要移除語音辨識器可能插入的非英數字元,請使用下列項目:
- Dialogflow CX:SUBSTITUTE 系統函式或 Webhook
- Dialogflow ES:Webhook
- 查看語音適應限制 (Dialogflow CX、Dialogflow ES)。
設計可控的對話
建構代理時,請明確定義對話路徑。確認代理程式可以要求提供履行使用者需求所需的資訊。避免對話範圍過於廣泛,否則可能會導致無法預測的行為。
分析記錄
應對手冊、工具和資料儲存庫的輸入和輸出內容會記錄在記錄檔中。使用收集到的對話 ID 追蹤通話鏈,並找出執行錯誤的位置。
測試提示
如果特定指令無法正常運作,請嘗試重新措辭。 或者,您也可以使用 Gemini 生成提示 (元提示)。這種疊代方法有助於找出最適合您使用案例的措辭。
向支援團隊提供完整資訊
向 Cloud 支援團隊建立客服案件時,請附上調查期間收集到的相關對話 ID 和記錄。這項資訊對於有效率地偵錯至關重要。