建構驗證邏輯

本文件說明建構地址檢查系統的程序,以便處理 Address Validation API 的各種回應。這篇文章將說明如何解讀 API 回應,以便判斷何時及如何向客戶索取更多資訊。

一般來說,API 回應會決定系統應以下列方式處理地址:

  • 修正:地址可能含有重大問題。
    考慮要求客戶提供更多資訊。
  • 新增子門牌:地址可能缺少子門牌。
    建議您提醒客戶新增單位號碼。
  • 確認:地址可能有小問題。
    建議您提醒客戶確認地址是否正確。
  • 接受:地址可能沒有問題。
    如果您不想再收到進一步提示,可以考慮使用該地址,但請自行承擔風險。

金鑰用途

這份文件可協助您修改系統,以便最佳化 API 回應分析,並決定要針對提供的地址採取哪些後續行動。以下是可能的流程,以擬似程式碼表示。

if (verdict.possibleNextAction == FIX)
    Prompt the user to fix the address.
else if (verdict.possibleNextAction == CONFIRM_ADD_SUBPREMISES)
    Prompt the user to add a unit number.
else if (verdict.possibleNextAction == CONFIRM)
    Confirm with the user that the address is correct.
else
    Continue with the address returned by the API.

具體邏輯取決於您的情況。詳情請參閱「自訂驗證邏輯」。

可能的工作流程

下表列出您可以實作的可能工作流程,以便根據 API 回應提示客戶。

系統行為
修正地址

verdict 的回應表示地址可能有重大問題。例如:verdict.possibleNextActionFIX。建議您請客戶提供更多資訊。

工作流程

  1. 視需要調查地址元件。
  2. 提示客戶修正地址問題。
  3. 要求驗證更新後的地址。
  4. (選用) 將要求傳送至 API 的意見回饋端點。請參閱「處理更新的地址」。
  5. 繼續輸入地址。
新增子門牌

verdict 的回應指出地址可能缺少子門牌。例如 verdict.possibleNextActionCONFIRM_ADD_SUBPREMISES。建議你提醒客戶新增單位號碼。

工作流程

  1. 請客戶新增單位號碼。
  2. 要求驗證更新後的地址。
  3. (選用) 將要求傳送至 API 的意見回饋端點。請參閱「處理更新的地址」。
  4. 繼續輸入地址。
確認地址

verdict 的回應表示地址可能有小問題。例如 verdict.possibleNextActionCONFIRM。建議您提醒客戶檢查地址。

工作流程

  1. 需要修正的內容:
    1. 視需要調查地址元件。
    2. 要求驗證更新後的地址。
    3. (選用) 將要求傳送至 API 的意見回饋端點。請參閱「處理更新的地址」。
    4. 繼續輸入地址。
  2. 不需要修正:
    1. (選用) 將要求傳送至 API 的意見回饋端點。請參閱「處理更新的地址」。
    2. 繼續輸入地址。
接受地址

verdict 的回應表示地址可能沒有問題。例如 verdict.possibleNextActionACCEPT。請視風險程度考慮是否繼續使用該地址。

工作流程

繼續使用退回地址。

自訂驗證邏輯

您可以使用 verdict.possibleNextAction 欄位的結果,判斷系統如何處理 API 回應,但也可以考慮建立自訂邏輯,例如處理特定業務需求。

本節的目的,是說明如何自行開發邏輯,用於解讀 API 回應,以便判斷是否要向客戶提示,以及要如何提示。本節將說明風險等級和其他 API 回應信號,供您在自訂時參考。

不過,即使您只依據 verdict.possibleNextAction 來決定後續步驟,下方所述的其他信號仍可協助您瞭解地址可能發生的問題。

風險容忍度

設計系統如何回應 Address Validation API 的信號時,您可以參考下列建議,建立更有效的回應模型。不過,這些都只是建議,請記得導入方式應符合您的業務模式。

指引 詳細資料
風險等級

在要求使用者修正與接受輸入的地址之間取得平衡時,請考量您情況的容許值。

Address Validation API 會傳回各種信號,您可以將這些信號與風險等級結合,以最佳化驗證程序。

舉例來說,如果地址有未經確認的街道號碼,您仍可接受該地址。另一方面,如果您的業務運作需要更精確的地址,您可以向使用者提出提示。如需任一類別的示例,請參閱「接受地址 - 示例」中的「非美國未經確認的街道號碼」

接受地址

如果客戶沒有回應提示,建議您讓系統接受原始輸入內容。

在這種情況下,客戶可能輸入的地址不在系統中,例如新建建築物。

風險趨避結帳流程示例

如要降低無法送達的風險,您可以自訂邏輯,以便更頻繁地提醒客戶。舉例來說,您可以使用以下邏輯,而非使用「主要用途」一節所述的邏輯。

if (verdict.possibleNextAction == FIX or verdict.validationGranularity
== OTHER or verdict.validationGranularity == ROUTE)
  Prompt customer to fix their address.
else if (verdict.possibleNextAction == CONFIRM_ADD_SUBPREMISES)
  Prompt customer to add a unit number.
else if (verdict.possibleNextAction == CONFIRM or verdict.validationGranularity
== PREMISE_PROXIMITY or verdict.hasSpellCorrectedComponents or
verdict.hasReplacedComponents or verdict.hasInferredComponents)
  Prompt customer to confirm their address.
else
  Proceed with the returned address.

低摩擦結帳流程示例

如果您想減少結帳流程中的摩擦,可以自訂邏輯,減少向客戶顯示提示的頻率。舉例來說,您可以使用以下邏輯,而非使用「主要用途」一節所述的邏輯。

if (verdict.possibleNextAction == FIX)
  Prompt customer to fix their address.
else if (verdict.hasReplacedComponents)
  Prompt customer to confirm their address.
else
  Proceed with the returned address.

FIX 信號

如果結果明確指出地址可能無法送達,請修正該地址。系統接著可提示消費者提供必要資訊,之後您就能重新發出工作流程,取得可送達的地址。

除了 verdict.possibleNextAction 之外,您也可以使用下列 Address Validation API 回應欄位,判斷地址是否有重大問題,以及這些問題為何。

驗證精細程度 如果地址的驗證精細度為 OTHER,則地址很可能是不正確的。
缺少元件 如果 address.missingComponentTypes 不為空白,表示地址可能缺少重要資訊。
可疑元件 如果元件的確認層級列舉為 UNCONFIRMED_AND_SUSPICIOUS,則該元件很可能有誤。
未解析的元件 unresolvedToken 是輸入內容中系統無法辨識為有效地址的部分。
USPS DPV Confirmation 如果 uspsData.dpvConfirmationN 或空白,則地址可能有問題。這個欄位僅適用於美國地址。如要進一步瞭解 uspsData.dpvConfirmation,請參閱「處理美國地址」。

修正地址範例

CONFIRM_ADD_SUBPREMISES 信號 (僅限美國地址)

如果 Address Validation API 回應指出地址可能缺少子門牌,請提示客戶查看地址,並考慮新增單元號碼。在這種情況下,建築物的地址可能有效,但您想更確信產生的地址是客戶想要的地址。

除了 verdict.possibleNextAction 之外,您也可以使用 Address Validation API 回應的下列欄位,判斷地址是否可能缺少子門牌。

Missing subpremise component 如果 address.missingComponentTypes 欄位的值為 subpremise,表示地址缺少門牌號碼。
USPS DPV Confirmation 如果 uspsData.dpvConfirmationS,表示地址的主要號碼已與 USPS 資料庫中的地址相符。不過,地址也應包含次要號碼。這個欄位僅適用於美國地址。如要進一步瞭解 uspsData.dpvConfirmation,請參閱「處理美國地址」。

新增分支機構地址範例

「確認」信號

當判定結果指出 Address Validation API 已推斷或變更地址元件,以產生已驗證的地址時,您便可確認該地址。在這種情況下,您有可送達的地址,但希望更確信產生的地址是客戶想要的地址。

除了 verdict.possibleNextAction 之外,您也可以使用下列 Address Validation API 回應欄位,判斷地址是否有小問題,以及這些問題為何。

驗證精細程度 如果地址的 validationGranularityROUTEPREMISE_PROXIMITY,則該地址可能有誤。
推論資料 如果 hasInferredComponents 欄位為 true,表示 API 已填入從其他地址元件中擷取的資訊。
已取代的資料 如果 hasReplacedComponents 欄位為 true,API 會將輸入的資料替換為其認為可使地址有效的資料。
拼寫修正 hasSpellCorrectedComponents 欄位為 true 時,API 會修正部分拼錯的元件拼字。

確認地址範例

ACCEPT 信號

如果 Address Validation API 回應提供的資訊可讓您高度確信地址可送達,且在下游程序中無須進一步與客戶互動即可使用,您就可以接受該地址。

除了 verdict.possibleNextAction 之外,您也可以使用下列 Address Validation API 回應欄位,判斷地址是否符合要求。

驗證精細程度 validationGranularity 通常可接受 PREMISE,但 ROUTE 的值仍可能表示可送達的地址。
沒有推測資料 如果 hasInferredComponents 欄位為 false,表示系統未推斷輸出內容中的任何元件。
沒有取代資料 如果 hasReplacedComponents 欄位為 false,表示沒有任何輸入資料遭到取代。
不進行拼寫校正 如果 hasSpellCorrectedComponents 欄位為 false,表示系統並未進行拼字修正。
USPS DPV Confirmation 如果 uspsData.dpvConfirmationY,表示該地址已與 USPS 資料庫中的地址相符。這個欄位僅適用於美國地址。如要進一步瞭解 uspsData.dpvConfirmation,請參閱「處理美國地址」。

接受地址範例